Jenkins je nástroj pro automatizaci nástrojů s otevřeným zdrojovým kódem pro nastavení celého kanálu dodávání softwaru – nepřetržité doručování. To vývojářům umožňuje řídit a řídit procesy dodávání softwaru v průběhu celého životního cyklu, aby mohli svůj software spolehlivě sestavovat, testovat a nasazovat.
Jenkins má rozšiřitelnou a živou, aktivní komunitu. Je napsán v Javě. Jenkins obecně běží jako samostatná vestavěná Java servletová aplikace. Je také možné spustit v kontejnerech Java servletů, jako je Apache Tomcat nebo GlassFish.
V tomto tutoriálu se naučíme, jak konfigurovat Jenkinse s SSL za Nginx na Ubuntu 20.04 .
Předpoklady
- Server Ubuntu 20.04
- Uživatel s oprávněními sudo
- Minimálně 1 GB paměti RAM
- Nainstalován Oracle JDK 11 nebo vyšší.
Krok 1:Nainstalujte Jenkins na Ubuntu
Balíček Jenkins dostupný ve výchozím úložišti Ubuntu je s největší pravděpodobností za nejnovější verzí. Je doporučeno nainstalovat Jenkin z plánovaného balíčku údržby, který je dostupný v oficiálním úložišti.
Nejprve do systému přidáme klíč úložiště.
$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
Při psaní této příručky postup nainstaluje verzi 2.303.3
z Jenkinse
Dále přidáme úložiště balíčků do sources.list
soubor:
$ sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
Měli bychom aktualizovat mezipaměť úložiště
$ sudo apt update
Nyní můžete nainstalovat Jenkins:
$ sudo apt install jenkins
Poté spusťte službu
$ sudo systemctl start jenkins
Pojďme nakonfigurovat službu tak, aby se automaticky spouštěla se serverem
$ sudo systemctl enable jenkins
Můžete zkontrolovat stav služby
$ sudo systemctl status jenkins
Verzi si můžete zkontrolovat v souboru /var/lib/jenkins/config.xml
$ cat /var/lib/jenkins/config.xml
<?xml version='1.1' encoding='UTF-8'?>
<hudson>
<disabledAdministrativeMonitors/>
<version>2.303.3</version>
...
...
</hudson>
Krok 2:Konfigurace Nginx s certifikátem SSL
Nyní, protože budeme používat Nginx k proxy komunikaci, musíme jej nejprve nainstalovat
$ sudo apt install nginx
Nyní musíte zkopírovat certifikát do složky, kterou chcete použít. Budeme mít za to, že již máte svůj certifikát SSL.
Certifikát zkopírujeme
$ sudo cp jenkins.domain.com.crt /etc/nginx/certs/jenkins.domain.com.crt
Poté zkopírujte klíče
$ sudo cp jenkins.domain.com.key /etc/nginx/certs/jenkins.domain.com.key
Abychom se vyhnuli jakémukoli konfliktu s výchozí konfigurací Nginx, odebereme výchozí konfiguraci z sites-enabled
adresář
sudo rm /etc/nginx/sites-enabled/default
Nyní vytvoříme konfigurační soubor Jenkinse. Jenkins normálně ke svému běhu používá port 8080, ale protože používáme Nginx, bude naslouchat na portech 80 a 443 a poté s informacemi o názvu domény bude interně proxy komunikaci na portu 8080 pro Jenkins.
Konfigurace, kterou nastavíme, automaticky vynutí všechny HTTP požadavky na 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;
}
}
Kromě konfigurace Jenkins Nginx jsme přidali některé z požadovaných derivátů nginx. Můžete používat a optimalizovat podle požadavků vašeho webového serveru.
Nyní vytvořte symbol konfiguračního souboru, abyste jej povolili
$ sudo ln -s /etc/nginx/sites-available/jenkins.conf /etc/nginx/sites-enabled/jenkins.conf
Nyní spusťte službu Nginx
$ sudo systemctl start nginx
Poté jej povolte při spuštění
$ sudo systemctl enable nginx
Nyní můžete otestovat konfiguraci Nginx
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Nyní restartujte službu Nginx, abyste vzali v úvahu konfiguraci
$ sudo systemctl restart nginx
Nyní otevřete porty 80 a 443 na firewallu:
$ sudo ufw allow 80,443/tcp
Před povolením UFW se také ujistěte, že jste otevřeli port ssh, jinak byste mohli ztratit připojení k ssh, pokud se něco pokazí
$ sudo ufw allow 'OpenSSH'
Nyní povolte UFW, pokud ještě ne
$ sudo ufw enable
Krok 3:Přístup a konfigurace Jenkins
Nyní otevřete svůj prohlížeč s URL http://jenkins.domain.com a poté uvidíte stránku Jenkinse, která vás žádá o heslo
Chcete-li získat heslo, měli byste zobrazit obsah souboru, který je označen
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
88ba484d8cff4150a90683a07c89ea7c
Poté vložte heslo a pokračujte na další stránku. Nyní budete mít stránku s výzvou k instalaci výchozích zásuvných modulů nebo k výběru těch, které se mají nainstalovat. V našem případě ponecháme výchozí
Poté uvidíte proces instalace
Nyní musíte vytvořit uživatele admin.
Nyní ověřte adresu URL Jenkinse.
Nyní můžete začít používat Jenkins
Závěr
V tomto tutoriálu jsme se naučili, jak nakonfigurovat Jenkins s SSL za Nginx na Ubuntu 20.04. Můžete začít konfigurovat úlohy a kanály vašeho procesu CI/CD.