Si vous cherchez un moyen de tester et déployer vos images Docker CircleCI, la création d’un pipeline CI/CD peut grandement améliorer la livraison logicielle.
Dans ce tutoriel, vous apprendrez comment développer potentiellement un pipeline CI/CD pour votre image Docker en utilisant CircleCI.
Lisez la suite et déployez vos images Docker, uniquement s’ils réussissent le test!
Prérequis
Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d’avoir ce qui suit:
- A GitHub account and GitHub repository that is already set up.
- A CircleCI account linked to your GitHub account.
- Docker installé.
- A Linux machine – This tutorial uses Ubuntu 20.04.3 LTS.
Création d’une image Docker d’une application basée sur Python
Avant de créer un pipeline CI/CD, vous construirez d’abord une image Docker basée sur une application Python qui affiche du texte dans un navigateur web. Vous passerez brièvement en revue comment l’application est construite, rédigerez les cas de test pour l’application, puis conteneuriserez l’application.
1. Ouvrez votre terminal et exécutez la commande suivante pour installer
Flask et Pytest. Flask est un framework utilisé pour construire des applications web en Python tandis que Pytest est utilisé pour écrire des tests en Python.
2. Ensuite, créez un répertoire de projet avec le nom de votre choix, mais le répertoire de projet est appelé flask-circleci
dans cette démo. Ce répertoire est l’endroit où vous stockerez vos ressources pour ce tutoriel.
3. Créez un fichier appelé flask-circleci/main.py et remplissez le code suivant.
Le code ci-dessous affiche le texte « Bienvenue dans mon application Flask » sur une page d’accueil dans un navigateur.
4. Maintenant, créez un autre fichier appelé flask-circleci/test_main.py et copiez/collez le code suivant.
Le code ci-dessous crée un client de test pour votre application.
Pytest exige que le nom de votre fichier de test commence par test_ comme illustré ci-dessous.
5. Exécutez les commandes suivantes pour accéder au répertoire de votre projet (flask-circleci
), exécutez le test pour votre projet.
Si le test réussit, vous obtiendrez un progrès de 100%, comme indiqué ci-dessous.

6. Ensuite, créez un fichier texte (requirements.txt) pour documenter vos dépendances dans le répertoire racine et remplissez le texte ci-dessous. Ce fichier est essentiel lors de la construction de votre image Docker pour qu’elle fonctionne correctement.
7. Enfin, créez un nouveau fichier (flask-circleci/Dockerfile), et écrivez les instructions ci-dessous dans le Dockerfile pour construire votre image Docker.
Les instructions dans le Dockerfile effectuent ce qui suit:
- Crée un fichier dans votre image.
- Copie tous les fichiers dans les fichiers du répertoire actuel (flask-circleci).
- Exécutez votre code
Création d’un pipeline CI/CD CircleCI
Maintenant que votre image Docker est prête, vous allez créer un pipeline CI/CD pour tester votre code, et si tous les tests réussissent, l’image Docker sera poussée vers Docker Hub. Docker Hub est un service similaire à GitHub, mais pour les images Docker, qui vous aide à trouver et à partager des images de conteneurs avec votre équipe ou d’autres développeurs.
Pour créer le pipeline CI/CD, suivez les étapes ci-dessous :
1. Ouvrez votre navigateur Web préféré et connectez-vous à votre compte Docker Hub.
2. Sur la page d’accueil de Docker Hub, cliquez sur l’option Créer un dépôt pour créer un dépôt sur Docker Hub.

3. Attribuez un nom unique à votre référentiel. Ce tutoriel utilise un référentiel appelé circleci-tutorial, comme indiqué ci-dessous.

