GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Richten Sie eine einfache CI/CD-Pipeline mit Github und Jenkins auf einer AWS EC2-Linux-Instance ein

In diesem Artikel sehen wir die Schritte zum Implementieren einer einfachen CI/CD-Pipeline mit Jenkins. Wir werden einen Java-Beispielcode verwenden und diesen Code als .war-Datei auf dem Apache Tomcat-Webserver bereitstellen. Wir werden Maven als Build-Tool verwenden. Sie finden den Beispiel-Java-Code in meinem Github-Repository (Repo). Bevor wir fortfahren, machen wir uns mit den Grundlagen der Tools und Technologien vertraut, die wir beim Einrichten der CI/CD-Pipeline verwenden werden.

  1. EC2-Instanz: Die EC2-Instanz ist eine virtuelle Maschine (VM) in der AWS Cloud. Wir werden Apache Tomcat und Jenkins auf einer EC2-Instanz bereitstellen.
  2. Apache Tomcat: Apache Tomcat ist ein Open-Source-Web-Server. Wir werden unsere Beispiel-Java-Anwendung in Apache Tomcat als .war-Datei bereitstellen.
  3. Github: Github ist eine Code-Hosting-Plattform. Es ist im Grunde ein Versions-/Quellenkontroll-Verwaltungssystem. Wir werden unseren Beispiel-Java-Code auf Github veröffentlichen.
  4. Github-Webhook: Github Webhook wird zum Erstellen und Einrichten von Integrationen verwendet. Wir werden einen Webhook erstellen, der einen Jenkins-Job auslöst, wenn ein neuer Commit im Github-Repo stattfindet.
  5. Jenkins: Jenkins ist ein kostenloses Open-Source-Automatisierungstool. Wir werden einen Job auf Jenkins schreiben, der eine .war-Datei des Beispiel-Java-Anwendungscodes erstellt und auf dem Apache Tomcat-Server bereitstellt.
  6. Maven : Maven ist ein Build-Automatisierungstool, das hauptsächlich zum Erstellen von Java-Projekten verwendet wird.

Voraussetzungen

  1. AWS-Konto (erstellen, falls Sie noch keines haben)
  2. Grundlegendes Verständnis von Github.
  3. Grundlegendes Verständnis von Jenkins.
  4. Grundlegendes Verständnis von Linux Server und Befehlen

Was werden wir tun?

  1. Erstellen Sie eine EC2-Instanz
  2. Installieren Sie Java
  3. Installieren Sie Jenkins
  4. Apache Tomcat einrichten
  5. Verzweigen Sie mein Github-Repo
  6. Zugriff auf und Konfiguration von Jenkins
  7. Richten Sie einen Jenkins-Job für die .war-Bereitstellung ein
  8. Webhook im Github Repo einrichten
  9. Auto Build bei jedem Commit testen

Erstellen Sie eine VM oder eine EC2-Instanz

Um eine EC2-Instanz zu erstellen, können Sie sich auf das hier verfügbare Dokument beziehen.

Hier habe ich eine neue EC2-Instanz auf meinem AWS-Konto erstellt. Auf dieser Instanz ist das Betriebssystem Ubuntu 18 installiert.

Sie können sehen, dass die Instanz läuft. Ich werde diese Instanz verwenden, um Java oder die Abhängigkeiten sowie Apache Tomcat und Jenkins zu installieren.

Java installieren

Um Java auf Ihrem Ubuntu 18-System zu installieren, können Sie die folgenden Befehle verwenden. Mit dem folgenden Befehl wird Java 8 installiert. Nach der Installation können Sie sogar die Version überprüfen.

sudo apt-get update
sudo apt install openjdk-8-jdk
java -version

Jenkins installieren

Verwenden Sie die folgenden Befehle, um Jenkins auf Ihrer Instanz zu installieren.

sudo apt-get update
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/> /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

Sobald Sie Jenkins installiert haben, verwenden Sie den folgenden Befehl, um es zu starten und seinen Status zu überprüfen.


sudo systemctl start jenkins #Starte Jenkins
service jenkins status #Check Jenkins Status

Im folgenden Screenshot sehen Sie, dass der Jenkins-Dienst gestartet wurde. Dieser Jenkins-Dienst wurde auf Port 8080 gestartet.

Apache Tomcat einrichten

Installieren Sie Apache Tomcat

Bevor wir Apache Tomcat herunterladen und installieren, erstellen wir ein Verzeichnis, in das wir das Apache Tomcat-Paket herunterladen können.

Verwenden Sie die folgenden Befehle, um ein Verzeichnis in /opt

