Wie man Jenkins auf CentOS installiert und mit GitHub verbindet

Jenkins bietet weit verbreitete Open-Source-CI/CD-Tools an. In diesem Artikel erfahren wir, wie man Jenkins installiert und mit Github für das Senden von Dateien an den Server per SSH konfiguriert.

Jenkins Installation:

Jenkins ist eine JAVA-basierte Anwendung, daher müssen wir zuerst JAVA installieren. Der folgende Befehl installiert JAVA auf centos 7.

sudo yum install java-1.8.0-openjdk-devel

Java-Version überprüfen

[[email protected] ~]# java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)

Konfigurieren Sie nun das Jenkins Repository mit den folgenden Befehlen.

curl --silent --location http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo | sudo tee /etc/yum.repos.d/jenkins.repo

Dies zeigt die folgenden Ausgaben.

[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat-stable
gpgcheck=1

Führen Sie dann den folgenden Befehl aus, um den Jenkins-Schlüssel hinzuzufügen.

sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key

Jetzt haben wir das Jenkins Repository konfiguriert und sind bereit, Jenkins mit folgenden einfachen Befehlen zu installieren.

sudo yum install jenkins

Überprüfen Sie nach Abschluss der Installation den Jenkins-Service und aktivieren Sie ihn beim Neustart des Systems.

sudo systemctl start Jenkins
sudo systemctl enable jenkins

Starten Sie nun das System neu und stellen Sie sicher, dass der jenkins-Dienst läuft, indem Sie den folgenden Befehl verwenden.

sudo systemctl enable jenkins

Lassen Sie jetzt Jenkins in der Firewall zu.

firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload

Konfigurieren Sie die Einstellungen:

Wir können Jenkins nicht direkt verwenden, wir müssen den Domänennamen oder die IP-Adresse im Webbrowser eingeben, gefolgt von der Jenkins-Standardportnummer 8080.

Jenkins freischalten

Im obigen Screenshot müssen wir das von Jenkins automatisch generierte Passwort einmal eingeben. Führen Sie den folgenden Befehl aus, um ein Passwort zu erhalten.

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Dies wird eine Ausgabe wie 2179c452db3b45f98cf9e4c4961ab635 ergeben.

Nach dem Passwort müssen wir Plugins auf dem Jenkins-System installieren. Wählen Sie dazu einfach installiertes vorgeschlagenes Plugin aus, um alle Standard-Plugins zu installieren.

Admin-Benutzer anlegen

Füllen Sie alle Angaben aus und klicken Sie auf Speichern und weiter.

Jetzt wird nach der Instanzkonfiguration gefragt, wo wir auch die Standardportnummer ändern können.

Jenkins-Instanz konfigurieren

Jetzt ist unser Jenkins sicher und einsatzbereit.

Jenkins ist bereit.

Herzlichen Glückwunsch, das neue Jenkins-Setup ist erfolgreich abgeschlossen und einsatzbereit.

Der folgende Screenshot zeigt das Standard-Dashboard für Jenkins.

Jenkins Dashboard

Jenkins Konfiguration:

Plugins installieren:

Bevor wir zu den nächsten Schritten übergehen, stellen Sie sicher, dass Sie die folgenden Plugins installieren.

Gehen Sie zu Jenkins verwalten -> Plugin verwalten -> Verfügbar -> Filter -> suchen Sie nach dem folgenden Plugin, das für die Integration mit GitHub benötigt wird.

Veröffentlichen über SSH
Git
GitHub-Plugin
Git-Client-Plugin

Hier musste das Publish Over SSH-Plugin unsere Dateien über SSH auf den Server schieben.

Anmeldeinformationen hinzufügen:

Wir müssen in Jenkins Server-Zugangsdaten hinzufügen.

Gehen Sie zu Jenkins Dashboard ? Zugangsdaten ? System ?Global Zugangsdaten (uneingeschränkt) ? Zugangsdaten hinzufügen

Anmeldeinformationen hinzufügen

Wir können die Art der Zugangsdaten auswählen, die wir installieren möchten. Hier fügen wir GitHub-Benutzername und -Passwort für die spätere Verwendung hinzu.

GitHub-Anmeldeinformationen eingeben

ssh auf Jenkins Server.

Jenkins kann eine Verbindung zu einem entfernten Server über ssh herstellen und Skripte ausführen, Befehle ausführen oder Dateien von einem Server auf einen anderen Server kopieren.

Zu diesem Zweck müssen wir eine ssh-Verbindung zwischen Jenkins Server & Remote Server herstellen.

Nächster Schritt fügt SSH-Zugangsdaten auf Jenkins hinzu, die wir mit dem Jenkins-Server verbinden wollen.

Wir wollen uns mit einem Webserver von Jenkins mit dem Benutzer root verbinden. Unser Webserver ist zum Beispiel 138.197.151.144 und der Benutzer root, also müssen wir uns mit ssh auf diesem Server einloggen.

ssh [email protected]

Gehen Sie nun in das Home-Verzeichnis und cd in den Ordner .ssh.

cd ~/.ssh

Der nächste Schritt wird sein, einen privaten und öffentlichen Schlüssel für den Benutzer root auf unserem Webserver zu generieren.

ssh-keygen -t rsa -f private_key_for_jenkins

Nachdem der obige Befehl ausgeführt wurde, wird er nach „Enter passphrase“ fragen, wir brauchen die Passphrase nicht einzugeben. Klicken Sie also zweimal auf Enter und es werden zwei Schlüssel auf dem Webserver private_key_for_jenkins und private_key_for_jenkins.pub generiert.

Hier ist private_key_for_jenkins der private Schlüssel von 138.197.151.144 und wir müssen den Inhalt dieser Datei in unseren Jenkins-Server einspielen.

Wir haben die zweite Datei namens private_key_for_jenkins.pub, die der öffentliche Schlüssel des Webservers ist. Wir müssen seine Daten in eine andere Datei namens authorized_keys kopieren, die sich im selben Verzeichnis befindet.

In den meisten Fällen sind die authorized_keys-Dateien im Ordner ~/.ssh/ vorhanden, aber manchmal fehlt sie und wir müssen neue authorized_keys-Dateien generieren. Führen Sie einfach den folgenden Befehl aus, um ihn auf authorized_keys zu kopieren, dieser Befehl erzeugt auch neue authorized_keys, wenn er verfügbar ist.

cat private_key_for_jenkins.pub > authorized_keys

Melden Sie sich jetzt am Jenkins-Server an und gehen Sie dann zu Jenkins verwalten -> Systeme konfigurieren

Eine Alternative können wir direkt im Webbrowser http://ip_address:8080/configure schreiben, dies öffnet Configure Systems für ssh-Konfigurationen.

Nun suchen Sie nach dem Abschnitt SSH Server Server in „Jenkins konfigurieren“. Bitte beachten Sie, dass dieser Abschnitt nur verfügbar ist, wenn wir das ‚SSH Credential Plugin‘ auf dem Jenkins Server installiert haben.

Gehen Sie zum Abschnitt Veröffentlichen über SSH, gehen Sie zum Schlüssel und fügen Sie den Inhalt von private_key_for_jenkins ein

Klicken Sie nun in der Option SSH Server auf die Schaltfläche Hinzufügen und geben Sie die SSH Server Details ein. Wir können den ssh-Port und andere Einstellungen über die Option Advanced ändern.

SSH Server Details

Nachdem Sie die Änderungen vorgenommen haben, klicken Sie auf ‚Test Configuration‘ und wir sollten eine Erfolgsmeldung wie im obigen Screenshot erhalten, wenn alle Einstellungen korrekt sind.

Bitte beachten Sie, dass wir mehrere Server hinzufügen können, wie es unsere Anforderung für die Veröffentlichung des gleichen Codes auf mehreren Servern mit ssh ist.

Dazu müssen wir, wie bereits erwähnt, den privaten Schlüssel für jeden Server generieren und den privaten Schlüssel zum Jenkins-Server hinzufügen.

Zum Schluss klicken Sie auf die Schaltfläche ‚Speichern‘ und speichern unsere Änderungen. Wir haben erfolgreich eine ssh-Verbindung zu einem entfernten Server aufgebaut. Jetzt können wir die Datei an einen entfernten Server senden und auch jeden Befehl oder jedes Skript auf diesem Server ausführen.

Jenkins Konfiguration mit Github

Für die Automatisierung von Builds, die durch PUSH- und PULL-Anforderungen ausgelöst werden, muss ein Jenkins WebHook zu jedem GitHub-Repository oder den Webhooks der Organisation hinzugefügt werden.

Schritte zur Konfiguration von Webhook aus dem Github-Repository.

1. Melden Sie sich bei Ihren GitHub-Konten an

2. Klicken Sie auf das Repository, auf dem wir den Webhook einstellen müssen

3. gehen Sie zu den Einstellungen für dieses Repository

4. Klicken Sie auf Webhooks und fügen Sie die Payload-URL hinzu, es sieht so aus http://jenkins_ip:8080/github-webhook/

5. Wählen Sie „application/json“ als Kodierungstyp aus dem Bereich Content type

6. Lassen Sie „Secret“ leer (es sei denn, es wurde ein Geheimnis erstellt und in der Jenkins „Configure System -> GitHub plugin“ Sektion konfiguriert)

7. Wählen Sie „Einzelne Ereignisse auswählen“.

8. PUSH- und Pull-Request-Ereignis aktivieren

9. Stellen Sie sicher, dass „Aktiv“ angekreuzt ist

10. Klicken Sie schließlich auf die Schaltfläche „Webhook hinzufügen“.

Sehen Sie sich den untenstehenden Screenshot für Details an.

Add Webhook

Webhook-Einstellungen

Jenkins erhält nun Push und Pull-Benachrichtigungen für dieses Repository und verwandte Builds werden automatisch ausgelöst.

Erstellen des ersten Jobs auf Jenkins

Gehen Sie nun zu unserem Jenkins-Dashboard, wählen Sie New Item und geben Sie einen Item-Namen ein, wählen Sie Freestyle Project.

Job in Jenkins hinzufügen

Nach einem Klick auf ok werden Sie zum Konfigurationsabschnitt weitergeleitet.

Wir befinden uns gerade auf der allgemeinen Registerkarte, wie im unteren Screenshot gezeigt. In der Regel geben Sie die Beschreibung des Projekts ein und klicken Sie auf Github Projekt, Hier geben Sie unsere GitHub URL für das Projekt ein.

Allgemeine Einstellungen

Gehen Sie nun in die Quellcodeverwaltung, klicken Sie auf Git und geben Sie unsere Repository-URL ein, aus der wir die Codes entnehmen wollen.

Wir fügen bereits GitHub-Berechtigungsnachweise hinzu, klicken auf das Drop-Down-Menü und wählen GitHub-Benutzername und -Passwort aus.

Als nächstes gehen Sie zu Zweige zu bauen und wählen */Master Branch, wir können jeden Zweig gemäß unseren Projektanforderungen hinzufügen.

Quellcode-Verwaltung

Jetzt gehe zum Reiter Build Trigger und wähle die Option Github hook trigger for GITScm polling, Dies wird automatisch
erstellt, sobald wir Änderungen am GitHub-Repository vornehmen.

Build-Trigger

Gehen Sie nun zur Bauumgebung und wählen Sie Dateien senden oder Befehle über SSH ausführen, nachdem der Bau ausgeführt wurde.

Dadurch werden Dateien nach dem Bauen an einen entfernten Server gesendet.

Gehe zu SSH Publishers –> SSH Server –> wähle den Servernamen aus dem Drop-Down-Menü

Hier können wir auch den Advanced-Parameter einstellen, aber derzeit gehen wir mit den Grundeinstellungen.

Nun müssen wir noch hinzufügen, welche Art von Datei wir über ssh kopieren wollen. Hier wählen wir alle Ordner und Dateien unseres GitHub-Repositorys aus. Für das Hinzufügen von Dateien und die Auswahl von Ordnern fügen Sie einfach **/* in den Quelldateien hinzu.

Auf ähnliche Weise können wir jeden beliebigen Befehl in der Textbox Exec Command geben, der auf unserem entfernten Server ausgeführt wird.

Dann geben Sie das Remote-Verzeichnis an, in das wir unsere Dateien kopieren müssen. Dies ist eine optionale Option.

SSH-Publisher –> Übertragungen –> Übertragungen einstellen –> Quelldateien –> **/* hinzufügen

SSH-Publisher –> Übertragungen –> Übertragungen einstellen –> Entferntes Verzeichnis –> /jenkins-test

SSH-Publisher –> Übertragungen –> Übertragungen einstellen –> Befehl ausführen –> Befehl

Umgebung bauen

Standardmäßig schließt Jenkins bestimmte Dateien wie .git .svn .gitignore etc. aus. Hier wollen wir alle Dateien auf den entfernten Server kopieren. Klicken Sie dazu auf den Button Erweitert direkt unter dem Befehl Ausführen und aktivieren Sie die Option „Keine Standardausschlüsse“.

Einstellungen der Umgebung

Das war’s, wir haben viele Optionen in den Post-Build Actions, die wir je nach Projektbedarf nutzen können.

Build-Test

Es ist Zeit, unsere Konfiguration zu testen.

Gehen Sie zum Jenkins-Dashboard und klicken Sie dann auf unser Projekt Jenkins-Test.

Build-Test

Dann klicken Sie auf die Option „Build Now“ für den Build. Wenn der Build-Prozess fehlgeschlagen ist, wird die Build-Versionsnummer mit einem gelben Symbol angezeigt.

Lassen Sie uns unseren Build-Prozess überprüfen, klicken Sie einfach auf die Build-Nummer, wie im Screenshot gezeigt.

GitHub Jenkins Integration erfolgreich getestet

Klicken Sie nun auf Console Output. Hier können wir jeden Prozess im ausführlichen Modus sehen.

Endlich werden wir „Fertig“ sehen: SUCCESS“-Zeile am Ende der Konsolenausgabe.

Herzlichen Glückwunsch! Unsere Jenkins wurden erfolgreich in GitHub integriert und sind nun einsatzbereit.

Das könnte Dich auch interessieren …