CircleCI is a continuous integration system we're looking to provide support for in Review Board 3.0 as part of the rbintegrations package.

It supports GitHub and Bitbucket pull requests natively, and has an API and configuration file format used to define the builds. Unlike Travis-CI, though, we're a bit more limited in how we can interact with the configuration for a build.

This document will cover some notes on what's available to us.

Target Version

CircleCI, at the time of this writing, is on 1.0, but 2.0 is in beta. It's designed to fix a lot of issues with configuration, making things more flexible. It's also backwards-incompatible with CircleCI 1.0.

We are absolutely going to want to target 2.0.

It's worth noting that these features are in Beta, and we may need to adjust things as they approach 2.0 final.

Configuration

CircleCI has a config.yml file that defines the build. This must exist in the .circlecidirectory at the root of a repository, and cannot be overridden when forcing a build.

As of CircleCI 2.0, this file is broken up into "jobs". Each job is a complete configuration for CI, and is roughly equivalent to what CircleCI 1.0's config.yml would be. By default, the build job is run whenever there's a new commit or a triggered build, but we can override this when manually triggering a build in 2.0.

We would want to standardize on something like a reviewboard job that would perform any automated review and reporting. We'd document what's needed for this, providing sample WebHook URLs, etc.

See https://circleci.com/docs/2.0/configuration-reference/