LogoDuyệtSr. Data Engineer
HomeAboutPhotosInsightsCV

Footer

Logo

Resources

  • Rust Tiếng Việt
  • /archives
  • /series
  • /tags
  • Status

me@duyet.net

  • About
  • LinkedIn
  • Resume
  • Projects

© 2026 duyet.net | Sr. Data Engineer | 2026-02-27

Bitbucket Pipelines Notes

Note: This post is over 5 years old. The information may be outdated.

Bitbucket Pipelines document is fragmented everywhere. It always makes me search for a while every time I write a new one for CI/CD. So I'll make a few notes here.

Tips and tricks

Bitbucket Validator Tool

You can validate the bitbucket-pipelines.yml YAML format by using this tool: https://bitbucket-pipelines.atlassian.io/validator

Skip trigger the pipelines

You can include [skip ci] or [ci skip] anywhere in your commit message of the HEAD commit. Any commits that include [skip ci] or [ci skip] in the message are ignored by Pipelines.

Ref: https://support.atlassian.com/bitbucket-cloud/docs/bitbucket-pipelines-faqs/

Configure bitbucket-pipelines.yml

Build on branch

pipelines:
  branches: # Pipelines that run automatically on a commit to a branch
    staging:
      - step:
          script:
            - ...

Pull Requests

pipelines:
  pull-requests:
    '**': #this runs as default for any branch not elsewhere defined
      - step:
          script:
            - ...
    feature/*: #any branch with a feature prefix
      - step:
          script:
            - ...

Parallel

pipelines:
  branches:
    master:
      - step: # non-parallel step
          name: Build
          script:
            - ./build.sh
      - parallel: # these 2 steps will run in parallel
          - step:
              name: Integration 1
              script:
                - ./integration-tests.sh --batch 1
          - step:
              name: Integration 2
              script:
                - ./integration-tests.sh --batch 2

Reuse steps

definitions:
  steps:
    - step: &build-test
        name: Build and test
        script:
          - yarn && yarn build

pipelines:
  branches:
    develop:
      - step: *build-test
    main:
      - step: *build-test
    master:
      - step:
        <<: *build-test
        name: Testing on master

Override values

definitions:
  steps:
    - step: &build-test
        name: Build and test
        script:
          - yarn && yaml build

pipelines:
  branches:
    develop:
      - step:
        <<: *build-test
        name: Testing on master

Reuse scripts

definitions:
  scripts:
    - script: &script-build-and-test |-
        yarn
        yarn test

pipelines:
  branches:
    develop:
      - step:
          name: Build and test and deploy
          script:
            - export NODE_ENV=develop
            - *script-build-and-test

Script multiple lines

Using literal style block scalar:

pipelines:
  branches:
    develop:
      - step:
          name: Build and test and deploy
          script:
            - |
              export NODE_ENV=develop DEBUG=false
              yarn
              yarn test
              yarn build

or folder block style:

pipelines:
  branches:
    develop:
      - step:
          name: Build and test and deploy
          script:
            - >
              export NODE_ENV=develop DEBUG=false
              yarn
              yarn test
              yarn build

Using service for one step

pipelines:
  branches:
    develop:
      - step:
        <<: *build-test
        name: Testing on master
        caches: [docker]
        services: [docker]

Increase Docker memory

The Docker-in-Docker daemon used for Docker operations in Pipelines is treated as a service container, and so has a default memory limit of 1024 MB

This can also be adjusted to any value between 128 MB and 3072 or 7128 MB (2x - 8192 MB total, 1024 MB reserved).

definitions:
  services:
    docker:
      memory: 2048

2x for all steps

options:
  size: 2x

definitions:
  services:
    docker:
      memory: 7128


pipelines:
  branches:
    develop:
      - step:
        <<: *build-test
        name: Testing on master
        caches: [docker]
        services: [docker]

2x for one step

pipelines:
  branches:
    develop:
      - step:
        <<: *build-test
        name: Testing on master
        caches: [docker]
        services: [docker]
        size: 2x

Environment Variables

Pipelines provides a set of default variables that are available for builds, and can be used in scripts: https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets/

Aug 27, 2021·5 years ago
|Productivity|
Data EngineeringGit
|Edit|

Related Posts

Uptime with GitHub Actions

Hey, I just found this tool, so incredibly clever that it uses Github Actions for uptime monitor and status page.

Sep 20, 2021·4 years ago
Read more

From Docker to Podman on MacOS

I'm looking for some of alternatives for Docker. Currently, there are a few of container technologies which are Docker’s most direct competitors, such as rkt, Podman, containerd, ...

Sep 5, 2021·4 years ago
Read more

zx

A tool for writing better scripts. I usually choose to write a Python or Deno script instead of a shell script for more convenience. I found this tool is so great, helping to write the script quickly.

Aug 28, 2021·5 years ago
Read more

My Neovim Setup in 2023

It's been years since I first started using neovim and I've been updating it regularly ever since.

Sep 4, 2023·2 years ago
Read more
On this page
  • Bitbucket Validator Tool
  • Skip trigger the pipelines
  • Configure bitbucket-pipelines.yml
  • Build on branch
  • Pull Requests
  • Parallel
  • Reuse steps
  • Reuse scripts
  • Script multiple lines
  • Using service for one step
  • Increase Docker memory
  • 2x for all steps
  • 2x for one step
  • Environment Variables
On this page
  • Bitbucket Validator Tool
  • Skip trigger the pipelines
  • Configure bitbucket-pipelines.yml
  • Build on branch
  • Pull Requests
  • Parallel
  • Reuse steps
  • Reuse scripts
  • Script multiple lines
  • Using service for one step
  • Increase Docker memory
  • 2x for all steps
  • 2x for one step
  • Environment Variables