Using Bitbucket Pipelines

In my last post (I know it’s been a while) I described my use of Buddy.Works for the deployment process. Well since Bitbucket uses its own deployment pipelines and because for work it was better to use the same tool for everything, I started to read up on pipelines.

The result is a bitbucket-pipelines.yml file for my Bitbucket Repository which handles the build and deployment process.

yaml
image: node:10.15.3

pipelines:
  branches:
    master:
    - step:
        name: Build CSS
        caches:
          - node
        script:
          - npm install -g gulp
          - npm install
          - gulp sass
        artifacts:
          - style.css
    - step:
        name: Deploy Theme
        deployment: production
        script:
          - pipe: atlassian/rsync-deploy:0.3.2
            variables:
              USER: '$REMOTE_USER'
              SERVER: '$REMOTE_SERVER'
              REMOTE_PATH: '$REMOTE_PATH'
              LOCAL_PATH: '/opt/atlassian/pipelines/agent/build/'
              EXTRA_ARGS: '--exclude-from=deployment-exclude-list.txt'

I’m only working with a master branch but of course, you could expand that to a staging site with a development branch as well.

The first step builds the CSS out of the SCSS file and the second step uses rsync to copy the changed files from the repository to the remote server. There’s also a deployment-exclude-list.txt with a few files which don’t need to be copied.

Deployment now takes around 30-40 seconds and it’s all neatly integrated into Bitbucket, which is kinda nice.

For now, I won’t use Buddy.Works for a while, even though they have some very nice features and keep on adding new ones, like Lighthouse testing. But maybe Bitbucket will add new features as well or I will find out how to include Lighthouse testing into my pipelines as well.