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

Mysql implementiert drei Funktionen zum Feldspleißen

Beim Exportieren von Daten in Operationen ist das...

Verwendung der MySQL-Anweisung „truncate table“

Mit der Anweisung „Truncate table“ werden alle Da...

Allgemeine Befehle zum Bereitstellen von InfluxDB und Mongo mit Docker

Bereitstellen einer Datenbank basierend auf Docke...

Detaillierter Vue-Code zur Implementierung der Shuttle-Box-Funktion

Vue - Implementierung der Shuttle-Box-Funktion. D...

Zusammenfassung der Ausführungsprobleme zwischen MySQL Max und Where

Ausführungsproblem zwischen MySQL Max und Where S...

Vue implementiert eine Wettervorhersagefunktion

In diesem Artikel wird der spezifische Code von V...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.11 (Win10)

In diesem Artikel werden die Installations- und K...

Vue implementiert das Ziehen und Sortieren von Bildern

In diesem Artikelbeispiel wird der spezifische Co...

Zabbix benutzerdefinierte Überwachung Nginx Status Implementierungsprozess

Inhaltsverzeichnis Zabbix benutzerdefinierte Über...

So legen Sie ein Kennwort für MySQL Version 5.6 auf dem Mac fest

MySQL kann bei der Installation festgelegt werden...

Eine kurze Analyse der Zählverfolgung einer Anfrage in nginx

Lassen Sie mich zunächst die Anwendungsmethode er...