Jenkins ist ein Open-Source-Tool-Automatisierungstool zum Einrichten der gesamten Software-Delivery-Pipeline – Continuous Delivery. Dadurch können Entwickler Softwarebereitstellungsprozesse über den gesamten Lebenszyklus hinweg verwalten und steuern, um ihre Software zuverlässig zu erstellen, zu testen und bereitzustellen.
Jenkins hat eine erweiterbare und lebendige, aktive Community. Es ist in Java geschrieben. Im Allgemeinen wird Jenkins als eigenständige integrierte Java-Servlet-Anwendung ausgeführt. Es ist auch möglich, in Java-Servlet-Containern wie Apache Tomcat oder GlassFish zu laufen.
In diesem Tutorial lernen wir, wie man Jenkins konfiguriert mit SSL hinter Nginx auf Ubuntu 20.04 .
Voraussetzungen
- Ein Ubuntu 20.04-Server
- Ein Benutzer mit sudo-Berechtigungen
- Mindestens 1 GB RAM
- Oracle JDK 11 oder höher installiert.
Schritt 1:Installieren Sie Jenkins auf Ubuntu
Das im Standard-Ubuntu-Repository verfügbare Jenkins-Paket ist höchstwahrscheinlich hinter der neuesten Version zurückgeblieben. Es wird empfohlen, Jenkin aus dem geplanten Wartungspaket zu installieren, das im offiziellen Repository verfügbar ist.
Wir werden zuerst den Repository-Schlüssel zum System hinzufügen.
$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
Beim Schreiben dieses Handbuchs installiert das Verfahren die Version 2.303.3
von Jenkins
Als Nächstes fügen wir das Paket-Repository zur sources.list
hinzu Datei:
$ sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
Wir sollten den Cache des Repositorys aktualisieren
$ sudo apt update
Jetzt können Sie Jenkins installieren:
$ sudo apt install jenkins
Starten Sie dann den Dienst
$ sudo systemctl start jenkins
Lassen Sie uns den Dienst so konfigurieren, dass er automatisch mit dem Server startet
$ sudo systemctl enable jenkins
Sie können den Status des Dienstes überprüfen
$ sudo systemctl status jenkins
Sie können die Version überprüfen, indem Sie sich die Datei /var/lib/jenkins/config.xml
ansehen
$ cat /var/lib/jenkins/config.xml
<?xml version='1.1' encoding='UTF-8'?>
<hudson>
<disabledAdministrativeMonitors/>
<version>2.303.3</version>
...
...
</hudson>
Schritt 2:Nginx mit SSL-Zertifikat konfigurieren
Da wir nun Nginx als Proxy für die Kommunikation verwenden, müssen wir es zuerst installieren
$ sudo apt install nginx
Jetzt müssen Sie das Zertifikat in den zu verwendenden Ordner kopieren. Wir gehen davon aus, dass Sie Ihr SSL-Zertifikat bereits haben.
Wir kopieren das Zertifikat
$ sudo cp jenkins.domain.com.crt /etc/nginx/certs/jenkins.domain.com.crt
Kopieren Sie dann die Schlüssel
$ sudo cp jenkins.domain.com.key /etc/nginx/certs/jenkins.domain.com.key
Um Konflikte mit der Standardkonfiguration von Nginx zu vermeiden, entfernen wir die Standardkonfiguration aus sites-enabled
Verzeichnis
sudo rm /etc/nginx/sites-enabled/default
Lassen Sie uns nun die Konfigurationsdatei von Jenkins erstellen. Jenkins verwendet normalerweise Port 8080 zum Ausführen, aber da wir Nginx verwenden, lauscht es auf den Ports 80 und 443 und leitet dann mit den Domänennameninformationen die Kommunikation intern auf Port 8080 für Jenkins weiter.
Die Konfiguration, die wir festlegen werden, erzwingt automatisch alle HTTP-Anforderungen an HTTPS
$ sudo vim /etc/nginx/sites-available/jenkins.conf
upstream jenkins.domain.com {
server SERVER_IP:8080;
}
server {
server_name jenkins.domain.com;
listen 80 ;
access_log /var/log/nginx/jenkins.log;
return 301 https://$host$request_uri;
}
server {
server_name jenkins.domain.com;
listen 443 ssl http2 ;
access_log /var/log/nginx/jenkins.log;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_certificate /etc/nginx/certs/jenkins.domain.com.crt;
ssl_certificate_key /etc/nginx/certs/jenkins.domain.com.key;
add_header Strict-Transport-Security "max-age=31536000";
location / {
proxy_pass http://jenkins.domain.com;
}
}
Zusätzlich zur Jenkins Nginx-Konfiguration haben wir einige der erforderlichen Nginx-Derivate hinzugefügt. Sie können nach Ihren Webserver-Anforderungen verwenden und optimieren.
Erstellen Sie nun ein Symbol der Konfigurationsdatei, um sie zu aktivieren
$ sudo ln -s /etc/nginx/sites-available/jenkins.conf /etc/nginx/sites-enabled/jenkins.conf
Starten Sie nun den Nginx-Dienst
$ sudo systemctl start nginx
Aktivieren Sie es dann beim Start
$ sudo systemctl enable nginx
Jetzt können Sie Ihre Nginx-Konfiguration testen
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Starten Sie nun den Nginx-Dienst neu, um die Konfiguration zu berücksichtigen
$ sudo systemctl restart nginx
Öffnen Sie nun die Ports 80 und 443 auf der Firewall:
$ sudo ufw allow 80,443/tcp
Stellen Sie außerdem sicher, dass Sie den SSH-Port öffnen, bevor Sie UFW aktivieren. Andernfalls könnten Sie Ihre SSH-Verbindung verlieren, wenn etwas schief geht
$ sudo ufw allow 'OpenSSH'
Aktivieren Sie jetzt UFW, falls noch nicht geschehen
$ sudo ufw enable
Schritt 3:Zugriff auf und Konfiguration von Jenkins
Öffnen Sie nun Ihren Browser mit der URL http://jenkins.domain.com und dann sehen Sie die Seite von Jenkins, die Sie nach einem Passwort fragt
Um das Passwort zu erhalten, sollten Sie sich den Inhalt der angegebenen Datei anzeigen lassen
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
88ba484d8cff4150a90683a07c89ea7c
Fügen Sie dann das Passwort ein und fahren Sie mit der nächsten Seite fort. Sie werden nun die Seite haben, auf der Sie aufgefordert werden, die Standard-Plugins zu installieren oder die zu installierenden auszuwählen. In unserem Fall belassen wir die Standardwerte
Dann sehen Sie den Installationsprozess
Jetzt müssen Sie den Admin-Benutzer erstellen.
Validieren Sie nun die URL von Jenkins.
Jetzt können Sie mit der Verwendung Ihres Jenkins beginnen
Schlussfolgerung
In diesem Tutorial haben wir gelernt, wie man Jenkins mit SSL hinter Nginx unter Ubuntu 20.04 konfiguriert. Sie können mit der Konfiguration der Jobs und Pipelines Ihres CI/CD-Prozesses beginnen.