2016-01-05 10:36:14 -05:00
# Builds API
## List project builds
Get a list of builds in a project.
```
GET /projects/:id/builds
```
2016-02-10 09:07:11 -05:00
| Attribute | Type | Required | Description |
2016-01-13 15:19:18 -05:00
|-----------|---------|----------|---------------------|
2016-02-10 08:31:30 -05:00
| `id` | integer | yes | The ID of a project |
2016-02-10 09:07:11 -05:00
| `scope` | string **or** array of strings | no | The scope of builds to show, one or array of: `pending` , `running` , `failed` , `success` , `canceled` ; showing all builds if none provided |
2016-01-13 15:19:18 -05:00
```
2016-01-27 07:16:37 -05:00
curl -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v3/projects/1/builds"
2016-01-13 15:19:18 -05:00
```
2016-02-10 08:31:30 -05:00
Example of response
2016-01-05 10:36:14 -05:00
```json
[
2016-06-10 15:45:06 -04:00
{
"commit": {
"author_email": "admin@example.com",
"author_name": "Administrator",
"created_at": "2015-12-24T16:51:14.000+01:00",
"id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
"message": "Test the CI integration.",
"short_id": "0ff3ae19",
"title": "Test the CI integration."
},
"coverage": null,
"created_at": "2015-12-24T15:51:21.802Z",
"artifacts_file": {
"filename": "artifacts.zip",
"size": 1000
},
"finished_at": "2015-12-24T17:54:27.895Z",
"id": 7,
"name": "teaspoon",
"ref": "master",
"runner": null,
"stage": "test",
"started_at": "2015-12-24T17:54:27.722Z",
"status": "failed",
"tag": false,
"user": {
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80& d=identicon",
"bio": null,
"created_at": "2015-12-21T13:14:24.077Z",
"id": 1,
"is_admin": true,
"linkedin": "",
"name": "Administrator",
"skype": "",
"state": "active",
"twitter": "",
"username": "root",
"web_url": "http://gitlab.dev/u/root",
"website_url": ""
}
},
{
"commit": {
"author_email": "admin@example.com",
"author_name": "Administrator",
"created_at": "2015-12-24T16:51:14.000+01:00",
"id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
"message": "Test the CI integration.",
"short_id": "0ff3ae19",
"title": "Test the CI integration."
2016-01-05 10:36:14 -05:00
},
2016-06-10 15:45:06 -04:00
"coverage": null,
"created_at": "2015-12-24T15:51:21.727Z",
"artifacts_file": null,
"finished_at": "2015-12-24T17:54:24.921Z",
"id": 6,
"name": "spinach:other",
"ref": "master",
"runner": null,
"stage": "test",
"started_at": "2015-12-24T17:54:24.729Z",
"status": "failed",
"tag": false,
"user": {
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80& d=identicon",
"bio": null,
"created_at": "2015-12-21T13:14:24.077Z",
"id": 1,
"is_admin": true,
"linkedin": "",
"name": "Administrator",
"skype": "",
"state": "active",
"twitter": "",
"username": "root",
"web_url": "http://gitlab.dev/u/root",
"website_url": ""
2016-01-05 10:36:14 -05:00
}
2016-06-10 15:45:06 -04:00
}
2016-01-05 10:36:14 -05:00
]
```
## List commit builds
Get a list of builds for specific commit in a project.
2016-06-28 06:55:23 -04:00
This endpoint will return all builds, from all pipelines for a given commit.
If the commit SHA is not found, it will respond with 404, otherwise it will
return an array of builds (an empty array if there are no builds for this
particular commit).
2016-01-05 10:36:14 -05:00
```
2016-01-11 05:15:04 -05:00
GET /projects/:id/repository/commits/:sha/builds
2016-01-05 10:36:14 -05:00
```
2016-02-10 09:07:11 -05:00
| Attribute | Type | Required | Description |
2016-01-13 15:19:18 -05:00
|-----------|---------|----------|---------------------|
2016-02-10 08:31:30 -05:00
| `id` | integer | yes | The ID of a project |
| `sha` | string | yes | The SHA id of a commit |
2016-02-12 04:25:20 -05:00
| `scope` | string **or** array of strings | no | The scope of builds to show, one or array of: `pending` , `running` , `failed` , `success` , `canceled` ; showing all builds if none provided |
2016-01-13 15:19:18 -05:00
```
2016-01-27 07:16:37 -05:00
curl -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v3/projects/1/repository/commits/0ff3ae198f8601a285adcf5c0fff204ee6fba5fd/builds"
2016-01-13 15:19:18 -05:00
```
2016-02-10 08:31:30 -05:00
Example of response
2016-01-05 10:36:14 -05:00
```json
2016-01-12 05:50:14 -05:00
[
2016-06-10 15:45:06 -04:00
{
"commit": {
"author_email": "admin@example.com",
"author_name": "Administrator",
"created_at": "2015-12-24T16:51:14.000+01:00",
"id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
"message": "Test the CI integration.",
"short_id": "0ff3ae19",
"title": "Test the CI integration."
2016-01-05 10:36:14 -05:00
},
2016-06-10 15:45:06 -04:00
"coverage": null,
"created_at": "2016-01-11T10:13:33.506Z",
"artifacts_file": null,
"finished_at": "2016-01-11T10:14:09.526Z",
"id": 69,
"name": "rubocop",
"ref": "master",
"runner": null,
"stage": "test",
"started_at": null,
"status": "canceled",
"tag": false,
"user": null
},
{
"commit": {
"author_email": "admin@example.com",
"author_name": "Administrator",
"created_at": "2015-12-24T16:51:14.000+01:00",
"id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
"message": "Test the CI integration.",
"short_id": "0ff3ae19",
"title": "Test the CI integration."
},
"coverage": null,
"created_at": "2015-12-24T15:51:21.957Z",
"artifacts_file": null,
"finished_at": "2015-12-24T17:54:33.913Z",
"id": 9,
"name": "brakeman",
"ref": "master",
"runner": null,
"stage": "test",
"started_at": "2015-12-24T17:54:33.727Z",
"status": "failed",
"tag": false,
"user": {
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80& d=identicon",
"bio": null,
"created_at": "2015-12-21T13:14:24.077Z",
"id": 1,
"is_admin": true,
"linkedin": "",
"name": "Administrator",
"skype": "",
"state": "active",
"twitter": "",
"username": "root",
"web_url": "http://gitlab.dev/u/root",
"website_url": ""
2016-01-05 10:36:14 -05:00
}
2016-06-10 15:45:06 -04:00
}
2016-01-05 10:36:14 -05:00
]
2016-01-12 05:50:14 -05:00
```
## Get a single build
2016-01-05 10:36:14 -05:00
Get a single build of a project
```
GET /projects/:id/builds/:build_id
```
2016-02-10 09:07:11 -05:00
| Attribute | Type | Required | Description |
2016-02-10 08:31:30 -05:00
|------------|---------|----------|---------------------|
| `id` | integer | yes | The ID of a project |
| `build_id` | integer | yes | The ID of a build |
2016-01-13 15:19:18 -05:00
```
2016-01-27 07:16:37 -05:00
curl -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v3/projects/1/builds/8"
2016-01-13 15:19:18 -05:00
```
2016-02-10 08:31:30 -05:00
Example of response
2016-01-05 10:36:14 -05:00
```json
{
2016-06-10 15:45:06 -04:00
"commit": {
"author_email": "admin@example.com",
"author_name": "Administrator",
"created_at": "2015-12-24T16:51:14.000+01:00",
"id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
"message": "Test the CI integration.",
"short_id": "0ff3ae19",
"title": "Test the CI integration."
},
"coverage": null,
"created_at": "2015-12-24T15:51:21.880Z",
"artifacts_file": null,
"finished_at": "2015-12-24T17:54:31.198Z",
"id": 8,
"name": "rubocop",
"ref": "master",
"runner": null,
"stage": "test",
"started_at": "2015-12-24T17:54:30.733Z",
"status": "failed",
"tag": false,
"user": {
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80& d=identicon",
"bio": null,
"created_at": "2015-12-21T13:14:24.077Z",
"id": 1,
"is_admin": true,
"linkedin": "",
"name": "Administrator",
"skype": "",
"state": "active",
"twitter": "",
"username": "root",
"web_url": "http://gitlab.dev/u/root",
"website_url": ""
}
2016-01-05 10:36:14 -05:00
}
```
2016-02-19 14:56:56 -05:00
## Get build artifacts
2016-02-08 16:32:36 -05:00
2016-02-22 07:30:22 -05:00
> [Introduced][ce-2893] in GitLab 8.5
2016-02-19 14:56:56 -05:00
Get build artifacts of a project
2016-02-08 16:32:36 -05:00
```
GET /projects/:id/builds/:build_id/artifacts
```
2016-02-20 07:13:21 -05:00
| Attribute | Type | Required | Description |
|------------|---------|----------|---------------------|
| `id` | integer | yes | The ID of a project |
| `build_id` | integer | yes | The ID of a build |
2016-02-08 16:32:36 -05:00
```
2016-02-20 07:13:21 -05:00
curl -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v3/projects/1/builds/8/artifacts"
2016-02-08 16:32:36 -05:00
```
2016-02-20 07:13:21 -05:00
Response:
2016-02-08 16:32:36 -05:00
| Status | Description |
|-----------|---------------------------------|
| 200 | Serves the artifacts file |
| 404 | Build not found or no artifacts |
2016-02-22 07:30:22 -05:00
[ce-2893]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/2893
2016-07-21 05:34:36 -04:00
## Download the artifacts file
> [Introduced][ce-5347] in GitLab 8.10.
Download the artifacts file from the given reference name and job provided the
build finished successfully.
```
2016-07-21 07:20:25 -04:00
GET /projects/:id/builds/artifacts/:ref_name/download?job=name
2016-07-21 05:34:36 -04:00
```
Parameters
| Attribute | Type | Required | Description |
|-------------|---------|----------|-------------------------- |
| `id` | integer | yes | The ID of a project |
| `ref_name` | string | yes | The ref from a repository |
| `job` | string | yes | The name of the job |
Example request:
```
2016-07-21 07:20:25 -04:00
curl -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v3/projects/1/builds/artifacts/master/download?job=test"
2016-07-21 05:34:36 -04:00
```
Example response:
| Status | Description |
|-----------|---------------------------------|
| 200 | Serves the artifacts file |
| 404 | Build not found or no artifacts |
[ce-5347]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5347
2016-06-03 13:56:26 -04:00
## Get a trace file
Get a trace of a specific build of a project
```
GET /projects/:id/builds/:build_id/trace
```
| Attribute | Type | Required | Description |
|------------|---------|----------|---------------------|
| id | integer | yes | The ID of a project |
| build_id | integer | yes | The ID of a build |
```
curl -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v3/projects/1/builds/8/trace"
```
Response:
| Status | Description |
|-----------|-----------------------------------|
| 200 | Serves the trace file |
| 404 | Build not found or no trace file |
2016-01-05 10:36:14 -05:00
## Cancel a build
Cancel a single build of a project
```
POST /projects/:id/builds/:build_id/cancel
```
2016-02-10 09:07:11 -05:00
| Attribute | Type | Required | Description |
2016-02-10 08:31:30 -05:00
|------------|---------|----------|---------------------|
| `id` | integer | yes | The ID of a project |
| `build_id` | integer | yes | The ID of a build |
2016-01-13 15:19:18 -05:00
```
2016-01-27 07:16:37 -05:00
curl -X POST -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v3/projects/1/builds/1/cancel"
2016-01-13 15:19:18 -05:00
```
2016-01-05 10:36:14 -05:00
2016-02-10 08:31:30 -05:00
Example of response
2016-01-05 10:36:14 -05:00
```json
{
2016-06-10 15:45:06 -04:00
"commit": {
"author_email": "admin@example.com",
"author_name": "Administrator",
"created_at": "2015-12-24T16:51:14.000+01:00",
"id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
"message": "Test the CI integration.",
"short_id": "0ff3ae19",
"title": "Test the CI integration."
},
"coverage": null,
"created_at": "2016-01-11T10:13:33.506Z",
"artifacts_file": null,
"finished_at": "2016-01-11T10:14:09.526Z",
"id": 69,
"name": "rubocop",
"ref": "master",
"runner": null,
"stage": "test",
"started_at": null,
"status": "canceled",
"tag": false,
"user": null
2016-01-05 10:36:14 -05:00
}
```
## Retry a build
Retry a single build of a project
```
POST /projects/:id/builds/:build_id/retry
```
2016-02-10 09:07:11 -05:00
| Attribute | Type | Required | Description |
2016-02-10 08:31:30 -05:00
|------------|---------|----------|---------------------|
| `id` | integer | yes | The ID of a project |
| `build_id` | integer | yes | The ID of a build |
2016-01-13 15:19:18 -05:00
```
2016-01-27 07:16:37 -05:00
curl -X POST -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v3/projects/1/builds/1/retry"
2016-01-13 15:19:18 -05:00
```
2016-01-05 10:36:14 -05:00
2016-02-10 08:31:30 -05:00
Example of response
2016-01-05 10:36:14 -05:00
```json
{
2016-06-10 15:45:06 -04:00
"commit": {
"author_email": "admin@example.com",
"author_name": "Administrator",
"created_at": "2015-12-24T16:51:14.000+01:00",
"id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
"message": "Test the CI integration.",
"short_id": "0ff3ae19",
"title": "Test the CI integration."
},
"coverage": null,
"created_at": "2016-01-11T10:13:33.506Z",
"artifacts_file": null,
"finished_at": null,
"id": 69,
"name": "rubocop",
"ref": "master",
"runner": null,
"stage": "test",
"started_at": null,
"status": "pending",
"tag": false,
"user": null
2016-01-05 10:36:14 -05:00
}
```
2016-02-04 06:03:47 -05:00
## Erase a build
Erase a single build of a project (remove build artifacts and a build trace)
```
2016-02-16 03:30:58 -05:00
POST /projects/:id/builds/:build_id/erase
2016-02-04 06:03:47 -05:00
```
Parameters
2016-07-21 05:34:36 -04:00
| Attribute | Type | Required | Description |
2016-02-16 03:30:58 -05:00
|-------------|---------|----------|---------------------|
2016-02-04 06:03:47 -05:00
| `id` | integer | yes | The ID of a project |
2016-02-16 03:30:58 -05:00
| `build_id` | integer | yes | The ID of a build |
2016-02-04 06:03:47 -05:00
Example of request
```
2016-02-16 03:30:58 -05:00
curl -X POST -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v3/projects/1/builds/1/erase"
2016-02-04 06:03:47 -05:00
```
Example of response
```json
{
2016-06-10 15:45:06 -04:00
"commit": {
"author_email": "admin@example.com",
"author_name": "Administrator",
"created_at": "2015-12-24T16:51:14.000+01:00",
"id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
"message": "Test the CI integration.",
"short_id": "0ff3ae19",
"title": "Test the CI integration."
},
"coverage": null,
"download_url": null,
"id": 69,
"name": "rubocop",
"ref": "master",
"runner": null,
"stage": "test",
"created_at": "2016-01-11T10:13:33.506Z",
"started_at": "2016-01-11T10:13:33.506Z",
"finished_at": "2016-01-11T10:15:10.506Z",
"status": "failed",
"tag": false,
"user": null
2016-02-04 06:03:47 -05:00
}
```
2016-06-10 11:11:27 -04:00
## Keep artifacts
2016-06-10 15:45:06 -04:00
Prevents artifacts from being deleted when expiration is set.
2016-06-10 11:11:27 -04:00
```
POST /projects/:id/builds/:build_id/artifacts/keep
```
Parameters
2016-07-21 05:34:36 -04:00
| Attribute | Type | Required | Description |
2016-06-10 11:11:27 -04:00
|-------------|---------|----------|---------------------|
| `id` | integer | yes | The ID of a project |
| `build_id` | integer | yes | The ID of a build |
2016-06-10 15:45:06 -04:00
Example request:
2016-06-10 11:11:27 -04:00
```
curl -X POST -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v3/projects/1/builds/1/artifacts/keep"
```
2016-06-10 15:45:06 -04:00
Example response:
2016-06-10 11:11:27 -04:00
```json
{
2016-06-10 15:45:06 -04:00
"commit": {
"author_email": "admin@example.com",
"author_name": "Administrator",
"created_at": "2015-12-24T16:51:14.000+01:00",
"id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
"message": "Test the CI integration.",
"short_id": "0ff3ae19",
"title": "Test the CI integration."
},
"coverage": null,
"download_url": null,
"id": 69,
"name": "rubocop",
"ref": "master",
"runner": null,
"stage": "test",
"created_at": "2016-01-11T10:13:33.506Z",
"started_at": "2016-01-11T10:13:33.506Z",
"finished_at": "2016-01-11T10:15:10.506Z",
"status": "failed",
"tag": false,
"user": null
2016-06-10 11:11:27 -04:00
}
```