So erstellen Sie eine kontinuierliche Integrationsumgebung mit Jenkins+Maven+Git auf CentOS7

So erstellen Sie eine kontinuierliche Integrationsumgebung mit Jenkins+Maven+Git auf CentOS7

Dieser Artikel verwendet die Bereitstellung eines Spring Boot + Maven-Projekts als Beispiel, verwendet Code Cloud als Code-Hosting-Repository und erstellt eine Jenkins-Umgebung für kontinuierliche Integration auf CentOS 7.

1. Vorbereitung

1.1 Java-Umgebung installieren

Jenkins ist ein auf Java basierendes Tool zur kontinuierlichen Integration und muss in einer Java-Umgebung ausgeführt werden. Mit dem folgenden Befehl können Sie überprüfen, ob Java auf Ihrem System installiert ist:

Yum-Liste installiert | grep jdk

Wenn nicht, verwenden Sie den Suchbefehl „yum“, um die OpenJDK-Version zu finden, und wählen Sie das entsprechende JDK zur Installation aus:

yum-Suche OpenJDK 
yum -y installiere java-1.8.0-openjdk-devel

Überprüfen Sie, ob Java erfolgreich installiert wurde:

Java-Version

1.2 Maven installieren

Führen Sie die folgenden beiden Befehle nacheinander aus:

wget http://repos.fedorapeople.org... -O /etc/yum.repos.d/epel-apache-maven.repo 
yum -y installiere Apache-Maven

Überprüfen Sie, ob Maven erfolgreich installiert wurde:

mvn -v

1.3 Git installieren

Installieren Sie direkt über yum. Überprüfen Sie nach Abschluss der Installation die Version, um sicherzustellen, dass die Installation erfolgreich war:

yum -y installiere git 
git --version

2. Installieren und konfigurieren Sie Jenkins:

2.1 Jenkins installieren

Führen Sie die folgenden drei Befehle nacheinander aus:

sudo wget https://pkg.jenkins.io/redhat... -O /etc/yum.repos.d/jenkins.repo 
sudo rpm --import https://pkg.jenkins.io/redhat... 
yum -y installiere Jenkins

Wenn zuvor ein Schlüssel aus Jenkins importiert wurde, schlägt rpm --import fehl, da bereits ein Schlüssel vorhanden ist. Ignorieren Sie es und fahren Sie mit der Installation fort.

2.2 Starten Sie Jenkins

Starten Sie Jenkins und stellen Sie es so ein, dass es beim Booten automatisch startet:

systemctl starte jenkins.service 
chkconfig jenkins auf

Jenkins verwendet standardmäßig Port 8080. Sie können die Jenkins-Weboberfläche unter folgendem Link aufrufen:

http://<Serveradresse>:8080

Wenn Sie nicht darauf zugreifen können, prüfen Sie die Firewall, ob Ports offen sind, oder prüfen Sie mit dem Befehl netstat -ntulp, ob der Port belegt ist.

2.3 Geben Sie Jenkins ein

Wenn Sie Jenkins zum ersten Mal aufrufen, müssen Sie das Administratorkennwort eingeben. Verwenden Sie den folgenden Befehl, um das anfängliche Kennwort anzuzeigen:

cat /var/lib/jenkins/secrets/initialAdminPassword

Wählen Sie die standardmäßig install suggested plugins aus, um das Plugin zu installieren. Folgen Sie nach Abschluss der Installation den Schritten zum Erstellen eines Benutzers. Nach Abschluss der Erstellung können Sie sich anmelden.

2.4 Jenkins konfigurieren

Gehen Sie zu Manage Jenkins -> Global Tool Configuration und konfigurieren Sie nacheinander die JDK-, Git- und Maven-Pfade.

2.4.1 Überprüfen Sie den JDK-Pfad

Die mit yum installierte Software hilft uns nicht bei der Konfiguration von Umgebungsvariablen. Sie können den Pfad nicht direkt mit dem Befehl echo $JAVA_HOME anzeigen.

Überprüfen Sie zunächst den Pfad mit dem folgenden Befehl:

welches java

Das angezeigte Ergebnis ist /usr/bin/java, aber tatsächlich ist dies nur ein Softlink und nicht das eigentliche Verzeichnis, in dem sich JDK befindet.

Verwenden Sie zum Anzeigen weiterhin den folgenden Befehl:

ls -l /usr/bin/java

Wir sehen, dass /usr/bin/java auf /etc/alternatives/java verweist. Leider ist dies nicht der tatsächliche Pfad, den wir suchen.

Weiter verfolgen:

ls -l /etc/alternatives/java

