Bitbucket Pipelines s’active en un clic et ne nécessite aucune infrastructure. Pour une équipe déjà dans l’écosystème Atlassian, c’est la voie la plus rapide vers une CI/CD opérationnelle.
Étape 1 : premier pipeline en 5 minutes
Créez bitbucket-pipelines.yml à la racine du dépôt :
image: python:3.12-slim
pipelines:
default:
- step:
name: Tests
caches: [pip]
script:
- pip install -r requirements.txt
- pytest tests/ --junitxml=test-results/report.xml
artifacts: [test-results/**]
after-script:
- pipe: atlassian/xunit-test-reporter:0.2.0
variables:
REPORT_PATHS: 'test-results/*.xml'
Commitez — le pipeline se déclenche immédiatement.
Étape 2 : build et push Docker
branches:
main:
- step:
name: Build & Push
services: [docker]
caches: [docker]
script:
- echo $DOCKER_PASSWORD | docker login $DOCKER_REGISTRY
-u $DOCKER_USERNAME --password-stdin
- docker build -t $DOCKER_REGISTRY/myapp:$BITBUCKET_BUILD_NUMBER .
- docker push $DOCKER_REGISTRY/myapp:$BITBUCKET_BUILD_NUMBER
Les variables $DOCKER_REGISTRY, $DOCKER_USERNAME, $DOCKER_PASSWORD sont définies dans Repository Settings → Pipelines → Repository variables, chiffrées et masquées dans les logs.
Étape 3 : déploiement avec validation humaine
- step:
name: Deploy Production
deployment: production
trigger: manual # bouton dans l'interface
script:
- pipe: atlassian/ssh-run:0.4.0
variables:
SSH_USER: $PROD_USER
SERVER: $PROD_HOST
COMMAND: >
docker pull $DOCKER_REGISTRY/myapp:$BITBUCKET_BUILD_NUMBER &&
docker stop myapp || true &&
docker run -d --name myapp -p 8080:8080
$DOCKER_REGISTRY/myapp:$BITBUCKET_BUILD_NUMBER
trigger: manual affiche un bouton dans l’interface — le déploiement ne se fait qu’après validation humaine.
Étape 4 : parallélisme et performance
- parallel:
- step:
name: Tests unitaires
script: [pytest tests/unit/]
- step:
name: Lint & sécurité
script: [ruff check ., bandit -r src/]
Intégration Jira : Smart Commits
git commit -m "PROJ-42 #done Fix auth timeout"
# → Ticket Jira PROJ-42 passé en Done + commit lié
Bonnes pratiques
- Versionner le YAML comme du code, jamais de secrets dedans
- Utiliser les caches (
pip,npm,docker) — différence de temps significative - Nommer les déploiements (
deployment: staging/production) pour les tableaux de bord
Notre formation Bitbucket couvre Pipelines du premier pipeline au déploiement multi-environnement.