zu erstellen

cd /opt/
sudo mkdir Innovecture

Ändern Sie den Eigentümer des Verzeichnisses mit dem folgenden Befehl. Wir ändern den Besitz auf den Benutzer Ubuntu und die Gruppe Ubuntu, damit der Ubuntu-Benutzer den Apache Tomcat-Dienst starten kann und wir keine Root-, Benutzer- oder Sudo-Berechtigungen verwenden müssen.


sudo chown -R ubuntu:ubuntu Innovecture
cd Innovecture/

Laden Sie Apache Tomcat herunter und extrahieren Sie es mit den folgenden Befehlen. Wenn Sie eine andere Version von Apache Tomcat verwenden möchten, können Sie diese herunterladen und extrahieren.


wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.31/bin/apache-tomcat-9.0.31.tar.gz
tar -zxvf apache-tomcat-9.0 .31.tar.gz 
cd apache-tomcat-9.0.31/

Nehmen Sie die erforderlichen Konfigurationen in Apache Tomcat mit dem folgenden Befehl vor. Beziehen Sie sich auf die folgenden Screenshots für die Konfigurationen, die durchgeführt werden müssen. In den folgenden Konfigurationen weisen wir einen Benutzer und ein Passwort zu, mit denen Sie sich bei der Manager-Anwendung von Apache Tomcat anmelden können. Notieren Sie sich diesen Benutzernamen und das Passwort, da wir diese Anmeldeinformationen später benötigen.

Apache Tomcat konfigurieren

vim conf/tomcat-users.xml

Beziehen Sie sich auf den folgenden Screenshot und stellen Sie sicher, dass Ihre context.xml dieselbe Konfiguration hat.

vim webapps/manager/META-INF/context.xml

Ändern Sie in server.xml im conf-Verzeichnis den Port, auf dem Apache Tomcat läuft, d. h. Ändern Sie Port 8080 in 8090, da unser Jenkins-Dienst bereits auf Port 8080 ausgeführt wird.

vim conf/server.xml

Ändern Sie auch die localhost-Konfiguration in der Datei server.xml mit der IP des Servers, sodass auf Ihren Server über das Internet zugegriffen werden kann.

Starten Sie Apache Tomcat

Verwenden Sie den folgenden Befehl, um den Apache Tomcat-Dienst zu starten.

bin/startup.sh

Im folgenden Screenshot sehen Sie, dass der Apache Tomcat-Dienst auf Port 8090 läuft und auf Port 8080 der Jenkins-Dienst läuft. Verwenden Sie den folgenden Befehl, um Ihr System zu überprüfen.

netstat -tulpn 

Melden Sie sich bei der Tomcat Manager App an

Um zu sehen, ob wir uns mit den zuvor angegebenen Anmeldeinformationen bei der Verwaltungsanwendung von Apache Tomcat anmelden können, klicken Sie auf die URL von Apache Tomcat http://IP-of -Apache-Tomcat:8090/manager. Sie werden mit einem Anmeldebildschirm aufgefordert, geben Sie einfach den Benutzernamen „tomcat-manager“ und das Passwort ein, die wir in conf/tomcat-users.xml konfiguriert haben.

Sobald Sie sich erfolgreich angemeldet haben, sehen Sie den folgenden Bildschirm

Fork Github Repo

Sie können mein unten erwähntes Repo forken oder klonen. Dieses Repository enthält den Beispiel-Java-Code. Sie können entweder diesen Code verwenden oder, wenn Sie ein eigenes Repository haben, auch diesen verwenden.

URL des Repos: https://github.com/shivalkarrahul/Innovecture.git

Zugriff auf und Konfiguration von Jenkins 

Um auf Jenkins zuzugreifen, klicken Sie auf die URL http://IP-of-Jenkins:8080.

Folgen Sie den angezeigten Bildschirmen, um Jenkin zu entsperren und vorgeschlagene Plugins zu installieren

Sobald Sie Jenkin entsperren und die vorgeschlagenen Plugins installieren, sehen Sie den folgenden Bildschirm.

Sie müssen den Benutzernamen und das Passwort eingeben, die Sie konfigurieren müssen, und auf Speichern klicken und fortfahren.

Installieren Sie das Github-Authentifizierungs-Plugin ohne Neustart

Sobald Sie sich erfolgreich angemeldet haben, gehen Sie zu  Jenkins verwalten> Plugins verwalten. Unter Verfügbar tab Suchen Sie nach git . Wählen Sie das "GithubAuthentication"-Plug-in aus und klicken Sie auf "Ohne Neustart installieren.

