đ§© Bitbucket Pipelines â CI/CD Atlassian
Bitbucket Pipelines exĂ©cute des pipelines dĂ©crits en YAML via bitbucket-pipelines.yml : pipelines â steps (scripts), images Docker, caches/artifacts, variables & secrets, intĂ©grations via Pipes et exĂ©cution possible sur Runners self-hosted. :contentReference[oaicite:1]{index=1}
Vue dâensemble
DĂ©finition, composants, modĂšle mental âstep-basedâ, oĂč ça brille (Atlassian stacks).
CI/CDAtlassianYAMLArchitecture & concepts
pipelines/default/branches/PR/custom, steps, services, artifacts, caches, images.
StepsServicesArtifactsbitbucket-pipelines.yml
Structure, step options, services, caches, artifacts, déploiements, anchors YAML.
ReferenceStep optionsAnchorsTriggers & stratégies
default vs branches vs pull-requests vs custom; fast vs full, nightly, release tags.
PRBranchesCustomCaches & Artifacts
AccĂ©lĂ©ration et âhandoffâ : caches (deps) vs artifacts (outputs), glob paths, download.
CacheArtifactsSpeedPipes
IntĂ©grations rĂ©utilisables (3rd party tools), âpipeâ comme bloc dâautomatisation.
IntegrationsDRY3rd-partyRunners self-hosted
ExĂ©cution sur ton infra (workspace/repo runners), routing, paritĂ© ressources, cas dâusage.
Self-hostedOn-premVPCSécurité & secrets
Variables sécurisées masquées, SSH keys, pratiques recommandées, gestion des niveaux.
SecretsMaskingHardeningDéploiements
Deployment steps, environnements (staging/prod), variables de déploiement, gates.
DeployEnvironmentsGatesBonnes pratiques
Templates, anchors, fast feedback, build once deploy many, observabilité, supply chain.
Best practicesDRYReliabilityMigration (Jenkins/Bamboo/GHA)
Mapping vers Pipelines, stratégie progressive, piÚges, checklist (runners, secrets, caches).
MigrationChecklistOpsLiens & docs
Docs officielles Atlassian : reference YAML, step options, secrets, runners, pipes.
DocsReferenceOfficialCheat-sheet
RĂ©sumĂ© opĂ©rationnel + phrase âCV-readyâ (trĂšs recruteur-friendly).
TL;DRCVOpsBitbucket Pipelines en 30 secondes
Pipelines est le moteur CI/CD de Bitbucket Cloud. Le pipeline est défini dans un fichier YAML (bitbucket-pipelines.yml) et est composé de steps exécutant des scripts (souvent dans des conteneurs Docker). La référence de configuration est fournie par Atlassian. :contentReference[oaicite:2]{index=2}
Catégorisation IDEO-Lab
Diagramme âpush â step â deployâ
Commit / PR
ââ pipelines:
default:
- step: build/test
- step: package (artifacts)
- step: deploy staging (deployment env)
- step: deploy prod (gate/approval cÎté process)
Pipeline type : fast PR + full main + deploy
pipelines:
pull-requests:
"**":
- step: { name: "Lint+Unit", script: ["ruff check .", "pytest -q"] }
branches:
main:
- step: { name: "Build", script: ["python -m build"], artifacts: ["dist/**"] }
- step:
name: "Deploy Staging"
deployment: staging
script: ["./deploy.sh staging"]
- step:
name: "Deploy Prod"
deployment: production
script: ["./deploy.sh production"]
â TrĂšs pertinent siâŠ
- Ton SCM est Bitbucket Cloud et tu veux une intĂ©gration native ârepo â CI/CDâ.
- Tu veux des intégrations rapides via Pipes. :contentReference[oaicite:6]{index=6}
- Tu as besoin dâexĂ©cution sur ton infra via Runners. :contentReference[oaicite:7]{index=7}
â ïž Points dâattention
- Self-hosted runners = Ops + hardening + monitoring (surface dâattaque).
- HygiÚne YAML : anchors, factorisation, évite duplication et drift.
- Gestion stricte des variables/secrets (scopes + masking). :contentReference[oaicite:8]{index=8}
ĂcosystĂšme Atlassian (oĂč Pipelines sâaligne bien)
- Bitbucket + Jira : traçabilitĂ© tickets â commits â builds (dans les pratiques dâĂ©quipe).
- Standardisation : conventions pipeline par repo/workspace (templates internes).
- Gouvernance : secrets masquĂ©s + runners isolĂ©s + âdeployment variablesâ. :contentReference[oaicite:9]{index=9}
ModĂšle mental
bitbucket-pipelines.yml
pipelines:
default / branches / pull-requests / custom
- step:
image: ...
caches: ...
services: ...
script: [...]
artifacts: [...]
Types de pipelines (pattern dâĂ©quipe)
| Type | But | Quand |
|---|---|---|
| default | CI basique | push général |
| pull-requests | fast feedback | PR checks |
| branches | release / deploy | main / release/* |
| custom | run ad-hoc | ops / migration / backfill |
Services (DB / Redis / etc.) â concept
Les services permettent de démarrer des conteneurs auxiliaires (ex : Postgres) accessibles depuis le step. Voir la configuration reference pour les options exactes. :contentReference[oaicite:11]{index=11}
definitions:
services:
postgres:
image: postgres:16
variables:
POSTGRES_PASSWORD: "postgres"
Anchors YAML = DRY simple
# Exemple concept
definitions:
steps:
- step: &lint_test
name: "Lint+Unit"
image: python:3.12
script:
- pip install -r requirements.txt
- ruff check .
- pytest -q
pipelines:
pull-requests:
"**":
- step: *lint_test
Structure minimale
La référence officielle décrit la structure, options globales et comportements. :contentReference[oaicite:12]{index=12}
image: atlassian/default-image:4
pipelines:
default:
- step:
name: "Build"
script:
- echo "Hello Pipelines"
Step options (caches / artifacts / etc.)
Atlassian documente les options de step, dont la gestion des artifacts (paths, download) et les patterns glob. :contentReference[oaicite:13]{index=13}
- step:
name: "Package"
script:
- python -m build
artifacts:
- "dist/**"
Exemple Django (lint + tests + report)
image: python:3.12
pipelines:
pull-requests:
"**":
- step:
name: "Lint + Unit"
caches:
- pip
script:
- pip install -U pip
- pip install -r requirements.txt
- ruff check .
- pytest -q --maxfail=1
branches:
main:
- step:
name: "Build"
caches:
- pip
script:
- pip install -U pip
- pip install -r requirements.txt
- python -m build
artifacts:
- "dist/**"
Déploiement (deployment env)
La doc référence couvre les options associées aux déploiements, et Atlassian explique aussi les variables/secrets et leur portée (repository/deployment). :contentReference[oaicite:15]{index=15}
pipelines:
branches:
main:
- step:
name: "Deploy Staging"
deployment: staging
script:
- ./deploy.sh staging
- step:
name: "Deploy Prod"
deployment: production
script:
- ./deploy.sh production
StratĂ©gie âproâ (simple et efficace)
| Canal | Objectif | Contenu | Durée cible |
|---|---|---|---|
| PR | fast feedback | lint + unit + smoke | 3â8 min |
| main | release-ready | build + packaging + artifacts | 5â12 min |
| nightly | qualité | integration + e2e + security scan | variable |
| custom | ops | migration/backfill | Ă la demande |
Cache vs artifacts : ne pas confondre
| Mécanisme | But | Exemples | PiÚge |
|---|---|---|---|
| Caches | accélérer | deps pip/npm | cache trop large |
| Artifacts | handoff outputs | dist/**, reports | artifacts âsalesâ / trop volumineux |
Artifacts (partage entre steps)
Atlassian dĂ©taille lâoption artifacts et les âartifact pathsâ via les step options. :contentReference[oaicite:16]{index=16}
- step:
name: "Build"
script:
- make build
artifacts:
- "dist/**"
- "reports/**"
3 quick wins
- Cache deps + lockfiles (pip/poetry/npm) â baisse drastique du temps.
- Artifacts = uniquement lâoutput utile pour deploy (pas tout le workspace).
- Conserver reports tests â debug âinstantâ.
Pipes = âbloc dâautomatisationâ prĂȘt Ă lâemploi
Atlassian décrit les pipes comme un moyen simple de configurer des intégrations, notamment avec des outils tiers. :contentReference[oaicite:17]{index=17}
Exemple (concept) : utilisation dâun pipe
- step:
name: "Deploy via Pipe"
script:
- pipe: atlassian/some-pipe:1.2.3
variables:
VAR1: $VAR1
VAR2: $VAR2
Gouvernance supply chain (pratique)
- Ăviter pipes inconnus non maintenus (risque supply chain).
- Pin version + review de la config (comme une dépendance code).
- Limiter secrets exposés aux pipes (scope minimal).
Pourquoi des runners ?
Atlassian indique que les runners permettent dâexĂ©cuter Pipelines sur ta propre infrastructure et prĂ©cise que tu ne seras pas facturĂ© des minutes de build utilisĂ©es par tes self-hosted runners. :contentReference[oaicite:19]{index=19}
- AccÚs réseau privé (DB interne, registry privé, VPC).
- Toolchains spécifiques (compliance, hardware, licences).
- ContrĂŽle OS + monitoring (entreprise).
Configurer un runner dans le YAML
Atlassian décrit comment cibler un runner dans bitbucket-pipelines.yml et mentionne aussi la parité de ressources / version runner. :contentReference[oaicite:20]{index=20}
# Exemple concept (les champs exacts dépendent de ta config runner)
- step:
name: "Build on Runner"
runs-on:
- "self.hosted"
- "linux"
- "prod-runner"
script:
- ./build.sh
Notes importantes
- Runners peuvent ĂȘtre ajoutĂ©s au niveau repo ou workspace (jusquâĂ 100 selon la doc). :contentReference[oaicite:21]{index=21}
- Hardening obligatoire (réseau, patching, rotation).
- Ăviter un runner âfourre-toutâ partagĂ© Ă la prod : isoler par labels/pool.
Variables & secrets (Pipelines)
Atlassian dĂ©crit les variables (dont âsecured variablesâ) et leur utilisation dans Pipelines. :contentReference[oaicite:22]{index=22}
Principe:
- variables repo/workspace/deployment
- marquer les valeurs sensibles en "secured"
- injecter via env dans les steps
Masking des variables sécurisées
Pipelines masque les variables sécurisées dans les logs : si une valeur apparaßt, elle est remplacée par $VARIABLE_NAME. :contentReference[oaicite:23]{index=23}
Pratiques recommandées (Atlassian)
Atlassian publie un article de bonnes pratiques sur la gestion des secrets : variables sĂ©curisĂ©es, SSH keys, pratiques dâartifacts, etc. :contentReference[oaicite:24]{index=24}
- Secrets uniquement au niveau nécessaire (least privilege).
- Rotation périodique + audit des usages.
- Ăviter de faire passer des secrets via artifacts (risque de fuite).
Scopes & precedence (utile en prod)
Atlassian détaille la notion de variables de dépÎt et de déploiement et leur priorité (important pour éviter collisions). :contentReference[oaicite:25]{index=25}
Pattern recommandé:
- repo variables: CI non-sensibles + defaults
- deployment variables: secrets/env spécifiques (staging/prod)
- noms clairs: STAGING_*, PROD_*
Pattern âbuild once, deploy manyâ
pipelines:
branches:
main:
- step:
name: Build
script: ["make build"]
artifacts: ["dist/**"]
- step:
name: Deploy staging
deployment: staging
script: ["./deploy.sh staging"]
- step:
name: Deploy prod
deployment: production
script: ["./deploy.sh production"]
Variables de déploiement (staging/prod)
Atlassian distingue les variables de repository et de deployment (et leur priorité). :contentReference[oaicite:27]{index=27}
Ex:
- deployment: staging
uses variables: STAGING_DB_URL, STAGING_TOKEN (secured)
- deployment: production
uses variables: PROD_DB_URL, PROD_TOKEN (secured)
Gates (processus)
- Gate âhumainâ (ex : validation release) : process interne + protection des secrets prod.
- Runner prod dédié + isolation réseau.
- Secrets prod uniquement dans âdeployment variablesâ (pas repo variables).
Top 10 (pro)
- PR = fast pipeline ; main = build + artifacts + deploy.
- Artifacts pour build outputs (pas le repo complet). :contentReference[oaicite:28]{index=28}
- Caches pour deps (pip/npm), key âstableâ (lockfiles).
- Factoriser via YAML anchors (DRY).
- Utiliser Pipes pour intégrations standard (moins de scripts). :contentReference[oaicite:29]{index=29}
- Secrets uniquement âsecured variablesâ (masked). :contentReference[oaicite:30]{index=30}
- Deployment variables pour prod/stage + gouvernance. :contentReference[oaicite:31]{index=31}
- Runners dédiés prod (isolation). :contentReference[oaicite:32]{index=32}
- Observabilité : reports tests comme artifacts, logs propres.
- Revue du YAML comme du code (PR obligatoire).
Security baseline
- Appliquer les recommandations Atlassian pour secrets/SSH keys/artifacts. :contentReference[oaicite:33]{index=33}
- Ne jamais exposer secrets via logs (mĂȘme si masquĂ©s, Ă©viter dâimprimer).
- Runner hardening + segmentation réseau.
Phrase CV-ready
Industrialisation CI/CD sur Bitbucket Pipelines : pipelines as code (bitbucket-pipelines.yml),
stratĂ©gie PR âfastâ + main ârelease-readyâ, optimisation via caches + artifacts (handoff buildâdeploy),
intĂ©grations standardisĂ©es via Pipes, sĂ©curisation par variables âsecuredâ masquĂ©es et variables de dĂ©ploiement,
et exécution hybride cloud + runners self-hosted isolés (VPC/on-prem) pour déploiements sensibles.
Mapping conceptuel
| Concept | Jenkins/Bamboo | Bitbucket Pipelines | Notes |
|---|---|---|---|
| Pipeline as code | Jenkinsfile / Plan | bitbucket-pipelines.yml | config reference :contentReference[oaicite:34]{index=34} |
| Agents | agents | cloud runners / self-hosted runners | runners :contentReference[oaicite:35]{index=35} |
| Shared libs | shared libs | Pipes + anchors YAML | pipes docs :contentReference[oaicite:36]{index=36} |
| Secrets | credentials store | secured variables (masked) + deployment vars | secrets/precedence :contentReference[oaicite:37]{index=37} |
| Artifacts | archive artifacts | artifacts step option | step options :contentReference[oaicite:38]{index=38} |
Stratégie progressive (safe)
- Pilote sur 1â2 repos (non critiques).
- Reproduire la CI âfonctionnelleâ avant dâoptimiser.
- Installer les conventions YAML (anchors, naming, structure).
- Définir la politique secrets (repo vs deployment vars, secured).
- Si besoin : déployer runners self-hosted (pool staging/prod). :contentReference[oaicite:39]{index=39}
PiÚges fréquents
- Artifacts trop gros / mal ciblĂ©s â pipelines lents. :contentReference[oaicite:40]{index=40}
- Variables âsecuredâ imprimĂ©es dans logs â masquĂ©es (confusion) et risque. :contentReference[oaicite:41]{index=41}
- Runner prod partagĂ© avec repos non-prod â surface dâattaque.
- Pipes non contrĂŽlĂ©s (supply chain) â pinning + review.
Checklist
| Item | OK ? | Notes |
|---|---|---|
| Structure YAML standard (anchors + naming) | ⏠| |
| PR fast pipeline + main release pipeline | ⏠| |
| Caches deps + artifacts build outputs | ⏠| |
| Secrets: secured variables + scopes corrects | ⏠| |
| Deployment vars staging/prod + governance | ⏠| |
| Runners: pools isolés + hardening | ⏠| |
| Pipes: pin versions + approved list | ⏠|
Docs Atlassian (Bitbucket Cloud)
- Configuration reference
- Step options (artifacts, etc.)
- Variables & secrets (secured vars, masking)
- Runners (self-hosted)
- Configure runner in YAML
- Use Pipes in Pipelines
- Recommended practices (secrets)
TL;DR
Bitbucket Pipelines = CI/CD Atlassian basé sur YAML (bitbucket-pipelines.yml) :contentReference[oaicite:43]{index=43}
- pipelines (default/branches/PR/custom) â steps
- step options: artifacts/caches/... :contentReference[oaicite:44]{index=44}
- secrets: secured variables masquées dans les logs :contentReference[oaicite:45]{index=45}
- Pipes = intégrations réutilisables :contentReference[oaicite:46]{index=46}
- Runners self-hosted sur ton infra (pas facturé en minutes de build) :contentReference[oaicite:47]{index=47}
