Básico de Pipelines
Como Funciona
bitbucket-pipelines.ymlArquivo de configuração na raiz do repositório
Docker containersCada step executa em seu próprio container
TriggersPush, PR, tag, agendamento ou manual
Build minutesCota depende do plano contratado
Habilitar Pipelines
# Repository Settings → Pipelines → Enable # Add bitbucket-pipelines.yml to repo root # First push triggers the pipeline
bitbucket-pipelines.yml
Configuração Mínima
image: node:20 pipelines: default: - step: script: - npm install - npm test
Pipelines por Branch
pipelines: branches: main: - step: script: - npm run build - npm run deploy
Pipelines de Tag e Pull Request
pipelines: tags: 'v*': - step: script: - npm run release pull-requests: '**': - step: script: - npm test
Steps
Opções de Step
nameNome de exibição do step
imageSobrescrever imagem Docker global
scriptLista de comandos shell a executar
size1x (4GB) ou 2x (8GB) de memória
max-timeTimeout em minutos (padrão 120)
triggermanual para steps somente manuais
Steps em Paralelo
- parallel: - step: name: "Lint" script: - npm run lint - step: name: "Test" script: - npm test
Step Manual
- step: name: "Deploy to Production" trigger: manual script: - ./deploy.sh prod
Variáveis
Tipos de Variáveis
Repository variablesSettings → Pipelines → Variables
Deployment variablesCom escopo para um ambiente de deploy
Secured variablesCriptografadas, mascaradas nos logs
Pipeline variablesDefinidas inline no YAML
Usando Variáveis
pipelines: default: - step: script: - echo $MY_VAR - docker login -u $DOCKER_USER -p $DOCKER_PASS
Variáveis Embutidas
$BITBUCKET_COMMITSHA completo do commit
$BITBUCKET_BRANCHNome da branch
$BITBUCKET_TAGNome da tag (pipelines de tag)
$BITBUCKET_BUILD_NUMBERNúmero de build incremental
$BITBUCKET_REPO_SLUGSlug do repositório
Cache
Caches Predefinidos
- step: caches: - node # ~/.npm - pip # ~/.cache/pip - docker # Docker layer cache script: - npm install - npm test
Cache Personalizado
definitions: caches: gradle: ~/.gradle/caches mylibs: vendor/libs pipelines: default: - step: caches: - gradle script: - ./gradlew build
Comportamento do Cache
DurationCaches expiram após 7 dias
ScopeCompartilhado entre todos os pipelines do repositório
ClearPipelines → Caches → Delete
Artefatos
Passar Arquivos Entre Steps
- step: name: "Build" script: - npm run build artifacts: - dist/** - step: name: "Deploy" script: - ls dist/ # artifacts available - ./deploy.sh
Opções de Artefatos
artifactsPadrões glob para arquivos a passar
DownloadDisponível em steps subsequentes automaticamente
Max size1 GB por step
RetentionDisponível por 14 dias após o build
Deploys
Ambientes de Deploy
- step: name: "Deploy Staging" deployment: staging script: - ./deploy.sh staging - step: name: "Deploy Production" deployment: production trigger: manual script: - ./deploy.sh prod
Tipos de Ambiente
testAmbiente de testes
stagingAmbiente de pré-produção
productionAmbiente de produção, rastreado no dashboard
Padrões Comuns
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
Containers de Serviço
definitions: services: postgres: image: postgres:16 variables: POSTGRES_DB: testdb POSTGRES_PASSWORD: secret pipelines: default: - step: services: - postgres script: - npm test
Step Condicional com Pipe
- step: name: "Deploy to 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/