Javascript (Node.js) with Bitbucket Pipelines

This guide shows you how to use Bitbucket Pipelines for building and testing a Node.js software project in a Docker container.

If you'd prefer to quickly import a demo repository with a working pipeline to experiment with, have a look at our demo node repo.
Instructions to import the demo repo

For this demo, all you need to do is import this repo and enable pipelines to get your first pipeline to run!

  1. Import this repository by visiting bitbucket.org and log in. Then:

    Import gif

  2. On the left navigation bar, click Pipelines and scroll down to view the bitbucket-pipelines.yml file. Click Enable

    Enable gif

  3. Watch your build run!

    Build gif 

  4. Note: Bitbucket Pipelines includes fifty free minutes per account, at the time of writing. You can check your team or account's minutes usage for the month by clicking your Avatar > Bitbucket settings > Plan details.




If you'd like to set it up by hand, most of the configuration happens in the bitbucket-pipelines.yml file that Pipelines uses to define the build.

 

Specify your Node.js version with Docker

Bitbucket Pipelines runs all your builds in Docker containers using an image that you provide at the beginning of your configuration file. You can easily use Node.js with Bitbucket Pipelines by using one of the official Node.js Docker images on Docker Hub. 

For instance, you can use Node.js 10.15.0 by specifying it at the beginning of your bitbucket-pipelines.yml file.

image: node:10.15.0
pipelines:
  default:
    - step:
        script:
          - node -v

If you wanted to use a different version of Node.js you simply need to change the tag of the Node.js Docker image. The example below would start a container with Node 4.7.2:

image: node:4.7.2

To find a list of all supported Node.js versions and corresponding image tags, please refer to https://hub.docker.com/_/node/.

You can check your bitbucket-pipelines.yml file with our online validator.

Install dependencies

Manage dependencies with npm

The default Node.js image on Docker Hub comes with npm installed by default. You can use it directly in your script to install specific packages locally or globally.

If you are using a package.json file, you can simply run npm install at the beginning of your script to install all the required dependencies:

image: node:10.15.0
pipelines:
  default:
    - step:
        script:
          - npm install

Manage dependencies with Yarn

The default Node.js image on Docker Hub comes with yarn installed by default. You can use it directly in your script to install specific packages locally or globally.

image: node:10.15.0
pipelines:
  default:
    - step:
        script:
          - yarn

Install dependencies globally (Gulp, Grunt, Angular CLI...)

Node packages can also be installed globally. For instance, if your pipeline depends on a task runner like Gulp or Grunt, you will need to install them globally. You can use the npm install -g command if you're using npm as your package manager:

npm install -g grunt-cli
npm install
grunt

or use yarn global add if you're using Yarn.

yarn global add grunt-cli
yarn
grunt

Download and publish modules to a private registry

If you are using private modules from either the public npm registry or your own private registry you can simply check in a .npmrc file at the root of your repository using repository variables. To avoid conflict with the local ~/.npmrc file during development you can simply name it .npmrc_config and rename it as part of the pipeline script.

.npmrc_config
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
registry=https://registry.npmjs.org

If you are using a private npm registry you just need to replace registry.npmjs.org with the address of your registry.

Then configure the following variable in Bitbucket Pipelines:

  • NPM_TOKEN: This is the authentication token to your registry. You can find it in your local ~/.npmrc, after you login to your registry.

Your bitbucket-pipelines.yml script will then look like the following to install your private dependencies.

bitbucket-pipelines.yml
image: node:10.15.0
pipelines:
  default:
    - step:
        script:
          - mv .npmrc_config .npmrc
          - npm install

Testing

You simply need to add to your bitbucket-pipelines.yml file the same commands that you would run locally to test your application. For instance, if you are running npm test locally to run your test suite the following example should work for you.

image: node:10.15.0
pipelines:
  default:
    - step:
        script:
          - npm install
          - npm test

Databases

Use a service container to run a database in your pipeline.

Deployment

Now you've built and tested your project you might want to deploy it somewhere. Have a look at our deployment guides for your next steps.


Last modified on Jun 25, 2019

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.