Installieren Sie das Maven-Integrations-Plugin ohne Neustart

Installieren Sie auf die gleiche Weise das Maven-Integrations-Plug-in und installieren Sie es ohne Neustart

InstallierenBereitstellen im Container-Plugin ohne Neustart

Um das Deployment einer .war-Datei auf Apache Tomcat zu automatisieren, benötigen wir ein „Deploy to Container“-Plug-In. Installieren Sie das Plug-in „In Container bereitstellen“ auf die gleiche Weise, wie wir das Git- und das Maven-Plug-in installiert haben.



Richten Sie einen Jenkins-Job für die .war-Bereitstellung ein

Jetzt ist es an der Zeit, einen Freestyle-Job zu erstellen. Gehen Sie zum Haupt-Dashboard und klicken Sie auf Job erstellen. Wählen Sie den Freestyle-Job aus und fahren Sie fort.

Github-Repo auf der Registerkarte „Allgemein“ hinzufügen

Aktivieren Sie auf der Registerkarte „Allgemein“ das Kontrollkästchen „Github-Projekt“ und fügen Sie die URL Ihres Quellcode-Repositorys oder die URL des Repositorys hinzu, das Sie aus meinem Repository gegabelt haben.

Github-URL unter Quellcodeverwaltung hinzufügen

Klicken Sie auf der Registerkarte „Quellcodeverwaltung“ auf das Optionsfeld „Git“ und fügen Sie die Repository-URL wie unten gezeigt hinzu. Da mein Repository nicht privat und öffentlich ist, musste ich keine Anmeldeinformationen hinzufügen.

GithubHook-Trigger wählen

Wählen Sie „GitHub-Hook-Trigger für GitSCM-Polling“ auf der Registerkarte „Build-Trigger“ aus

Bauschritte hinzufügen

Klicken Sie unter der Build-Umgebung auf Build-Schritt hinzufügen und wählen Sie „Maven-Ziele der obersten Ebene aufrufen“

Für Ziele geben Sie "Clean" und "Pack" an und speichern Sie den Job.

Testaufbau

Um den Job zu testen, ob er in der Lage ist, unseren Code abzurufen und zu erstellen, klicken Sie auf Jetzt erstellen.

Bereitstellung hinzufügenPost-Build-Aktionen

Jetzt, da wir sicher sind, dass unser Code gezogen und erstellt wird, sind wir bereit, eine Post-Build-Aktion hinzuzufügen. Um eine Post-Build-Aktion hinzuzufügen, klicken Sie unter Build-Umgebung auf Post-Build-Aktion und wählen Sie „War in einem Container bereitstellen“ aus.

Fügen Sie dann die URL des Tomcat-Servers zusammen mit den Anmeldeinformationen hinzu. Um Zugangsdaten hinzuzufügen, klicken Sie auf „Hinzufügen“ und folgen Sie den angezeigten Schritten und speichern Sie den Job.

Manuellen Build testen

Testen Sie nun, ob unser Job in der Lage ist, den Code auf dem Apache Tomcat-Server abzurufen, zu erstellen und bereitzustellen. Klicken Sie auf Jetzt bauen, um unseren Job zu testen.

Wie Sie im obigen Screenshot sehen, war der manuelle Build erfolgreich und wurde auf dem Apache Tomcat-Server bereitgestellt.

Um zu testen, ob der Krieg wirklich eingesetzt wurde, klicken Sie auf Apache Tomcat http://IP-of-Apache-Tomcat:8090/manager um auf die Manager-Anwendung zuzugreifen.

Hier sehen Sie, dass die web_ex.war Die Datei wurde erfolgreich auf dem Apache Tomcat-Server bereitgestellt.

Testen Sie Beispiel-Java Bewerbung

Um zu testen, ob die Java-Anwendung ausgeführt wird, klicken Sie auf die URL http://IP-of-Apache-Tomcat:8090/web_ex .

Webhook auf dem Github-Repo einrichten

Erstelle einen Webhook

Um ein Babybuch zu erstellen, besuchen Sie ihre Website, melden Sie sich bei Ihrem Konto an und folgen Sie den unten aufgeführten Schritten.

Gehen Sie zu den Einstellungen Ihres Repos, klicken Sie im linken Bereich auf Webhooks und dann auf "Webhook hinzufügen"

In der Payload-URL fügen Sie http://Jenkins-URL:8080/github-webhook.

hinzu

