Questo esercizio guida alla configurazione di una pipeline CI/CD utilizzando Jenkins, Docker e una semplice applicazione Flask. La pipeline consente di costruire, taggare e pubblicare un'immagine Docker su Docker Hub. Inoltre, viene spiegato come eseguire manualmente l'immagine per verificare che l'applicazione funzioni.
- Ambiente VM configurato nello Step 1.
- Accesso a un account GitHub e Docker Hub.
- Repository GitHub contenente:
- Jenkinsfile (pipeline Jenkins dichiarativa).
- Applicazione Flask con un Dockerfile (esempio: formazione_sou_k8s).
-
Accedi al container Jenkins Slave con privilegi
sudo
:sudo docker exec --user root -it jenkins_slave bash
-
Installa Docker all'interno del container:
apt update && apt install docker.io
-
Verifica l'installazione:
docker --version
-
Esci dal container:
exit
- Vai su Gestisci Jenkins > Credenziali > System > Credenziali globali.
- Aggiugni le seguenti credenziali:
- ID
github_credentials
: le tue credenziali GitHub (nome utente e password). - ID
dockerhub_credentials
: le tue credenziali Docker Hub (nome utente e password).
- Crea un repository GitHub denominato
formazione_sou_k8s
(forka quello esistente). - Crea una release GitHub con il tag v1.0:
- Vai su Releases > Create a new release.
- Imposta il tag come v1.0 e pubblica la release.
- Accedi alla dashboard Jenkins e crea un nuovo elemento Pipeline denominato
flask-app-example-build
. - Configura l'elemento per utilizzare il repository GitHub:
- Inserisci l'URL del repository.
- Usa le credenziali
github_credentials
. - Specifica il branch
*/main
.
- Salva e avvia la pipeline.
Se la pipeline è configurata correttamente, verranno eseguite le seguenti operazioni:
- Clonazione del repository.
- Build dell'immagine Docker con il nome
lucacisotto/flask-app-example:latest
. - Push dell'immagine Docker su Docker Hub.
-
Scarica l'immagine da Docker Hub:
sudo docker pull lucacisotto/flask-app-example:latest
-
Esegui l’immagine sulla porta
5000
:sudo docker run -p 5000:5000 lucacisotto/flask-app-example:latest
-
Apri un browser e visita http://localhost:5000. Dovresti vedere il messaggio “hello world”.
- Errore di push su Docker Hub: Verifica le credenziali
dockerhub credentials
in Jenkins. - Pipeline fallita durante il build: Assicurati che il Dockerfile sia corretto e che il container Jenkins Slave abbia Docker installato.
- Problemi con il rare limit di Docker Hub: Configura un registro Docker locale.
Ora la pipeline è configurata e l’applicazione Flask è pronta per l'uso.