Das Ergebnis zeigt auf /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/bin/java . Die Verzeichnisnamen verschiedener JDK-Versionen können leicht unterschiedlich sein. Hier befindet sich das JDK tatsächlich.

Auf ähnliche Weise können Sie den Pfad ermitteln, unter dem sich Maven befindet.

2.4.2 Plugins installieren und konfigurieren

Gehen Sie zu Manage Jenkins -> Manage Plugins , suchen Sie nach Publish Over SSH und Maven Integration und installieren Sie sie. Das Plugin Git Plugins ist bereits standardmäßig installiert, daher müssen wir es nicht erneut installieren.

Konfigurieren Sie die SSH-Anmeldung ohne Passwort

Bevor wir das Plugin konfigurieren, generieren wir ein Schlüsselpaar auf dem Jenkins-Server. Führen Sie den folgenden Befehl aus, um zum Jenkins-Benutzer zu wechseln:

sudo su jenkins

Wenn Sie nicht wechseln können, öffnen Sie die Datei /etc/passwd, suchen Sie die Zeile für Jenkins und ändern Sie /bin/fasle in /bin/bash.

Nach erfolgreichem Wechsel lautet der Benutzername der Eingabeaufforderung möglicherweise bash-4.2$. Wenn Sie den Benutzernamen normal anzeigen möchten, wechseln Sie zurück zum Root-Benutzer und führen Sie die folgenden Schritte aus:

Bearbeiten Sie die Datei vi ~/.bash_profile
Fügen Sie die Anweisung export PS1='[u@h W]&dollar;' hinzu
Tritt sofort in Kraft Quelle ~/.bash_profile

Wechseln Sie dann zum Jenkins-Benutzer und es wird normal angezeigt. Führen Sie als Nächstes den folgenden Befehl aus, um ein Schlüsselpaar zu generieren:

ssh-keygen -t rsa

Drücken Sie zum Abschluss die Eingabetaste vollständig. Anschließend werden im Verzeichnis /var/lib/jenkins/.ssh/ zwei Dateien, id_rsa und id_rsa.pub, generiert.

Hängen Sie den Inhalt der Datei id_rsa.pub an das Ende der Datei /root/.ssh/authorized_keys auf dem Anwendungsserver an, einen Schlüssel pro Zeile. Beachten Sie, dass es sich um den Anwendungsserver handelt. Starten Sie den SSH-Dienst auf dem Anwendungsserver neu:

systemctl starte sshd.service neu

Jetzt kann sich Jenkins ohne Passwort beim Anwendungsserver anmelden. Testen Sie es, indem Sie den Befehl als Jenkins-Benutzer ausführen:

ssh root@<Anwendungsserveradresse>

Bei der ersten Verbindung erfolgt eine Bestätigungsaufforderung. Geben Sie einfach „Ja“ ein. Dieser Schritt ist sehr wichtig. Wenn beim ersten Mal keine manuelle Verbindungsbestätigung erfolgt, kann Jenkins keine Verbindung herstellen.

Konfigurieren des Public over SSH-Plugins

Gehen Sie zu Manage Jenkins -> Configure System und füllen Sie Publish over SSH aus.

Pfad zum Schlüssel: Geben Sie den Pfad der gerade generierten id_rsa-Schlüsseldatei ein.
Name: Dienstname, nach Belieben eintragen.
Hostname: Die IP-Adresse oder der Domänenname des Anwendungsservers.
Benutzername: Benutzeridentität für die Anmeldung beim Anwendungsserver.
Remote-Verzeichnis: Das Remote-Verzeichnis ist das Verzeichnis, in dem die Anwendung auf dem Anwendungsserver gespeichert ist. Jenkins kopiert die Anwendung in dieses Verzeichnis. Bitte stellen Sie sicher, dass dieses Verzeichnis existiert.

speichern~

3. Maven-Projekt bereitstellen

Klicken Sie auf „Neues Element“, um eine neue Aufgabe zu erstellen, geben Sie einen Aufgabennamen ein, wählen Sie „Maven-Projekt“ aus und klicken Sie auf „OK“.

Aktivieren Sie unter „Allgemein“ die Option „Alte Builds verwerfen“ und legen Sie die maximale Anzahl von Tagen und die maximale Anzahl der beizubehaltenden Build-Dateien fest. Andernfalls werden die von jedem Build generierten Dateien beibehalten und belegen Speicherplatz.

