Basi delle Pipeline
Come Funziona
bitbucket-pipelines.ymlFile di configurazione nella root del repository
Container DockerOgni step viene eseguito nel proprio container
TriggerPush, PR, tag, pianificazione o manuale
Build minutesQuota dipende dal piano
Abilitare le Pipeline
# Impostazioni Repository → Pipeline → Abilita # Aggiungere bitbucket-pipelines.yml alla root del repo # Il primo push attiva la pipeline
bitbucket-pipelines.yml
Configurazione Minimale
image: node:20 pipelines: default: - step: script: - npm install - npm test
Pipeline Specifiche per Branch
pipelines: branches: main: - step: script: - npm run build - npm run deploy
Pipeline per Tag e Pull Request
pipelines: tags: 'v*': - step: script: - npm run release pull-requests: '**': - step: script: - npm test
Step
Opzioni Step
nameNome visualizzato dello step
imageOverride immagine Docker globale
scriptLista di comandi shell da eseguire
size1x (4GB) o 2x (8GB) di memoria
max-timeTimeout in minuti (default 120)
triggermanual per step solo manuali
Step Paralleli
- parallel: - step: name: "Lint" script: - npm run lint - step: name: "Test" script: - npm test
Step Manuale
- step: name: "Deploy in Produzione" trigger: manual script: - ./deploy.sh prod
Variabili
Tipi di Variabili
Variabili repositoryImpostazioni → Pipeline → Variabili
Variabili deploymentScoped a un ambiente di deployment
Variabili protetteCifrate, mascherate nei log
Variabili pipelineDefinite inline nello YAML
Usare le Variabili
pipelines: default: - step: script: - echo $MY_VAR - docker login -u $DOCKER_USER -p $DOCKER_PASS
Variabili Predefinite
$BITBUCKET_COMMITSHA completo del commit
$BITBUCKET_BRANCHNome del branch
$BITBUCKET_TAGNome del tag (pipeline tag)
$BITBUCKET_BUILD_NUMBERNumero build incrementale
$BITBUCKET_REPO_SLUGSlug del repository
Caching
Cache Predefinite
- step: caches: - node # ~/.npm - pip # ~/.cache/pip - docker # cache layer Docker script: - npm install - npm test
Cache Personalizzata
definitions: caches: gradle: ~/.gradle/caches mylibs: vendor/libs pipelines: default: - step: caches: - gradle script: - ./gradlew build
Comportamento della Cache
DurataLe cache scadono dopo 7 giorni
ScopeCondivisa tra tutte le pipeline del repo
EliminaPipeline → Cache → Elimina
Artifact
Passare File tra Step
- step: name: "Build" script: - npm run build artifacts: - dist/** - step: name: "Deploy" script: - ls dist/ # artifact disponibili - ./deploy.sh
Opzioni Artifact
artifactsPattern glob per i file da passare
DownloadDisponibili automaticamente negli step successivi
Dimensione max1 GB per step
ConservazioneDisponibili per 14 giorni dopo la build
Deployment
Ambienti di Deployment
- step: name: "Deploy Staging" deployment: staging script: - ./deploy.sh staging - step: name: "Deploy Produzione" deployment: production trigger: manual script: - ./deploy.sh prod
Tipi di Ambiente
testAmbiente di test
stagingAmbiente pre-produzione
productionAmbiente live, monitorato nella dashboard
Pattern Comuni
Build e 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
Container di Servizio
definitions: services: postgres: image: postgres:16 variables: POSTGRES_DB: testdb POSTGRES_PASSWORD: secret pipelines: default: - step: services: - postgres script: - npm test
Step Condizionale con Pipe
- step: name: "Deploy su 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/