Sie können die Ereignisse auswählen, die Sie diesen Webhook auslösen möchten, oder Sie können "Alles senden" auswählen, wenn Sie den Jenkins-Job bei jedem Ereignis auslösen möchten, klicken Sie auf "Aktualisieren". Webhook zum Speichern.

Auto Build on Commit testen

Jetzt sind wir bereit, unseren Auto-Build-Job zu testen.

Um zu testen, ob unser Jenkins-Job bei jedem Commit den Code aus unserem Github-Repo zieht, verwenden Sie die folgenden Befehle.

Um das Repo lokal zu klonen, habe ich den folgenden Befehl verwendet. Wenn Sie einen eigenen Bericht haben, gehen Sie einfach auf Ihr lokales System.

Git-Klon https://github.com/shivalkarrahul/Innovecture.git
cd Innovecture/

Nehmen Sie einige Änderungen am Repository vor, damit wir sie übertragen können. Hier habe ich lokal eine neue Datei hinzugefügt, die ich in mein Remote-Repository schieben werde

Berühren Sie README.md

Um den Benutzernamen und die E-Mail-ID für Git zu konfigurieren, verwenden Sie die folgenden Befehle.

git config user.name „Rahul Shivalkar“
git config user.email „[email protected]“

Um Ihre Änderungen zu übernehmen und zu pushen, verwenden Sie die folgenden to-Befehle

git commit -m "Test-Commit"
git push

Sobald wir unsere Änderungen in das Repository auf Github übertragen, wird unser Jenkins-Job ausgelöst, den wir im Github-Webhook hinzugefügt haben.

Sie können dies unter "Polling Log" des Jobs sehen, siehe dazu den folgenden Screenshot.

Wenn Sie zur Konsolenausgabe des Jobs gehen, können Sie sehen, dass der Job erfolgreich ausgeführt und der Krieg auf Apache Tomcat bereitgestellt wurde.

Erneut testen

Ändern Sie jetzt den Code, um zu testen, ob der neueste Code bereitgestellt wird oder nicht. Ich werde die Nachricht ändern, die im Browser angezeigt wird.

Wenn Sie Ihren eigenen Bericht verwenden, nehmen Sie die erforderlichen Änderungen in Ihrem Code vor. Hier ändere ich nur eine index.jsp-Beispieldatei, die die Nachricht im Browser ausgibt.

vim src/main/webapp/index.jsp

Sehen wir nun, ob der geänderte Code übernommen wird oder nicht.

Übernehmen Sie die Änderungen, die Sie an Ihrem Code vorgenommen haben, mit den folgenden Befehlen.

git add src/main/webapp/index.jsp
git commit -m "Code geändert in Hello World New!"
git push

Klicken Sie auf die Apache-Tomcat-URL http://IP-of-Apache-Tomcat:8090/web_ex um auf unsere Beispielanwendung zuzugreifen.

Sie können sehen, dass der neueste Code auf Apache Tomcat erstellt und bereitgestellt wurde, was bedeutet, dass die Anwendung erfolgreich bereitgestellt und die Pipeline auch erfolgreich ausgelöst wurde.

Wenn Sie bemerkt haben, dass mein vorheriger Code nur "Hello World!" und wenn ich jetzt Änderungen an meiner index.jsp vorgenommen und sie festgeschrieben habe, zeigt die neueste Anwendung "Hello World New!".

Schlussfolgerung

In diesem Artikel haben wir die Schritte zum Erstellen einer einfachen CI/CD-Pipeline gesehen, die Ihren Code aus dem Github-Repository abrufen und bei jedem Commit auf dem Apache Tomcat-Server bereitstellen kann. Wir haben auch die Schritte zur Installation von Jenkins, Apache Tomcat, Java, Plug-ins in Jenkins gesehen.


Linux
  1. Bringen Sie podman unter Windows mit Linux zum Laufen

  2. So erstellen und fügen Sie ein EBS-Volume in einer AWS-Instanz (EC2) hinzu

  3. So starten Sie eine AWS EC2-Instanz mit Terraform

  4. Erstellen Sie mit Terraform eine EC2-Instance auf AWS

  5. Verwenden von kbhit() und getch() unter Linux

CI/CD-Sicherheit – So sichern Sie Ihre CI/CD-Pipeline

Installieren und Konfigurieren von Jenkins unter Linux

So installieren Sie Rocky Linux 8 auf einer Amazon AWS Ec2-Instanz

Richten Sie den CI/CD-Workflow mit GitHub-Aktionen ein

So installieren Sie Jenkins CI/CD unter Ubuntu Linux

So richten Sie einen Linux-VPN-Server und -Client mit OpenVPN ein