Konfigurieren Sie die Adresse des Remote-Code-Repositorys, aus dem Jenkins den Code abruft. Beachten Sie, dass, wenn das Lesen des Repositorys in der Eingabeaufforderung fehlschlägt, dies folgende Ursache haben kann:

  • Der öffentliche Schlüssel wird nicht zur Datei authorized_keys des Remote-Codeservers hinzugefügt. Die obige Konfiguration ohne SSH-Anmeldung dient dazu, dass Jenkins auf den Anwendungsserver zugreift. Jenkins‘ Zugriff auf den Codeserver muss ebenfalls konfiguriert werden, es sei denn, der Anwendungsserver und der Codeserver sind dieselbe Maschine. Wenn Sie eine Code-Hosting-Plattform wie Code Cloud oder GitHub verwenden, gibt es eine entsprechende Seite mit SSH-Schlüsseleinstellungen.
  • Der öffentliche Schlüssel wurde den entsprechenden Dateien hinzugefügt, jedoch nicht erstmals manuell verknüpft. Die Lösung ist ganz einfach. Klonen Sie das Repository einmal manuell als Jenkins-Benutzer und bestätigen Sie mit „Ja“.

Aktivieren Sie Add timestamps to the Console Output .

Füllen Sie die Maven-Verpackungsanweisungen aus. -DMaven.test.skip=true bedeutet, dass der Test übersprungen wird.

Aktivieren Sie Run only if build succeeds und wählen Sie Send files or execute commands over SSH aus.

Der nächste Schritt besteht darin, das JAR-Paket vom Jenkins-Server auf den Anwendungsserver zu kopieren und es nach dem Einrichten des Builds auszuführen.

Name: Wählen Sie den Dienst aus, den Sie zuvor erstellt haben.
Quelldateien: JAR-Dateien, die nach der Maven-Verpackung generiert werden, d. h. die Programme, die zum Ausführen auf den Anwendungsserver kopiert werden sollen. Sie können mehrere Dateien eingeben, getrennt durch Kommas.
Präfix entfernen: Ignorieren Sie das Präfix. Wir müssen nur das JAR-Paket unter das Ziel kopieren und müssen kein Zielverzeichnis auf dem Anwendungsserver generieren.
Remote-Verzeichnis: Der Zielordner übernimmt die globalen Einstellungen. Beispielsweise wird das JAR-Paket in das Verzeichnis /usr/local/app/demo kopiert.
Exec-Befehl: Der Befehl oder das Skript, das auf dem Anwendungsserver ausgeführt wird, nachdem der Kopiervorgang abgeschlossen ist.

save -> build now erstellen. Öffnen Sie nach erfolgreichem Erstellen den Browser, um Ihre Site zu besuchen.

4. Fazit

Tatsächlich ist der gesamte Prozess nicht sehr kompliziert. Jenkins zieht Code aus der Remote-Codebibliothek -> ruft Maven-Anweisungen auf, um das Projekt zu packen -> Jenkins kopiert die gepackten Dateien auf den Remote-Anwendungsserver -> führt Shell-Anweisungen auf dem Remote-Anwendungsserver aus, um das Programm zu starten. Beide Remote-Operationen von Jenkins wurden über SSH abgeschlossen.
Es ist praktisch, Jenkins und Java über yum zu installieren, aber die Konfiguration ist relativ mühsam. Sie müssen den Installationspfad selbst finden. Beim Konfigurieren von SSH müssen Sie außerdem die Jenkins-Benutzeridentität anstelle von root verwenden. Wenn Sie die Paketentpackungsmethode verwenden, haben Sie mehr Freiheit.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Implementierung der kontinuierlichen Integration von Jenkins+Maven

<<:  Detaillierte Erklärung der MySQL-Gruppensortierung, um die Top N zu finden

>>:  Detailliertes Tutorial zur Installation von MySQL auf CentOS 6.9

Artikel empfehlen

Der praktische Prozess des Login-Status-Managements im vuex-Projekt

Inhaltsverzeichnis Werkzeug: Anmeldeszenario: übe...

Was Sie über MySQL-Sperren wissen müssen

1. Einleitung MySQL-Sperren können je nach Umfang...

Lernen Sie Node.js von Grund auf

Inhaltsverzeichnis URL-Modul 1.Parse-Methode 2. F...

So zeichnen Sie eine vertikale Linie zwischen zwei Div-Tags in HTML

Als ich kürzlich eine Schnittstelle zeichnete, st...

Implementierungscode für die HTML-Drag & Drop-Funktion

Basierend auf Vue Die Kernidee dieser Funktion be...

Unterschiede und Vergleiche von Speicher-Engines in MySQL

MyISAM-Speicher-Engine MyISAM basiert auf der ISA...

Grundlegende Verwendung der JS-Datumssteuerung My97DatePicker

My97DatePicker ist ein sehr flexibles und benutze...