Concourse
Système d'intégration et de déploiement continu open-source basé sur des pipelines déclaratifs et des conteneurs isolés.
Mis à jour le 19 janvier 2026
Concourse est une plateforme d'intégration et de déploiement continu (CI/CD) open-source qui se distingue par son approche déclarative et conteneurisée. Contrairement aux solutions traditionnelles, Concourse modélise les pipelines comme des graphes de dépendances explicites où chaque tâche s'exécute dans un conteneur éphémère. Cette architecture garantit la reproductibilité, l'isolation et la transparence des processus d'automatisation.
Fondements
- Pipelines définis en YAML avec une syntaxe déclarative sans état persistant côté serveur
- Exécution de chaque étape dans des conteneurs Docker isolés garantissant la reproductibilité
- Modèle basé sur des ressources (inputs/outputs) et des jobs interconnectés formant un DAG
- Absence de plugins ou d'extensions : toute la logique réside dans les pipelines et les images de conteneurs
Avantages
- Reproductibilité totale : les builds s'exécutent toujours dans des environnements propres et identiques
- Visibilité maximale : interface graphique montrant les dépendances et l'état en temps réel
- Scalabilité horizontale grâce à l'architecture workers distribués sans état partagé
- Sécurité renforcée par l'isolation des conteneurs et la gestion granulaire des credentials
- Infrastructure as Code complète : pipelines versionnés et auditables dans Git
Exemple concret
resources:
- name: app-repo
type: git
source:
uri: https://github.com/company/app.git
branch: main
- name: docker-image
type: docker-image
source:
repository: company/app
tag: latest
jobs:
- name: test-and-build
plan:
- get: app-repo
trigger: true
- task: run-tests
config:
platform: linux
image_resource:
type: docker-image
source: {repository: node, tag: "18"}
inputs:
- name: app-repo
run:
path: sh
args:
- -c
- |
cd app-repo
npm install
npm test
- put: docker-image
params:
build: app-repo
dockerfile: app-repo/DockerfileCe pipeline surveille un dépôt Git, exécute les tests dans un conteneur Node.js isolé, puis construit et publie une image Docker si les tests réussissent. Chaque étape est atomique et traçable.
Mise en œuvre
- Déployer Concourse via docker-compose, Helm ou BOSH selon l'infrastructure cible
- Configurer les workers avec suffisamment de ressources pour l'exécution parallèle des conteneurs
- Définir les pipelines en YAML en identifiant ressources (git, S3, registres) et jobs
- Appliquer les pipelines avec fly CLI : `fly -t target set-pipeline -p nom -c pipeline.yml`
- Configurer les credentials via Vault, CredHub ou gestionnaires de secrets intégrés
- Monitorer les métriques Prometheus exposées pour l'observabilité du système
- Mettre en place la rotation automatique des workers pour la maintenance
Conseil pro
Utilisez des resource types personnalisés pour intégrer des systèmes spécifiques (Terraform, Kubernetes, APIs internes). Créez des images Docker de base contenant vos outils communs pour accélérer l'exécution des tasks. Structurez vos pipelines complexes en fichiers YAML modulaires chargés via `load_var` pour maintenir la lisibilité.
Outils associés
- fly CLI : outil en ligne de commande pour gérer les pipelines et interagir avec Concourse
- CredHub/Vault : gestionnaires de secrets pour sécuriser les credentials des pipelines
- Prometheus/Grafana : stack de monitoring pour visualiser les métriques de performance
- Docker/containerd : runtime de conteneurs pour l'exécution des tasks
- BOSH : gestionnaire de déploiement pour les installations production hautement disponibles
- Terraform : pour provisionner l'infrastructure Concourse as code
Concourse représente une approche moderne du CI/CD qui privilégie la simplicité conceptuelle, la transparence et la reproductibilité. En éliminant les états cachés et en conteneurisant chaque étape, il offre aux équipes DevOps une plateforme fiable pour automatiser des workflows complexes tout en maintenant une traçabilité complète. Son modèle déclaratif s'intègre naturellement dans les pratiques GitOps et Infrastructure as Code, permettant une gouvernance rigoureuse des processus de livraison logicielle.
