
Jenkins è uno strumento di automazione degli strumenti open source per impostare l'intera pipeline di distribuzione del software, ovvero la distribuzione continua. Ciò consente agli sviluppatori di gestire e controllare i processi di distribuzione del software durante l'intero ciclo di vita, in modo da creare, testare e distribuire il proprio software in modo affidabile.
Jenkins ha una comunità estensibile, vivace e attiva. È scritto in Java. In genere, Jenkins viene eseguito come un'applicazione servlet Java integrata autonoma. È anche possibile eseguire in contenitori servlet Java come Apache Tomcat o GlassFish.
In questo tutorial impariamo come configurare Jenkins con SSL dietro Nginx su Ubuntu 20.04 .
Prerequisiti
- Un server Ubuntu 20.04
- Un utente con privilegi sudo
- Minimo di 1 GB di RAM
- Oracle JDK 11 o successivo installato.
Passaggio 1:installa Jenkins su Ubuntu
Il pacchetto Jenkins disponibile nel repository Ubuntu predefinito è molto probabilmente dietro l'ultima versione. Si consiglia di installare Jenkin dal pacchetto di manutenzione previsto, disponibile nel repository ufficiale.
Per prima cosa aggiungeremo la chiave del repository al sistema.
$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
Durante la stesura di questa guida, la procedura installerà la versione 2.303.3
di Jenkins
Successivamente, aggiungiamo il repository del pacchetto a sources.list
file:
$ sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
Dovremmo aggiornare la cache del repository
$ sudo apt update
Ora puoi installare Jenkins:
$ sudo apt install jenkins
Quindi avvia il servizio
$ sudo systemctl start jenkins
Configuriamo il servizio per l'avvio automatico con il server
$ sudo systemctl enable jenkins
Puoi controllare lo stato del servizio
$ sudo systemctl status jenkins
Puoi controllare la versione guardando il file /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>
Fase 2:configurazione di Nginx con certificato SSL
Ora, poiché utilizzeremo Nginx per inoltrare la comunicazione, dovremo prima installarlo
$ sudo apt install nginx
Ora devi copiare il certificato nella cartella da utilizzare. Considereremo che hai già il tuo certificato SSL.
Copieremo il certificato
$ sudo cp jenkins.domain.com.crt /etc/nginx/certs/jenkins.domain.com.crt
Quindi copia le chiavi
$ sudo cp jenkins.domain.com.key /etc/nginx/certs/jenkins.domain.com.key
Per evitare qualsiasi conflitto con la configurazione predefinita di Nginx, rimuoveremo la configurazione predefinita da sites-enabled
directory
sudo rm /etc/nginx/sites-enabled/default
Ora creiamo il file di configurazione di Jenkins. Jenkins normalmente utilizza la porta 8080 per l'esecuzione, ma poiché stiamo usando Nginx, sarà in ascolto sulle porte 80 e 443, quindi con le informazioni sul nome di dominio, invierà la comunicazione internamente sulla porta 8080 per Jenkins.
La configurazione che imposteremo forzerà automaticamente tutte le richieste HTTP su 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;
}
}
Oltre alla configurazione di Jenkins Nginx, abbiamo aggiunto alcuni dei derivati nginx richiesti. Puoi utilizzare e ottimizzare in base ai requisiti del tuo server web.
Ora crea un simbolico del file di configurazione per abilitarlo
$ sudo ln -s /etc/nginx/sites-available/jenkins.conf /etc/nginx/sites-enabled/jenkins.conf
Ora avvia il servizio Nginx
$ sudo systemctl start nginx
Quindi abilitalo all'avvio
$ sudo systemctl enable nginx
Ora puoi testare la tua configurazione 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
Ora riavvia il servizio Nginx per prendere in considerazione la configurazione
$ sudo systemctl restart nginx
Ora apri le porte 80 e 443 sul firewall:
$ sudo ufw allow 80,443/tcp
Inoltre, assicurati di aprire la porta ssh prima di abilitare UFW, altrimenti potresti perdere la connessione ssh se qualcosa va storto
$ sudo ufw allow 'OpenSSH'
Ora abilita UFW se non ancora
$ sudo ufw enable
Fase 3:accedi e configura Jenkins
Ora apri il tuo browser con l'URL http://jenkins.domain.com e vedrai la pagina di Jenkins che ti chiede una password

Per avere la password, è necessario visualizzare il contenuto del file indicato
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
88ba484d8cff4150a90683a07c89ea7c
Quindi incolla la password e vai alla pagina successiva. Ora avrai la pagina che chiede di installare i plugin predefiniti o di selezionare quelli da installare. Nel nostro caso, lasceremo quelli predefiniti

Quindi vedrai il processo di installazione

Ora devi creare l'utente amministratore.

Ora convalida l'URL di Jenkins.

Ora puoi iniziare a usare il tuo Jenkins

Conclusione
In questo tutorial, abbiamo imparato come configurare Jenkins con SSL dietro Nginx su Ubuntu 20.04. Puoi iniziare a configurare i lavori e le pipeline del processo CI/CD.