API Docs

ClusterRunner is built around a REST API. We use HMAC along with a configurable application secret for securing communication between service components. JSON is returned in all responses, and is used in POST requests.

Authentication

You authenticate a request by providing a header key-value pair for ClusterRunner-Message-Authentication-Digest. The value of the HMAC is generated using the body of the request along with a secret is located in clusterrunner.conf.

Responses

ClusterRunner uses HTTP response codes to indicate success or failure as well as a JSON body for additional information. The JSON response will include request specific information, along with a STATUS field that will either be SUCCESS or FAILURE.

Versioning

We version all of our APIs and make a major version bump whenever we make incompatible changes. Currently we are on v1.

Builds

The build endpoint is located on the ClusterRunner master.

List all builds

Request

GET /build

Response

{
  "builds": [
    {
      ...
    }
  ],
  "child_routes": {
    ...
  }
}

Get information about a single build

Request

GET /build/1/

Response

"build": {
    "details": "534 of 637 subjobs are complete (83.8%).",
    "num_subjobs": 637,
    "failed_atoms": null,
    "artifacts": null,
    "status": "BUILDING",
    "result": null,
    "num_atoms": 2684,
    "id": 1,
    "error_message": null
}

Creating a new build

To run a new build, you create a new build object. The response will contain the id of the new build object, which you can can later poll for the status of your build. A build can have a status of either BUILDING, SUCCESS, or FAILURE. While a request is building, certain fields on the object may remain null. On completion, all the fields will contain their actual values.

Request

POST /build

Creating a new build object requires properly authenticating your request with the correct HMAC, (see Authentication), and providing a JSON body that defines your build. Here are the available arguments for creating a build:

Name Description

type

Required

The project type of the new build. Should be set to "git".

job_name

Required

The name of the job to run on the new build.

url

Required

url to the git repo

remote

Optional

The git remote name to fetch from

branch

Optional

The git remote branch name to fetch from

hash

Optional

The git hash on the remote to reset hard to

remote_files

Optional

JSON dictionary that maps downloadable URI's to output file names. If present, each URI will be downloaded into the build workspace under the specified name.

Response

202 ACCEPTED

{"build_id": 1, "STATUS": "SUCCESS"}