Jenkins auf Ubuntu 22.04 LTS installieren und einige Administrationsaufgaben

Übersicht
Jenkins ist eine äußerst beliebte Open-Source-Webanwendung, die entwickelt wurde, um den Softwareentwicklungsprozess zu rationalisieren und zu automatisieren. Es ist ein Eckpfeiler für Continuous Integration (CI) und Continuous Delivery (CD)-Pipelines und ermöglicht es Entwicklern und DevOps-Teams, Anwendungen effizient zu erstellen, zu testen und bereitzustellen.
Jenkins installieren
Es gibt viele Methoden, um Jenkins in Ubuntu zu installieren. Bevor wir jedoch mit der Installation von Jenkins beginnen, müssen wir bereits die Java JRE (Java Runtime Environment) installiert haben. OpenJDK ist eine Open-Source-Implementierung der Java-Plattform. Es bietet die Kernkomponenten, die zum Ausführen von Java-Anwendungen erforderlich sind.
Wir werden mit der Ubuntu-22.04-Version arbeiten.

Lassen Sie uns OpenJDK-11 installieren. Die Schritte zum Installieren dieser Distribution auf unserem System über die Putty-Schnittstelle werden nachfolgend beschrieben. Als Erstes werden wir die archivierte OpenJDK-11-Datei der offiziellen Website [https://jdk.java.net/archive/] herunterladen.

Dann können wir über die WinSCP-App auf unser Linux (Ubuntu)-Umgebung zugreifen, um sie als Binärdatei zu übertragen.

Nachdem wir die Archivdatei in unserer Umgebung haben, müssen wir sie zuerst über die Befehlszeile extrahieren.
tar -xvzf openjdk-17.0.1_linux-x64_bin.tar.gz

Da die Datei nur Lese- und Schreibrechte hat, werden wir ihr die Ausführungsberechtigung wie folgt erteilen:

Wenn wir dann auflisten, erhalten wir:

Jetzt können wir OpenJDK-17 mit dem folgenden Befehl installieren:
sudo apt install openjdk-17-jdk -y

Da jedoch OpenJDK-17 bereits in meiner Umgebung installiert ist, wird die neueste Version angezeigt.

Nach der Installation überprüfen wir, ob der Jenkins-Dienst aktiv ist.

root@master:/home/bekber1# systemctl
status jenkins
● jenkins.service
- Jenkins Continuous Integration Server
Loaded: loaded (/lib/systemd/system/jenkins.service; enabled; vendor
preset: enabled)
Active: active (running) since Tue 2024-09-03 06:34:13 UTC; 2h 58min
ago
Main PID: 18413 (java)
Tasks: 63 (limit: 2178)
Memory: 791.1M
CGroup: /system.slice/jenkins.service
└─18413 /usr/bin/java
-Djava.awt.headless=true -jar /usr/share/java/jenkins.war
--webroot=/var/cache/jenkins/war --httpPort=xxx
Wir können also sehen, dass der Jenkins-Dienst aktiv ist. Um jetzt über den Webbrowser auf Jenkins zugreifen zu können, müssen wir die Standard-UFW-Firewall konfigurieren.
Öffnen Sie dem Port 8080, indem Sie die folgenden Befehle ausführen:
root@master:/home/bekber1#
ufw allow 8080
Rule
added
Rule
added (v6)
root@master:/home/bekber1#
ufw status
Status:
active

In der Putty-CLI verwenden wir den folgenden Befehl, um das Administrator-Kennwort zu erhalten:

Wir kopieren das standardmäßig bereitgestellte Kennwort und fügen es in das im obigen Bild gezeigte Feld ein, bevor wir auf die Schaltfläche „Weiter“ klicken. Danach können wir loslegen.

Nach der Installation und Konfiguration müssen wir unseren ersten Admin-Benutzer erstellen, wie im folgenden Bild gezeigt:

Jetzt können wir auf „Speichern und fortfahren“ klicken und erhalten dann die Jenkins-URL, wie unten gezeigt:

Jetzt ist Jenkins bereit und wir können es starten und verwenden.



Jenkins-Administrator-Kennwort ändert, wenn es verlorengeht:
Wenn wir das Jenkins-Admin-Passwort für den Webbrowser vergessen haben, sollten wir die folgenden Schritte befolgen, um es zurückzusetzen:
Zunächst müssen wir herausfinden, wo sich die config.xml-Datei befindet:
root@master:/home/bekber1# cd /var/lib/jenkins/
Wir müssen die config.xml-Datei öffnen und die folgende Zeile in der Konfigurationsdatei ändern:
root@master:/var/lib/jenkins# vim config.xml
Wenn Sie diese Datei in der CLI zusammenfügen, können Sie die Zeile "<useSecurity>true</useSecurity>"
sehen. Wir ändern sie von „true“ auf „false“ und starten anschließend den Jenkins-Dienst neu wie folgt:
systemctl restart jenkins
Nach diesen Schritten aktualisieren wir die Seite des Webbrowsers und gelangen auf die Jenkins-Seite, um die Änderungen vorzunehmen, da sie nun ungesichert ist.
Der erste Schritt besteht darin, „Manage Jenkins“ auszuwählen und anschließend in der Dropdown-Liste „Security Realm“ „Jenkins‘ own user database“ auszuwählen. Wir speichern dies und schließen das Fenster.
Danach können wir unter „Manage Jenkins“ -> „Security“ -> „Users“ auf die Schaltfläche „Einstellungen“ klicken und unter „Kennwort“ das Kennwort ändern.
So erstellen Sie einen integrierten Node-Agenten
In Jenkins sind Agents unerlässlich für die Ausführung von Build-Jobs. Die Schritte, die wir befolgen sollten, sind:
Wir müssen .ssh in /var/lib/jenkins/.ssh/known_host konfigurieren.
-wir erstellen den Ordner namens .ssh
root@master:/var/lib/jenkins#mkdir -p /var/lib/jenkins/.ssh
root@master:/var/lib/jenkins# chown -R jenkins:jenkins .ssh
root@master:/var/lib/jenkins#ssh-keyscan -H agent1 >> /var/lib/jenkins/.ssh/known_host
Wenn es nicht funktioniert, z. B.
root@master:/etc/ssh# ssh-keyscan -H agent1 >> /var/lib/jenkins/.ssh/known_hosts
getaddrinfo agent1: Temporary failure in name resolution
getaddrinfo agent1: Temporary failure in name resolution
getaddrinfo agent1: Temporary failure in name resolution
getaddrinfo agent1: Temporary failure in name resolution
getaddrinfo agent1: Temporary failure in name resolution
Dann müssen wir die IP-Adresse von agent1 in der /etc/hosts
-Datei hinzufügen.
Zur Ermittlung der IP-Adresse von agent1 nutzen wir den Befehl
root@master:/etc/ssh# dig agent1
; <<>> DiG 9.16.48-Ubuntu <<>> agent1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 15329
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;agent1. IN A
;; Query time: 0 msec
;; SERVER: <MyIpAddress>#53(<MyIpAddress>)
;; WHEN: Sun Mar 10 10:33:06 UTC 2024
;; MSG SIZE rcvd: 35
und bearbeiten wir die /etc/hosts-Datei mit dem Nano-Editor wie folgt:
root@master:/etc# cat hosts
<MyIpAddress>localhost
<MyIpAddress>linux-0
<MyIpAddress>master
<MyIpAddress>node1
<MyIpAddress>node2
<MyIpAddress> agent1 ----------> mit dem Nano- oder Vim-Editor müssen wir die IP-Adresse von agent1 hinzufügen.
/etc/hosts
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Nach Ausführung des Befehls ssh-keyscan -H agent1 >> /var/lib/jenkins/.ssh/known_hosts erhalten wir die Auflösung:
root@master:/etc# ssh-keyscan -H agent1 >> /var/lib/jenkins/.ssh/known_hosts
# agent1:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.11
# agent1:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.11
# agent1:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.11
# agent1:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.11
# agent1:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.11
Jenkins agent1 am Port 22 wird aufgelöst:
root@master:/etc# cd /var/lib/jenkins/.ssh/
root@master:/var/lib/jenkins/.ssh# ll
total 12
drwxr-xr-x 2 jenkins jenkins 4096 Mar 10 10:11 ./
drwxr-xr-x 15 jenkins jenkins 4096 Mar 10 10:05 ../
-rw-r--r-- 1 jenkins jenkins 978 Mar 10 10:36 known_hosts
root@master:/var/lib/jenkins/.ssh# cat known_hosts
|1|UMnpRmZeDMTxf8bAmPYanyzeE54=|C7tpVgwzVbu7FDJG4fUiDVN3L4I= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBAunO9x3A5IInM2Qqqf4wwWBEokfH8pRiMVcrjNTNn7hCZrgi75hbRbV+dG8hy2xhUtDlywP0k0S/+qpSwoVd7E=
|1|nPGx2tNNjsRAU6ZYf7UqlI1iGcM=|TqWQT18KAS56FgREOVEfVUvvILQ= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDTy0gPfw8tQ7T2VkFlp82regznVnrZx7tlsgLqlOWVqzhCPrA4/V0DlOsHRjDKUFNnrH+LgOSSAmZwqRrHYyy6Oe+BkmXU4v5a8oZPA1xYRSL/Q1YDYhiMeySilDDzUQwy6HqcmlpPHdPFsl/S/vQIoCAlP5PbS9/GYXILJJj2bxVjqq/nWeC3QywDsoch02XxPpQORk3qFPKDAbc8AWn26v/zHXFgjEig0vW+el1gjkKe8scNTvjVhRot31gD3SdM39SpEspD+Unkw0EhI60hnQeZjiunRUM9/Za2sw3cFGOCXOySDPrkZ2mm10geTZVDF4JTm+pdsv8cmLOUSooRWg+t8R6MK7ZDmeW1aRScpy5R8je0fuGU7XX/P+RNs27TFJQevE0EwWcTYMtBMQunuuqGFBVUBIOMZzwKeipojx9mGXhDp+TiHsQRXq/9nIOdiDfrub658RUJBgZsaX7fAsnnMMbjf0qBSXdikNoQHm+SrvxI4I7L7XawidSqWkU=
|1|1JIhNCOumg+yjaTgMMYtcGAkC6o=|B/ZgF81ZU+t+8AbByBU3hwp68X0= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFLr95lmAUl1k0+zxfhzG4B9fvrvPtddpxOCII+abRfO
root@master:/var/lib/jenkins/.ssh#
Jenkins-Logs:
Warning: no key algorithms provided; JENKINS-42959 disabled
SSHLauncher{host='agent1', port=22, credentialsId='linux-0', jvmOptions='', javaPath='', prefixStartSlaveCmd='', suffixStartSlaveCmd='', launchTimeoutSeconds=60, maxNumRetries=10, retryWaitTime=15, sshHostKeyVerificationStrategy=hudson.plugins.sshslaves.verifiers.KnownHostsFileKeyVerificationStrategy, tcpNoDelay=true, trackCredentials=true}
[03/10/24 10:43:30] [SSH] Opening SSH connection to agent1:22.
Searching for agent1 in /var/lib/jenkins/.ssh/known_hosts
Searching for agent1:22 in /var/lib/jenkins/.ssh/known_hosts
[03/10/24 10:43:30] [SSH] SSH host key matches key in Known Hosts file. Connection will be allowed.
[03/10/24 10:43:31] [SSH] Authentication successful.
[03/10/24 10:43:32] [SSH] The remote user's environment is:
BASH=/usr/bin/bash
.
.
.
<===[JENKINS REMOTING CAPACITY]===>channel started
Remoting version: 3206.vb_15dcf73f6a_9
Launcher: SSHLauncher
Communication Protocol: Standard in/out
This is a Unix agent
Agent successfully connected and online
Zusammenfassung
Jenkins ist ein wertvolles Werkzeug zur Automatisierung von Softwareentwicklungsprozessen. Durch das Verständnis seiner Kernfunktionen, Installation, Konfiguration, Sicherheit und Agentenverwaltung können Sie Jenkins effektiv nutzen, um Ihre CI/CD-Pipelines zu verbessern und hochwertige Software zu liefern.
Referenz:
https://community.jenkins.io/t/can-i-create-agent-for-built-in-node/1183