Se stai cercando un modo per testare e distribuire le tue immagini Docker con CircleCI, la creazione di un pipeline CI/CD può farti fare molti progressi nel migliorare la distribuzione del software.
In questo tutorial, imparerai come potenzialmente sviluppare una pipeline CI/CD per la tua immagine Docker utilizzando CircleCI.
Continua a leggere e distribuisci le tue immagini Docker, solo se superano il test!
Prerequisiti
Questo tutorial sarà una dimostrazione pratica. Se desideri seguirci, assicurati di avere quanto segue:
- A GitHub account and GitHub repository that is already set up.
- A CircleCI account linked to your GitHub account.
- Docker installato.
- A Linux machine – This tutorial uses Ubuntu 20.04.3 LTS.
Creazione di un’immagine Docker di un’applicazione basata su Python
Prima di passare alla creazione di una pipeline CI/CD, costruirai prima un’immagine Docker basata su un’applicazione Python che visualizza testi su un browser web. Scorrerai brevemente come è costruita l’applicazione, scriverai i casi di test e containerizzerai quindi l’applicazione.
1. Apri il terminale e esegui il seguente comando per installare
Flask e Pytest. Flask è un framework utilizzato per sviluppare applicazioni web in Python mentre Pytest è utilizzato per scrivere codice Python di test.
2. Successivamente, crea una directory del progetto con il nome preferito, ma la directory del progetto è chiamata flask-circleci
in questa demo. Questa directory è dove memorizzerai le risorse per questo tutorial.
3. Crea un file chiamato flask-circleci/main.py e popola il codice seguente.
Il codice qui sotto mostra il testo “Benvenuto nella mia app Flask” su una pagina iniziale in un browser.
4. Ora, crea un altro file chiamato flask-circleci/test_main.py e copia/incolla il seguente codice.
Il codice qui sotto crea un client di test per la tua applicazione.
Pytest richiede che il nome del tuo file di test inizi con test_ come mostrato di seguito.
5. Esegui i seguenti comandi per navigare nella directory del tuo progetto (flask-circleci
), esegui il test per il tuo progetto.
Se il test riesce, otterrai un progresso del 100%, come mostrato di seguito.

6. Successivamente, crea un file di testo (requirements.txt) per documentare le tue dipendenze nella directory principale e popola il testo qui sotto. Questo file è essenziale durante la creazione dell’immagine Docker in modo che funzioni correttamente.
7. Infine, crea un nuovo file (flask-circleci/Dockerfile), e scrivi le istruzioni di seguito nel Dockerfile per creare la tua immagine Docker.
Le istruzioni nel Dockerfile eseguono le seguenti operazioni:
- Crea un file nella tua immagine.
- Copia tutti i file nella directory corrente (flask-circleci).
- Esegui il tuo codice
Creazione di un Pipeline CI/CD CircleCI
Ora hai la tua immagine Docker pronta, creerai un pipeline CI/CD per testare il tuo codice e, se tutti i test passano, l’immagine Docker verrà caricata su Docker Hub. Docker Hub è un servizio simile a GitHub, ma per le immagini Docker, che ti aiuta a trovare e condividere immagini di container con il tuo team o altri sviluppatori.
Per creare il pipeline CI/CD, segui i passaggi seguenti:
1. Apri il tuo browser web preferito e accedi al tuo account Docker Hub.
2. Nella pagina iniziale di Docker Hub, fai clic sull’opzione Crea Repository per creare un repository su Docker Hub.

3. Imposta un nome unico per il tuo repository. Questo tutorial utilizza un repository chiamato circleci-tutorial, come mostrato di seguito.

4. Crea un nuovo file (flask-circleci/config.yml) alla radice del tuo progetto, e copia/incolla il codice di seguito nel file config.yml.
Il codice di seguito ottiene un’immagine Python già pronta e la utilizza per installare le dipendenze ed eseguire i test unitari per creare e inviare la tua immagine Docker al tuo repository Docker Hub.
Tipicamente, per un progetto in produzione, vorresti inserire il tuo nome utente e la tua password protetti all’interno di CircleCI o forse in un file .env.
5. Infine, esegui i seguenti comandi nella radice del tuo progetto per commit
e push
il codice (flask-circleci/config.yml) nel tuo repository GitHub.
Attivazione del Pipeline CircleCI CI/CD
Hai appena creato la tua Pipeline CircleCI CI/CD, ma al momento è lì ferma senza fare molto. Dovrai attivare la tua pipeline configurando un progetto nel tuo account CircleCI.
1. Accedi al tuo account CircleCI con il tuo account GitHub sul tuo browser web.
2. Successivamente, fai clic sulla scheda Progetti nel pannello di sinistra e fai clic sul pulsante Configura Progetto sul lato destro del tuo progetto per attivare la pipeline CircleCI sul progetto.
Dato che hai effettuato l’accesso a CircleCI con il tuo account GitHub, i tuoi progetti si sincronizzano con CircleCI, come nell’immagine qui sotto.

3. Torna alla scheda Dashboard e vedrai lo stato Successo. Lo stato Successo indica che tutto è stato eseguito come previsto e l’immagine è stata caricata nel tuo repository Docker Hub.
Fai clic su build per vedere tutti i passaggi eseguiti nella pipeline.

Di seguito puoi vedere l’elenco dei passaggi che CircleCI ha eseguito per eseguire la pipeline.

4. Infine, torna al tuo repository Docker Hub e vedrai l’immagine che hai caricato su Docker Hub tramite la pipeline CircleCI.

Caricamento delle modifiche su GitHub per avviare la pipeline CircleCI.
Ora, hai già un pipeline di CircleCI funzionante. Ma forse hai apportato modifiche al tuo progetto. In tal caso, come puoi sapere se la pipeline funziona ancora? Puoi attivare CircleCI inviando le modifiche al tuo repository GitHub e vedere se il test avrà successo.
1. Sul tuo computer locale, sostituisci il codice presente in test_main.py con il seguente codice. Il codice sottostante garantisce intenzionalmente che il test fallisca perché il codice di stato è cambiato da 200
a 400
.
2. Successivamente, sostituisci i passaggi
nel config.yml che creano l’immagine Docker e la caricano su Docker Hub con il codice seguente.
Nel codice sottostante, stai semplicemente cambiando la versione per assicurarti che solo le nuove modifiche vengano caricate nel tuo repository GitHub.
3. Esegui i seguenti comandi nella root del tuo progetto per commit
e push
del codice nel tuo repository GitHub.
4. Ora, vai alla dashboard di CircleCI e vedrai che la build è Fallita, come mostrato di seguito.
Clicca su “build” per vedere i passaggi eseguiti per inviare le modifiche e confermare cosa ha causato il fallimento della build.


5. Infine, vai al tuo repository Docker Hub e conferma che le modifiche non siano state inviate.
Come puoi vedere nell’immagine qui sotto, v2 non è stato caricato perché il test è fallito.

Conclusioni
In questo tutorial, hai imparato come scrivere test e Dockerizzare la tua applicazione Python. Hai creato una pipeline CI/CD con CircleCI che esegue il test per la tua applicazione e invia la tua immagine Docker a Docker Hub.
A questo punto, hai già una conoscenza di base nello sviluppo di una pipeline CI/CD con CircleCI. Ora, come intendi utilizzare questa nuova conoscenza? Forse creando una pipeline CI/CD che distribuisce la tua immagine Docker su Heroku?
Source:
https://adamtheautomator.com/circleci-docker-images/