4. Créez un nouveau fichier (flask-circleci/config.yml) à la racine de votre projet et copiez/collez le code ci-dessous dans le fichier config.yml.
Le code ci-dessous utilise une image Python toute faite pour installer les dépendances, exécuter les tests unitaires, et construire/pousser votre image Docker vers votre référentiel Docker Hub.
Typiquement, pour un projet en production, vous voudriez protéger votre nom d’utilisateur et votre mot de passe dans CircleCI ou peut-être dans un fichier .env.
5. Enfin, exécutez les commandes suivantes à la racine de votre projet pour commit
et push
le code (flask-circleci/config.yml) vers votre dépôt GitHub.
Activation du pipeline CI/CD CircleCI
Vous venez de créer votre pipeline CI/CD CircleCI, mais pour le moment, il ne fait pas grand-chose. Vous devez activer votre pipeline en configurant un projet dans votre compte CircleCI.
1. Connectez-vous à votre compte CircleCI avec votre compte GitHub sur votre navigateur web.
2. Ensuite, cliquez sur l’onglet Projets dans le panneau de gauche, puis cliquez sur le bouton Configurer le projet sur le côté droit de votre projet pour activer le pipeline CircleCI sur le projet.
Comme vous vous êtes connecté à CircleCI avec votre compte GitHub, vos projets se synchronisent avec CircleCI, comme sur l’image ci-dessous.

3. Revenez à l’onglet Tableau de bord et vous verrez le statut Succès. Le statut Succès indique que tout s’est déroulé comme prévu et que l’image a été poussée vers votre référentiel Docker Hub.
Cliquez sur la construction pour voir toutes les étapes qui se sont déroulées dans le pipeline.

Ci-dessous, vous pouvez voir la liste des étapes que CircleCI a effectuées pour exécuter le pipeline.

4. Enfin, revenez à votre référentiel Docker Hub et vous verrez l’image que vous avez poussée vers Docker Hub via le pipeline CircleCI.

Pousser des modifications vers GitHub pour déclencher le pipeline CircleCI.
À présent, vous avez déjà un pipeline CircleCI fonctionnel. Mais peut-être avez-vous apporté des modifications à votre projet. Si c’est le cas, comment sauriez-vous si le pipeline fonctionne toujours ? Vous pouvez déclencher CircleCI en poussant des modifications vers votre dépôt GitHub et voir si le test réussit.
1. Sur votre machine locale, remplacez le code que vous avez dans test_main.py par le code ci-dessous. Le code ci-dessous vise à faire échouer le test car le code d’état est passé de 200
à 400
.
2. Ensuite, remplacez les étapes
dans le config.yml qui construit l’image Docker et la pousse vers Docker Hub avec le code ci-dessous.
Dans le code ci-dessous, vous modifiez simplement la version pour vous assurer que seules les nouvelles modifications sont poussées vers votre dépôt GitHub.
3. Exécutez les commandes suivantes à la racine de votre projet pour commit
et push
le code vers votre dépôt GitHub.
4. Maintenant, accédez à votre tableau de bord CircleCI et vous verrez que la construction a échoué, comme indiqué ci-dessous.
Cliquez sur Construire pour voir les étapes prises pour pousser les changements et confirmer ce qui a causé l’échec de la construction.


5. Enfin, accédez à votre dépôt Docker Hub et confirmez que les changements n’ont pas été poussés.
Comme vous pouvez le voir dans l’image ci-dessous, la version 2 n’a pas été téléchargée car le test a échoué.

Conclusion
Tout au long de ce tutoriel, vous avez appris comment écrire des tests et dockeriser votre application Python. Vous avez créé un pipeline CI/CD avec CircleCI qui exécute le test pour votre application et pousse votre image Docker vers Docker Hub.
À ce stade, vous avez déjà des connaissances fondamentales sur le développement d’un pipeline CI/CD avec CircleCI. Maintenant, comment avez-vous l’intention d’utiliser ces nouvelles connaissances? Peut-être en créant un pipeline CI/CD qui déploie votre image Docker sur Heroku?
Source:
https://adamtheautomator.com/circleci-docker-images/