GraphCool Continuous Deployment with Bitbucket Pipelines

Easily and automatically deploy working GraphCool code to a GraphCool cluster using Bitbucket Pipelines.

John Paul Ada
GAPLabs Engineering
2 min readMay 13, 2018

--

If you can automate it, you should.

We all try to live by this, but it’s not always easy. Automation is not the easiest thing to do. But it should be. And continuously deploying a GraphCool server with Bitbucket Pipelines is. Because we use Bitbucket everyday, it’s a no-brainer that we’d use Bitbucket Pipelines as our service of choice.

In order to deploy a GraphCool server, we just need to do these steps:

  1. Install the GraphCool CLI.
  2. Install dependencies.
  3. Run graphcool deploy.

In order to automate this with Bitbucket Pipelines, we need a bitbucket-pipelines.yml and some environment variables.

bitbucket-pipelines.yml

Our bitbucket-pipelines.yml.

That’s it. Just include this bitbucket-pipelines.yml file in your root directory and push some changes to the master or dev branches. It will then begin the build and deploy. If you think this is confusing, here’s a little breakdown.

Breakdown

This pipeline uses the johnpaulada/graphcool image as its runtime image, which is just a Node image with the GraphCool CLI installed. This takes care of the step 1 above.

After loading the image, it will then start installing the dependencies with Yarn. This takes care of step 2. If the yarn.lock or package.json have not changed, Pipelines caches the node_modules folder, making the installation process faster.

After that, graphcool deploy is run, which starts the deployment process. It knows where to deploy it from the GRAPHCOOL_TARGET environment variable. If deploying to dev, we use the GRAPHCOOL_TARGET_STAGING instead. This takes care of step 3.

Environment Variables

We need the GRAPHCOOL_TARGET, GRAPHCOOL_PLATFORM_TARGET, and GRAPHCOOL_TARGET_STAGING environment variables. You can get the GRAPHCOOL_TARGET and GRAPHCOOL_TARGET_STAGING from your .graphcoolrc file. The GRAPHCOOL_PLATFORM_TARGET is in your ~/.graphcoolrc file.

If you liked this post, clap away! 😄

--

--