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"}
