CircleCI est une plateforme d’intégration et de déploiement continu (CI/CD). Fondée en 2011, et valorisée 1,7 milliard de dollars en 2021, cette solution est aujourd’hui l’une des plateformes de CI/CD les plus populaires au monde.
CircleCI permet aux développeurs de construire, tester et déployer leur code rapidement et de manière fiable. Aujourd’hui, l’entreprise dessert des milliers d’organisations à travers le monde, allant des startups aux grandes entreprises, en leur offrant une flexibilité et une puissance adaptées à tous types de projets.
Mais au fait, qu'est-ce que le CI/CD ?
![](https://datascientest.com/wp-content/uploads/2025/01/image3-1.webp)
CI/CD pour « Continuous Integration / Continuous Delivry » ( intégration continue / déploiement continu) est une pratique de développement visant à automatiser les étapes du cycle de vie d’une application. Elle permet de réduire les erreurs humaines, d’accélérer les délais de livraison et d’améliorer la qualité des applications.
- L’intégration continue (CI) consiste à intégrer régulièrement le code écrit par les différents membres d’une équipe dans un dépôt centralisé. Chaque modification est automatiquement testée pour s’assurer qu’elle n’introduit pas de bugs ou d’incompatibilités.
- Le déploiement continu (CD) automatise quant à lui la livraison du code validé, sans intervention manuelle.
Fonctionnalités clés
CircleCI offre une large gamme d’outils et d’intégrations conçus pour automatiser, optimiser et sécuriser le processus de développement, tout en garantissant une livraison continue efficace.
![](https://datascientest.com/wp-content/uploads/2025/01/image12.webp)
Workflows flexibles
Permet d’orchestrer des pipelines complexes avec des dépendances conditionnelles. Cela optimise les tests et les déploiements, représentant un gain de temps.
![](https://datascientest.com/wp-content/uploads/2025/01/image5-1.webp)
Exécution dans le cloud
Offre des environnements cloud évolutifs via des machines virtuelles ou Docker.
![](https://datascientest.com/wp-content/uploads/2025/01/image15.webp)
Parallélisation des builds
Divise les tâches pour accélérer les tests et les builds pour un temps de traitement réduit.
![](https://datascientest.com/wp-content/uploads/2025/01/image4-1.webp)
Mise en cache intelligente
Les dépendances sont mises en cache pour éviter leur re-téléchargement.
![](https://datascientest.com/wp-content/uploads/2025/01/image7-1.webp)
Sécurité et conformité
Chiffrement des données, permissions granulaires et audit des pipelines.
![](https://datascientest.com/wp-content/uploads/2025/01/image9.webp)
Tests continus et reporting
Intégration avec des outils de test et génération de rapports détaillés.
![](https://datascientest.com/wp-content/uploads/2025/01/image6-1.webp)
Surveillance et insights
Tableaux de bord analytiques pour suivre les performances des pipelines.
Mise en place de CircleCI
La configuration initiale est simple et rapide, en plus d’être compatible avec GitHub; GitLab ou Bitbucket.
1. Avant l'installation
- Avant toute chose, il est bien évidemment nécessaire d’avoir un compte sur une plateforme de gestion de code compatible (GitHub, GitLab ou Bitbucket). Ainsi qu’un compte CircleCI connecté au dépôt que vous utilisez.
- Il est nécessaire d’avoir un fichier de configuration config.yml dans un dossier .circleci à la racine du dépôt.
2. Inscription du projet
Depuis le site de CircleCI, accordez les autorisations demandées pour qu’il puisse accéder à vos dépôts. Pour ajouter un nouveau projet, cliquez sur « Set up project », comme le montre la capture ci-dessous :
![](https://datascientest.com/wp-content/uploads/2025/01/image16.webp)
Choisissez une méthode d’intégration, dans cet exemple, il s’agira de « Fast« .
![](https://datascientest.com/wp-content/uploads/2025/01/image10.webp)
Un fichier de configuration est automatiquement créé.
3. Le fichier de configuration
Dans notre exemple, le fichier de configuration créé est le suivant :
version: 2.1
orbs:
python: circleci/python@2.1.1
jobs:
build-and-test:
docker:
- image: cimg/python:3.12
steps:
- checkout
- python/install-packages:
pkg-manager: pip
- run:
name: Run tests
command: pytest
workflows:
sample:
jobs:
- build-and-test
- La première ligne concerne la version du schéma utilisé par CircleCI.
- Les orbs sont des packages réutilisables contenant des configurations CircleCI préconçues. Elles permettent d’intégrer rapidement des outils ou langages spécifiques sans avoir à réécrire la configuration.
- Les jobs sont des unités de travail. Ils contiennent une série d’étapes, appelées steps qui s’exécutent dans un environnement spécifique. En l’occurrence, le job build-and-test contient un élément docker qui définit l’environnement d’exécution du job (ici, il s’agit d’une image Docker fournie par CircleCI), et un élément step, décrit ci-après.
- Les étapes (steps) définissent les actions à exécuter dans le cadre d’un job :
- checkout : extrait le code source depuis le dépôt pour le rendre accessible dans l’environnement CircleCI.
- python/install-packages : Cette commande installe les dépendances requises, à l’aide du gestionnaire de package pip
- run : exécute une commande à l’intérieur du job. Pytest est utilisé ici pour exécuter des tests unitaires.
- Enfin, les workflows sont un ensemble de jobs exécutés selon un ordre défini :
- sample : nom du workflow
- jobs : liste des jobs à exécuter dans le workflow
Nous pouvons éventuellement apporter les modifications suivantes :
- Afin d’éviter la réinstallation des packages à chaque exécution (et par conséquent, gagner du temps de build), une gestion du cache peut être implémentée :
version: 2.1 orbs: python: circleci/python@2.1.1 jobs: build-and-test: docker: - image: cimg/python:3.12 steps: - checkout - python/install-packages: pkg-manager: pip - run: name: Run tests command: pytest workflows: sample: jobs: - build-and-test
Ainsi, CircleCI tentera de restaurer un cache existant basé sur le hash du fichier requirements.txt. S’il est disponible, elles seront récupérées, sinon elles seront installées via pip.
- Lorsque l’application passera en production, nous pouvons ajouter un déploiement automatisé après un test réussi :
workflows:
version: 2
deploy:
jobs:
- build-and-test
- deploy:
requires:
- build-and-test
filters:
branches:
only: main
4. Intégration cloud
CircleCI s’intègre aisément avec des infrastructures cloud, qu’il s’agisse de Azure, AWS ou GCP. Ici, nous allons effectuer une intégration AWS.
Pour faire simple, il convient d’ajouter dans un premier temps un orb, qui est le suivant :
aws-cli: circleci/aws-cli@4.1.1
Ainsi qu’un job, qui ressemblera à l’exemple ci-dessous :
deploy-to-aws:
docker:
- image: cimg/python:3.12
steps:
- attach_workspace:
at: /home/circleci/project
- aws-cli/setup
- run:
name: Configure AWS credentials
command: |
aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
aws configure set default.region $AWS_DEFAULT_REGION
- run:
name: Deploy application to S3
command: |
aws s3 cp /home/circleci/project/ s3://$AWS_S3_BUCKET_NAME --recursive
- run:
name: Clear AWS credentials (for security)
command: rm -f ~/.aws/credentials
Les variables d’environnement présentent (reconnaissables par le signe $) doivent être créées au préalable dans les paramètres CircleCI.
Bonnes pratiques de CI/CD
CircleCI recommande plusieurs bonnes pratiques pour optimiser les pipelines de CI/CD.
![](https://datascientest.com/wp-content/uploads/2025/01/image1-1.webp)
![](https://datascientest.com/wp-content/uploads/2025/01/image13.webp)
Le processus de CI/CD doit être considéré comme essentiel à toute équipe de développement.
Travailler avec des processus manuels, qui ralentissent le développement.
Réutiliser les configurations et mettre en place des stratégies de cache.
Dupliquer les configurations et télécharger systématiquement les dépendances à chaque build.
Utiliser les orbs CircleCI pour automatiser des tâches répétitives.
Écrire manuellement des configurations redondantes pour chaque projet.
Sécuriser les pipelines en utilisant des variables d’environnement privées, des contextes multiples et des contrôles administratifs.
Stocker des informations sensibles dans les fichiers de configuration du projet.
Maintenir une couverture de tests élevée en intégrant des outils partenaires (Codecov, Cypress ou SonarCloud par exemple).
Déployer du code sans tests ou sans vérifier la couverture de tests.
Utiliser des notifications automatisées avec Slack pour suivre l’état des pipelines et réagir rapidement aux échecs.
Ne pas mettre en place de notifications, ce qui peut entraîner des retards dans la détection des problèmes.
Utiliser des orbs populaires comme Node, AWS-CLI et Python pour faciliter les configurations et le déploiement dans le cloud.
Configurer manuellement chaque outil, ce qui peut entraîner des erreurs et des incohérences.
Analyser les métriques des pipelines pour identifier les goulets d’étranglement et améliorer l’efficacité des workflows.
Ne pas surveiller les performances des pipelines, ce qui peut ralentir les déploiements.
Conclusion
CircleCI est une solution puissante et flexible qui permet d’automatiser et d’optimiser les processus de CI/CD.