Outils de développementService régional
CodePipeline, CodeBuild & CodeDeploy
Permettent d’automatiser la livraison d’une application, de la compilation jusqu’à son déploiement
Cette fiche couvre 3 services : CodePipeline, CodeBuild, CodeDeploy.
Présentation
Les trois services forment une chaîne complète de CI/CD :
- CodePipeline orchestre les étapes
- CodeBuild gère la compilation et les tests
- CodeDeploy déploie
Chaque service peut également être utilisé seul : CodeBuild avec GitHub Actions par exemple ou CodeDeploy exécuté à la main.
Rôles
| CodePipeline | CodeBuild | CodeDeploy | |
|---|---|---|---|
| Rôle | orchestrer | construire | livrer |
| Fichier | définition du pipeline | buildspec.yml |
appspec.yml |
| Cible | — | conteneur éphémère | EC2, Lambda, ECS |
CodePipeline
- Une suite d’étapes : Source → Build → Test → Déploiement
- Sources : GitHub, GitLab ou Bitbucket, S3, ECR
- Une approbation manuelle peut s’intercaler avant le déploiement
- Les artefacts transitent d’une étape à l’autre par S3
CodeBuild
- Exécute le
buildspec.ymldans un conteneur dédié à chaque build - Phases install, pre_build, build, post_build
- Peut s’exécuter dans un VPC si nécessaire (pour joindre une base de données privée par exemple)
CodeDeploy
Types de déploiement :
- En place : les instances sont mises à jour tour à tour (EC2 uniquement)
- Blue/green : un nouvel environnement reçoit le trafic tandis que l’ancien reste prêt
- Canary ou linéaire : le trafic bascule par paliers, sur Lambda et ECS
Tarification
- CodePipeline : à la minute d’exécution des actions
- CodeBuild : à la minute de build, selon la machine choisie
- CodeDeploy : gratuit vers EC2, Lambda et ECS
Limites à connaître
- CodeCommit n’accepte plus de nouveaux clients : le code doit être hébergé ailleurs (GitHub, GitLab, Bitbucket) et relié au pipeline par une connexion
- Pas de vue centralisée : pour comprendre une erreur, il faut naviguer entre les différentes consoles (pipeline, build, déploiement)
- Sur EC2, un agent CodeDeploy doit être installé et tenu à jour sur chaque instance, ce qui n’est pas nécessaire pour Lambda et ECS
- Moins d’actions prêtes à l’emploi que GitHub Actions ou GitLab CI