Bases des pipelines
Fonctionnement
bitbucket-pipelines.ymlFichier de config à la racine du dépôt
Conteneurs DockerChaque étape s'exécute dans son propre conteneur
DéclencheursPush, PR, tag, planification ou manuel
Minutes de buildQuota selon le niveau d'abonnement
Activer les pipelines
# Paramètres du dépôt → Pipelines → Activer # Ajouter bitbucket-pipelines.yml à la racine # Le premier push déclenche le pipeline
bitbucket-pipelines.yml
Config minimale
image: node:20 pipelines: default: - step: script: - npm install - npm test
Pipelines par branche
pipelines: branches: main: - step: script: - npm run build - npm run deploy
Pipelines tag et pull request
pipelines: tags: 'v*': - step: script: - npm run release pull-requests: '**': - step: script: - npm test
Étapes
Options d'une étape
nameNom affiché pour l'étape
imageRemplace l'image Docker globale
scriptListe des commandes shell à exécuter
size1x (4 Go) ou 2x (8 Go) de mémoire
max-timeDélai d'expiration en minutes (défaut 120)
triggermanual pour les étapes manuelles uniquement
Étapes parallèles
- parallel: - step: name: "Lint" script: - npm run lint - step: name: "Test" script: - npm test
Étape manuelle
- step: name: "Déployer en production" trigger: manual script: - ./deploy.sh prod
Variables
Types de variables
Variables de dépôtParamètres → Pipelines → Variables
Variables de déploiementLimitées à un environnement de déploiement
Variables sécuriséesChiffrées, masquées dans les journaux
Variables de pipelineDéfinies directement dans le YAML
Utiliser des variables
pipelines: default: - step: script: - echo $MY_VAR - docker login -u $DOCKER_USER -p $DOCKER_PASS
Variables intégrées
$BITBUCKET_COMMITSHA complet du commit
$BITBUCKET_BRANCHNom de la branche
$BITBUCKET_TAGNom du tag (pipelines de tag)
$BITBUCKET_BUILD_NUMBERNuméro de build incrémental
$BITBUCKET_REPO_SLUGSlug du dépôt
Cache
Caches prédéfinis
- step: caches: - node # ~/.npm - pip # ~/.cache/pip - docker # cache de couches Docker script: - npm install - npm test
Cache personnalisé
definitions: caches: gradle: ~/.gradle/caches mylibs: vendor/libs pipelines: default: - step: caches: - gradle script: - ./gradlew build
Comportement du cache
DuréeLes caches expirent après 7 jours
PortéePartagé entre tous les pipelines du dépôt
EffacerPipelines → Caches → Supprimer
Artefacts
Passer des fichiers entre étapes
- step: name: "Build" script: - npm run build artifacts: - dist/** - step: name: "Deploy" script: - ls dist/ # artefacts disponibles - ./deploy.sh
Options des artefacts
artifactsMotifs glob des fichiers à transmettre
TéléchargementDisponible automatiquement dans les étapes suivantes
Taille max1 Go par étape
RétentionDisponible 14 jours après le build
Déploiements
Environnements de déploiement
- step: name: "Déployer en staging" deployment: staging script: - ./deploy.sh staging - step: name: "Déployer en production" deployment: production trigger: manual script: - ./deploy.sh prod
Types d'environnements
testEnvironnement de test
stagingEnvironnement de pré-production
productionEnvironnement de production, suivi dans le tableau de bord
Patterns courants
Build et push Docker
- step: services: - docker script: - docker build -t myapp:$BITBUCKET_COMMIT . - docker login -u $DOCKER_USER -p $DOCKER_PASS - docker push myapp:$BITBUCKET_COMMIT
Conteneurs de services
definitions: services: postgres: image: postgres:16 variables: POSTGRES_DB: testdb POSTGRES_PASSWORD: secret pipelines: default: - step: services: - postgres script: - npm test
Étape conditionnelle avec Pipe
- step: name: "Déployer sur S3" script: - pipe: atlassian/aws-s3-deploy:1.1.0 variables: AWS_ACCESS_KEY_ID: $AWS_KEY AWS_SECRET_ACCESS_KEY: $AWS_SECRET S3_BUCKET: my-bucket LOCAL_PATH: dist/