2017-03-06 04:24:03 -05:00
# Jobs API
2016-01-05 10:36:14 -05:00
2017-03-06 10:56:05 -05:00
## List project jobs
2016-01-05 10:36:14 -05:00
2017-03-06 04:24:03 -05:00
Get a list of jobs in a project.
2016-01-05 10:36:14 -05:00
```
2017-03-06 04:24:03 -05:00
GET /projects/:id/jobs
2016-01-05 10:36:14 -05:00
```
2018-12-05 05:08:39 -05:00
| Attribute | Type | Required | Description |
|-----------|--------------------------------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
2019-03-06 06:06:21 -05:00
| `id` | integer/string | yes | ID or [URL-encoded path of the project ](README.md#namespaced-path-encoding ) owned by the authenticated user. |
2018-12-05 05:08:39 -05:00
| `scope` | string **or** array of strings | no | Scope of jobs to show. Either one of or an array of the following: `created` , `pending` , `running` , `failed` , `success` , `canceled` , `skipped` , or `manual` . All jobs are returned if `scope` is not provided. |
2016-01-13 15:19:18 -05:00
2018-12-05 05:08:39 -05:00
```sh
2018-12-27 04:03:08 -05:00
curl --header "PRIVATE-TOKEN: < your_access_token > " 'https://gitlab.example.com/api/v4/projects/1/jobs?scope[]=pending& scope[]=running'
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
2017-03-06 10:56:05 -05:00
```json
[
{
"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,
2019-05-21 05:21:53 -04:00
"allow_failure": false,
2018-07-03 09:42:40 -04:00
"created_at": "2015-12-24T15:51:21.727Z",
2018-09-09 05:49:44 -04:00
"started_at": "2015-12-24T17:54:24.729Z",
2018-07-03 09:42:40 -04:00
"finished_at": "2015-12-24T17:54:24.921Z",
2018-09-09 05:49:44 -04:00
"duration": 0.192,
2018-07-03 09:42:40 -04:00
"artifacts_expire_at": "2016-01-23T17:54:24.921Z",
"id": 6,
"name": "rspec:other",
2017-03-06 10:56:05 -05:00
"pipeline": {
"id": 6,
"ref": "master",
"sha": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
"status": "pending"
},
"ref": "master",
2018-07-18 17:46:56 -04:00
"artifacts": [],
2017-03-06 10:56:05 -05:00
"runner": null,
"stage": "test",
"status": "failed",
"tag": false,
2018-07-18 17:57:08 -04:00
"web_url": "https://example.com/foo/bar/-/jobs/6",
2017-03-06 10:56:05 -05:00
"user": {
"id": 1,
"name": "Administrator",
"username": "root",
2018-09-25 10:28:57 -04:00
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80& d=identicon",
2017-03-06 10:56:05 -05:00
"web_url": "http://gitlab.dev/root",
2018-09-25 10:28:57 -04:00
"created_at": "2015-12-21T13:14:24.077Z",
"bio": null,
"location": null,
2018-09-25 12:40:24 -04:00
"public_email": "",
2018-09-25 10:28:57 -04:00
"skype": "",
"linkedin": "",
"twitter": "",
"website_url": "",
"organization": ""
2017-03-06 10:56:05 -05: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,
2019-05-21 05:21:53 -04:00
"allow_failure": false,
2018-07-03 09:42:40 -04:00
"created_at": "2015-12-24T15:51:21.802Z",
2018-09-09 05:49:44 -04:00
"started_at": "2015-12-24T17:54:27.722Z",
"finished_at": "2015-12-24T17:54:27.895Z",
"duration": 0.173,
2018-07-03 09:42:40 -04:00
"artifacts_file": {
"filename": "artifacts.zip",
"size": 1000
},
2018-07-18 17:46:56 -04:00
"artifacts": [
{"file_type": "archive", "size": 1000, "filename": "artifacts.zip", "file_format": "zip"},
{"file_type": "metadata", "size": 186, "filename": "metadata.gz", "file_format": "gzip"},
{"file_type": "trace", "size": 1500, "filename": "job.log", "file_format": "raw"},
{"file_type": "junit", "size": 750, "filename": "junit.xml.gz", "file_format": "gzip"}
],
2018-07-18 17:57:08 -04:00
"artifacts_expire_at": "2016-01-23T17:54:27.895Z",
2018-07-03 09:42:40 -04:00
"id": 7,
"name": "teaspoon",
2017-03-06 10:56:05 -05:00
"pipeline": {
"id": 6,
"ref": "master",
"sha": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
"status": "pending"
},
"ref": "master",
2018-07-18 17:46:56 -04:00
"artifacts": [],
2017-03-06 10:56:05 -05:00
"runner": null,
"stage": "test",
"status": "failed",
"tag": false,
2018-07-18 17:57:08 -04:00
"web_url": "https://example.com/foo/bar/-/jobs/7",
2017-03-06 10:56:05 -05:00
"user": {
"id": 1,
"name": "Administrator",
"username": "root",
2018-09-25 10:28:57 -04:00
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80& d=identicon",
2017-03-06 10:56:05 -05:00
"web_url": "http://gitlab.dev/root",
2018-09-25 10:28:57 -04:00
"created_at": "2015-12-21T13:14:24.077Z",
"bio": null,
"location": null,
2018-09-25 12:40:24 -04:00
"public_email": "",
2018-09-25 10:28:57 -04:00
"skype": "",
"linkedin": "",
"twitter": "",
"website_url": "",
"organization": ""
2017-03-06 10:56:05 -05:00
}
}
]
```
## List pipeline jobs
Get a list of jobs for a pipeline.
```
2017-04-21 15:43:55 -04:00
GET /projects/:id/pipelines/:pipeline_id/jobs
2017-03-06 10:56:05 -05:00
```
2018-12-05 05:08:39 -05:00
| Attribute | Type | Required | Description |
|---------------|--------------------------------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
2019-03-06 06:06:21 -05:00
| `id` | integer/string | yes | ID or [URL-encoded path of the project ](README.md#namespaced-path-encoding ) owned by the authenticated user. |
| `pipeline_id` | integer | yes | ID of a pipeline. |
2018-12-05 05:08:39 -05:00
| `scope` | string **or** array of strings | no | Scope of jobs to show. Either one of or an array of the following: `created` , `pending` , `running` , `failed` , `success` , `canceled` , `skipped` , or `manual` . All jobs are returned if `scope` is not provided. |
2017-03-06 10:56:05 -05:00
2018-12-05 05:08:39 -05:00
```sh
2018-12-27 04:03:08 -05:00
curl --header "PRIVATE-TOKEN: < your_access_token > " 'https://gitlab.example.com/api/v4/projects/1/pipelines/6/jobs?scope[]=pending& scope[]=running'
2017-03-06 10:56:05 -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,
2019-05-21 05:21:53 -04:00
"allow_failure": false,
2018-07-03 09:42:40 -04:00
"created_at": "2015-12-24T15:51:21.727Z",
2018-09-09 05:49:44 -04:00
"started_at": "2015-12-24T17:54:24.729Z",
2018-07-03 09:42:40 -04:00
"finished_at": "2015-12-24T17:54:24.921Z",
2018-09-09 05:49:44 -04:00
"duration": 0.192,
2018-07-18 17:57:08 -04:00
"artifacts_expire_at": "2016-01-23T17:54:24.921Z",
2018-07-03 09:42:40 -04:00
"id": 6,
"name": "rspec:other",
2016-09-23 19:43:57 -04:00
"pipeline": {
"id": 6,
"ref": "master",
"sha": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
"status": "pending"
2016-11-15 05:40:36 -05:00
},
2016-06-10 15:45:06 -04:00
"ref": "master",
2018-07-18 17:46:56 -04:00
"artifacts": [],
2016-06-10 15:45:06 -04:00
"runner": null,
"stage": "test",
"status": "failed",
"tag": false,
2018-07-18 17:57:08 -04:00
"web_url": "https://example.com/foo/bar/-/jobs/6",
2016-06-10 15:45:06 -04:00
"user": {
"id": 1,
"name": "Administrator",
"username": "root",
2018-09-25 10:28:57 -04:00
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80& d=identicon",
2016-10-13 07:24:09 -04:00
"web_url": "http://gitlab.dev/root",
2018-09-25 10:28:57 -04:00
"created_at": "2015-12-21T13:14:24.077Z",
"bio": null,
"location": null,
2018-09-25 12:40:24 -04:00
"public_email": "",
2018-09-25 10:28:57 -04:00
"skype": "",
"linkedin": "",
"twitter": "",
"website_url": "",
"organization": ""
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,
2019-05-21 05:21:53 -04:00
"allow_failure": false,
2018-07-03 09:42:40 -04:00
"created_at": "2015-12-24T15:51:21.802Z",
2018-09-09 05:49:44 -04:00
"started_at": "2015-12-24T17:54:27.722Z",
"finished_at": "2015-12-24T17:54:27.895Z",
"duration": 0.173,
2018-07-03 09:42:40 -04:00
"artifacts_file": {
"filename": "artifacts.zip",
"size": 1000
},
2018-07-18 17:46:56 -04:00
"artifacts": [
{"file_type": "archive", "size": 1000, "filename": "artifacts.zip", "file_format": "zip"},
{"file_type": "metadata", "size": 186, "filename": "metadata.gz", "file_format": "gzip"},
{"file_type": "trace", "size": 1500, "filename": "job.log", "file_format": "raw"},
{"file_type": "junit", "size": 750, "filename": "junit.xml.gz", "file_format": "gzip"}
],
2018-07-18 17:57:08 -04:00
"artifacts_expire_at": "2016-01-23T17:54:27.895Z",
2018-07-03 09:42:40 -04:00
"id": 7,
"name": "teaspoon",
2016-09-23 19:43:57 -04:00
"pipeline": {
"id": 6,
"ref": "master",
"sha": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
"status": "pending"
2016-11-15 05:40:36 -05:00
},
2016-06-10 15:45:06 -04:00
"ref": "master",
2018-07-18 17:46:56 -04:00
"artifacts": [],
2016-06-10 15:45:06 -04:00
"runner": null,
"stage": "test",
"status": "failed",
"tag": false,
2018-07-18 17:57:08 -04:00
"web_url": "https://example.com/foo/bar/-/jobs/7",
2016-06-10 15:45:06 -04:00
"user": {
"id": 1,
"name": "Administrator",
"username": "root",
2018-09-25 10:28:57 -04:00
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80& d=identicon",
2016-10-13 07:24:09 -04:00
"web_url": "http://gitlab.dev/root",
2018-09-25 10:28:57 -04:00
"created_at": "2015-12-21T13:14:24.077Z",
"bio": null,
"location": null,
2018-09-25 12:40:24 -04:00
"public_email": "",
2018-09-25 10:28:57 -04:00
"skype": "",
"linkedin": "",
"twitter": "",
"website_url": "",
"organization": ""
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
```
2017-03-06 04:24:03 -05:00
## Get a single job
2016-01-05 10:36:14 -05:00
2017-03-06 04:24:03 -05:00
Get a single job of a project
2016-01-05 10:36:14 -05:00
```
2017-03-06 04:24:03 -05:00
GET /projects/:id/jobs/:job_id
2016-01-05 10:36:14 -05:00
```
2018-12-05 05:08:39 -05:00
| Attribute | Type | Required | Description |
|-----------|----------------|----------|------------------------------------------------------------------------------------------------------------------|
2019-03-06 06:06:21 -05:00
| `id` | integer/string | yes | ID or [URL-encoded path of the project ](README.md#namespaced-path-encoding ) owned by the authenticated user. |
| `job_id` | integer | yes | ID of a job. |
2016-01-13 15:19:18 -05:00
2018-12-05 05:08:39 -05:00
```sh
2018-12-27 04:03:08 -05:00
curl --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/1/jobs/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,
2019-05-21 05:21:53 -04:00
"allow_failure": false,
2016-06-10 15:45:06 -04:00
"created_at": "2015-12-24T15:51:21.880Z",
2018-09-09 05:49:44 -04:00
"started_at": "2015-12-24T17:54:30.733Z",
2016-06-10 15:45:06 -04:00
"finished_at": "2015-12-24T17:54:31.198Z",
2018-09-09 05:49:44 -04:00
"duration": 0.465,
2018-05-10 03:58:19 -04:00
"artifacts_expire_at": "2016-01-23T17:54:31.198Z",
2016-06-10 15:45:06 -04:00
"id": 8,
"name": "rubocop",
2016-09-23 19:43:57 -04:00
"pipeline": {
"id": 6,
"ref": "master",
"sha": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
"status": "pending"
2016-11-15 05:40:36 -05:00
},
2016-06-10 15:45:06 -04:00
"ref": "master",
2018-07-18 17:46:56 -04:00
"artifacts": [],
2016-06-10 15:45:06 -04:00
"runner": null,
"stage": "test",
"status": "failed",
"tag": false,
2018-07-18 17:57:08 -04:00
"web_url": "https://example.com/foo/bar/-/jobs/8",
2016-06-10 15:45:06 -04:00
"user": {
"id": 1,
"name": "Administrator",
"username": "root",
2018-09-25 10:28:57 -04:00
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80& d=identicon",
2016-10-13 07:24:09 -04:00
"web_url": "http://gitlab.dev/root",
2018-09-25 10:28:57 -04:00
"created_at": "2015-12-21T13:14:24.077Z",
"bio": null,
"location": null,
2018-09-25 12:40:24 -04:00
"public_email": "",
2018-09-25 10:28:57 -04:00
"skype": "",
"linkedin": "",
"twitter": "",
"website_url": "",
"organization": ""
2016-06-10 15:45:06 -04:00
}
2016-01-05 10:36:14 -05:00
}
```
2017-03-06 04:24:03 -05:00
## Get job artifacts
2016-02-08 16:32:36 -05:00
2018-03-30 08:46:25 -04:00
> **Notes**:
2018-09-09 05:49:44 -04:00
>
2018-09-06 12:52:18 -04:00
> - [Introduced][ce-2893] in GitLab 8.5.
2019-06-06 03:57:39 -04:00
> - The use of `CI_JOB_TOKEN` in the artifacts download API was [introduced][ee-2346]
> in [GitLab Premium][ee] 9.5.
2016-02-22 07:30:22 -05:00
2019-06-06 03:57:39 -04:00
Get the job's artifacts zipped archive of a project.
2016-02-08 16:32:36 -05:00
```
2017-03-06 04:24:03 -05:00
GET /projects/:id/jobs/:job_id/artifacts
2016-02-08 16:32:36 -05:00
```
2019-06-06 03:57:39 -04:00
| Attribute | Type | Required | Description |
|-------------|----------------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------|
| `id` | integer/string | yes | ID or [URL-encoded path of the project ](README.md#namespaced-path-encoding ) owned by the authenticated user. |
| `job_id` | integer | yes | ID of a job. |
| `job_token` ** [PREMIUM]** | string | no | To be used with [triggers] for multi-project pipelines. It should be invoked only inside `.gitlab-ci.yml` . Its value is always `$CI_JOB_TOKEN` . |
2016-02-08 16:32:36 -05:00
2019-06-06 03:57:39 -04:00
Example request using the `PRIVATE-TOKEN` header:
2018-03-30 08:46:25 -04:00
2018-12-05 05:08:39 -05:00
```sh
2019-06-06 03:57:39 -04:00
curl --output artifacts.zip --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts"
2016-02-08 16:32:36 -05:00
```
2019-06-06 03:57:39 -04:00
To use this in a [`script` definition ](../ci/yaml/README.md#script ) inside
`.gitlab-ci.yml` ** [PREMIUM]**, you can use either:
- The `JOB-TOKEN` header with the GitLab-provided `CI_JOB_TOKEN` variable.
For example, the following job will download the artifacts of the job with ID
`42` . Note that the command is wrapped into single quotes since it contains a
colon (`:`):
```yaml
artifact_download:
stage: test
script:
- 'curl --location --output artifacts.zip --header "JOB-TOKEN: $CI_JOB_TOKEN" "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts"'
```
- Or the `job_token` attribute with the GitLab-provided `CI_JOB_TOKEN` variable.
For example, the following job will download the artifacts of the job with ID `42` :
```yaml
artifact_download:
stage: test
script:
- 'curl --location --output artifacts.zip "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts?job_token=$CI_JOB_TOKEN"'
```
2018-12-05 05:08:39 -05:00
Possible response status codes:
2016-02-08 16:32:36 -05:00
| Status | Description |
|-----------|---------------------------------|
2019-06-06 03:57:39 -04:00
| 200 | Serves the artifacts file. |
| 404 | Build not found or no artifacts.|
2016-02-08 16:32:36 -05:00
2016-02-22 07:30:22 -05:00
[ce-2893]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/2893
2017-09-06 05:40:20 -04:00
## Download the artifacts archive
2016-07-21 05:34:36 -04:00
2018-03-30 08:46:25 -04:00
> **Notes**:
2018-09-09 05:49:44 -04:00
>
2018-09-06 12:52:18 -04:00
> - [Introduced][ce-5347] in GitLab 8.10.
2019-06-06 03:57:39 -04:00
> - The use of `CI_JOB_TOKEN` in the artifacts download API was [introduced][ee-2346]
> in [GitLab Premium][ee] 9.5.
2016-07-21 05:34:36 -04:00
2019-06-06 03:57:39 -04:00
Download the artifacts zipped archive from the given reference name and job,
provided the job finished successfully. This is the same as
[getting the job's artifacts ](#get-job-artifacts ), but by defining the job's
name instead of its ID.
2016-07-21 05:34:36 -04:00
```
2017-03-06 04:24:03 -05:00
GET /projects/:id/jobs/artifacts/:ref_name/download?job=name
2016-07-21 05:34:36 -04:00
```
Parameters
2019-06-06 03:57:39 -04:00
| Attribute | Type | Required | Description |
|-------------|----------------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------|
| `id` | integer/string | yes | ID or [URL-encoded path of the project ](README.md#namespaced-path-encoding ) owned by the authenticated user. |
| `ref_name` | string | yes | Branch or tag name in repository. HEAD or SHA references are not supported. |
| `job` | string | yes | The name of the job. |
| `job_token` ** [PREMIUM]** | string | no | To be used with [triggers] for multi-project pipelines. It should be invoked only inside `.gitlab-ci.yml` . Its value is always `$CI_JOB_TOKEN` . |
2016-07-21 05:34:36 -04:00
2019-06-06 03:57:39 -04:00
Example request using the `PRIVATE-TOKEN` header:
2016-07-21 05:34:36 -04:00
2018-12-05 05:08:39 -05:00
```sh
2018-12-27 04:03:08 -05:00
curl --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/1/jobs/artifacts/master/download?job=test"
2016-07-21 05:34:36 -04:00
```
2019-06-06 03:57:39 -04:00
To use this in a [`script` definition ](../ci/yaml/README.md#script ) inside
`.gitlab-ci.yml` ** [PREMIUM]**, you can use either:
- The `JOB-TOKEN` header with the GitLab-provided `CI_JOB_TOKEN` variable.
For example, the following job will download the artifacts of the `test` job
of the `master` branch. Note that the command is wrapped into single quotes
since it contains a colon (`:`):
```yaml
artifact_download:
stage: test
script:
- 'curl --location --output artifacts.zip --header "JOB-TOKEN: $CI_JOB_TOKEN" "https://gitlab.example.com/api/v4/projects/$CI_PROJECT_ID/jobs/artifacts/master/download?job=test"'
```
- Or the `job_token` attribute with the GitLab-provided `CI_JOB_TOKEN` variable.
For example, the following job will download the artifacts of the `test` job
of the `master` branch:
```yaml
artifact_download:
stage: test
script:
- 'curl --location --output artifacts.zip "https://gitlab.example.com/api/v4/projects/$CI_PROJECT_ID/jobs/artifacts/master/download?job=test& job_token=$CI_JOB_TOKEN"'
```
2018-12-05 05:08:39 -05:00
Possible response status codes:
2016-07-21 05:34:36 -04:00
| Status | Description |
|-----------|---------------------------------|
2019-06-06 03:57:39 -04:00
| 200 | Serves the artifacts file. |
| 404 | Build not found or no artifacts.|
2016-07-21 05:34:36 -04:00
[ce-5347]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5347
2018-12-04 05:50:01 -05:00
## Download a single artifact file by job ID
2017-09-06 05:40:20 -04:00
> Introduced in GitLab 10.0
2018-12-05 05:08:39 -05:00
Download a single artifact file from a job with a specified ID from within
2019-06-06 03:57:39 -04:00
the job's artifacts zipped archive. The file is extracted from the archive and
2018-12-05 05:08:39 -05:00
streamed to the client.
2017-09-06 05:40:20 -04:00
```
GET /projects/:id/jobs/:job_id/artifacts/*artifact_path
```
Parameters
2018-12-05 05:08:39 -05:00
| Attribute | Type | Required | Description |
|-----------------|----------------|----------|------------------------------------------------------------------------------------------------------------------|
2019-03-06 06:06:21 -05:00
| `id` | integer/string | yes | ID or [URL-encoded path of the project ](README.md#namespaced-path-encoding ) owned by the authenticated user. |
2018-12-05 05:08:39 -05:00
| `job_id ` | integer | yes | The unique job identifier. |
| `artifact_path` | string | yes | Path to a file inside the artifacts archive. |
2017-09-06 05:40:20 -04:00
Example request:
2018-12-05 05:08:39 -05:00
```sh
2018-12-27 04:03:08 -05:00
curl --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/1/jobs/5/artifacts/some/release/file.pdf"
2017-09-06 05:40:20 -04:00
```
2018-12-05 05:08:39 -05:00
Possible response status codes:
2017-09-06 05:40:20 -04:00
| Status | Description |
|-----------|--------------------------------------|
| 200 | Sends a single artifact file |
| 400 | Invalid path provided |
| 404 | Build not found or no file/artifacts |
2018-12-04 05:50:01 -05:00
## Download a single artifact file from specific tag or branch
> [Introduced](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/23538) in GitLab 11.5.
Download a single artifact file from a specific tag or branch from within the
job's artifacts archive. The file is extracted from the archive and streamed to
the client.
```
GET /projects/:id/jobs/artifacts/:ref_name/raw/*artifact_path?job=name
```
Parameters:
| Attribute | Type | Required | Description |
|-----------------|----------------|----------|------------------------------------------------------------------------------------------------------------------|
2019-03-06 06:06:21 -05:00
| `id` | integer/string | yes | ID or [URL-encoded path of the project ](README.md#namespaced-path-encoding ) owned by the authenticated user. |
2018-12-04 05:50:01 -05:00
| `ref_name` | string | yes | Branch or tag name in repository. HEAD or SHA references are not supported. |
| `artifact_path` | string | yes | Path to a file inside the artifacts archive. |
| `job` | string | yes | The name of the job. |
Example request:
```sh
2018-12-27 04:03:08 -05:00
curl --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/1/jobs/artifacts/master/raw/some/release/file.pdf?job=pdf"
2018-12-04 05:50:01 -05:00
```
Possible response status codes:
| Status | Description |
|-----------|--------------------------------------|
| 200 | Sends a single artifact file |
| 400 | Invalid path provided |
| 404 | Build not found or no file/artifacts |
2016-06-03 13:56:26 -04:00
## Get a trace file
2017-03-06 04:24:03 -05:00
Get a trace of a specific job of a project
2016-06-03 13:56:26 -04:00
```
2017-03-06 04:24:03 -05:00
GET /projects/:id/jobs/:job_id/trace
2016-06-03 13:56:26 -04:00
```
2018-12-05 05:08:39 -05:00
| Attribute | Type | Required | Description |
|-----------|----------------|----------|------------------------------------------------------------------------------------------------------------------|
2019-03-06 06:06:21 -05:00
| id | integer/string | yes | ID or [URL-encoded path of the project ](README.md#namespaced-path-encoding ) owned by the authenticated user. |
| job_id | integer | yes | ID of a job. |
2016-06-03 13:56:26 -04:00
2018-12-05 05:08:39 -05:00
```sh
2018-12-27 04:03:08 -05:00
curl --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/1/jobs/8/trace"
2016-06-03 13:56:26 -04:00
```
2018-12-05 05:08:39 -05:00
Possible response status codes:
2016-06-03 13:56:26 -04:00
| Status | Description |
|-----------|-----------------------------------|
| 200 | Serves the trace file |
| 404 | Build not found or no trace file |
2017-03-06 04:24:03 -05:00
## Cancel a job
2016-01-05 10:36:14 -05:00
2017-03-06 04:24:03 -05:00
Cancel a single job of a project
2016-01-05 10:36:14 -05:00
```
2017-03-06 04:24:03 -05:00
POST /projects/:id/jobs/:job_id/cancel
2016-01-05 10:36:14 -05:00
```
2018-12-05 05:08:39 -05:00
| Attribute | Type | Required | Description |
|-----------|----------------|----------|------------------------------------------------------------------------------------------------------------------|
2019-03-06 06:06:21 -05:00
| `id` | integer/string | yes | ID or [URL-encoded path of the project ](README.md#namespaced-path-encoding ) owned by the authenticated user. |
| `job_id` | integer | yes | ID of a job. |
2016-01-13 15:19:18 -05:00
2018-12-05 05:08:39 -05:00
```sh
2018-12-27 04:03:08 -05:00
curl --request POST --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/1/jobs/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,
2019-05-21 05:21:53 -04:00
"allow_failure": false,
2016-06-10 15:45:06 -04:00
"created_at": "2016-01-11T10:13:33.506Z",
2018-09-09 05:49:44 -04:00
"started_at": "2016-01-11T10:14:09.526Z",
"finished_at": null,
"duration": 8,
2018-07-18 17:57:08 -04:00
"id": 42,
2016-06-10 15:45:06 -04:00
"name": "rubocop",
"ref": "master",
2018-07-18 17:46:56 -04:00
"artifacts": [],
2016-06-10 15:45:06 -04:00
"runner": null,
"stage": "test",
"status": "canceled",
"tag": false,
2018-07-18 17:57:08 -04:00
"web_url": "https://example.com/foo/bar/-/jobs/42",
2016-06-10 15:45:06 -04:00
"user": null
2016-01-05 10:36:14 -05:00
}
```
2017-03-06 04:24:03 -05:00
## Retry a job
2016-01-05 10:36:14 -05:00
2017-03-06 04:24:03 -05:00
Retry a single job of a project
2016-01-05 10:36:14 -05:00
```
2017-03-06 04:24:03 -05:00
POST /projects/:id/jobs/:job_id/retry
2016-01-05 10:36:14 -05:00
```
2018-12-05 05:08:39 -05:00
| Attribute | Type | Required | Description |
|-----------|----------------|----------|------------------------------------------------------------------------------------------------------------------|
2019-03-06 06:06:21 -05:00
| `id` | integer/string | yes | ID or [URL-encoded path of the project ](README.md#namespaced-path-encoding ) owned by the authenticated user. |
| `job_id` | integer | yes | ID of a job. |
2016-01-13 15:19:18 -05:00
2018-12-05 05:08:39 -05:00
```sh
2018-12-27 04:03:08 -05:00
curl --request POST --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/1/jobs/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,
2019-05-21 05:21:53 -04:00
"allow_failure": false,
2016-06-10 15:45:06 -04:00
"created_at": "2016-01-11T10:13:33.506Z",
2018-09-09 05:49:44 -04:00
"started_at": null,
2016-06-10 15:45:06 -04:00
"finished_at": null,
2018-09-09 05:49:44 -04:00
"duration": null,
2018-07-18 17:57:08 -04:00
"id": 42,
2016-06-10 15:45:06 -04:00
"name": "rubocop",
"ref": "master",
2018-07-18 17:46:56 -04:00
"artifacts": [],
2016-06-10 15:45:06 -04:00
"runner": null,
"stage": "test",
"status": "pending",
"tag": false,
2018-07-18 17:57:08 -04:00
"web_url": "https://example.com/foo/bar/-/jobs/42",
2016-06-10 15:45:06 -04:00
"user": null
2016-01-05 10:36:14 -05:00
}
```
2016-02-04 06:03:47 -05:00
2017-03-06 04:24:03 -05:00
## Erase a job
2016-02-04 06:03:47 -05:00
2017-03-06 04:24:03 -05:00
Erase a single job of a project (remove job artifacts and a job trace)
2016-02-04 06:03:47 -05:00
```
2017-03-06 04:24:03 -05:00
POST /projects/:id/jobs/:job_id/erase
2016-02-04 06:03:47 -05:00
```
Parameters
2018-12-05 05:08:39 -05:00
| Attribute | Type | Required | Description |
|-----------|----------------|----------|------------------------------------------------------------------------------------------------------------------|
2019-03-06 06:06:21 -05:00
| `id` | integer/string | yes | ID or [URL-encoded path of the project ](README.md#namespaced-path-encoding ) owned by the authenticated user. |
| `job_id` | integer | yes | ID of a job. |
2016-02-04 06:03:47 -05:00
Example of request
2018-12-05 05:08:39 -05:00
```sh
2018-12-27 04:03:08 -05:00
curl --request POST --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/1/jobs/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,
2019-05-21 05:21:53 -04:00
"allow_failure": false,
2016-06-10 15:45:06 -04:00
"download_url": null,
2018-07-18 17:57:08 -04:00
"id": 42,
2016-06-10 15:45:06 -04:00
"name": "rubocop",
"ref": "master",
2018-07-18 17:46:56 -04:00
"artifacts": [],
2016-06-10 15:45:06 -04:00
"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",
2018-09-09 05:49:44 -04:00
"duration": 97.0,
2016-06-10 15:45:06 -04:00
"status": "failed",
"tag": false,
2018-07-18 17:57:08 -04:00
"web_url": "https://example.com/foo/bar/-/jobs/42",
2016-06-10 15:45:06 -04:00
"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
```
2017-03-06 04:24:03 -05:00
POST /projects/:id/jobs/:job_id/artifacts/keep
2016-06-10 11:11:27 -04:00
```
Parameters
2018-12-05 05:08:39 -05:00
| Attribute | Type | Required | Description |
|-----------|----------------|----------|------------------------------------------------------------------------------------------------------------------|
2019-03-06 06:06:21 -05:00
| `id` | integer/string | yes | ID or [URL-encoded path of the project ](README.md#namespaced-path-encoding ) owned by the authenticated user. |
| `job_id` | integer | yes | ID of a job. |
2016-06-10 11:11:27 -04:00
2016-06-10 15:45:06 -04:00
Example request:
2016-06-10 11:11:27 -04:00
2018-12-05 05:08:39 -05:00
```sh
2018-12-27 04:03:08 -05:00
curl --request POST --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/1/jobs/1/artifacts/keep"
2016-06-10 11:11:27 -04:00
```
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,
2019-05-21 05:21:53 -04:00
"allow_failure": false,
2016-06-10 15:45:06 -04:00
"download_url": null,
2018-07-18 17:57:08 -04:00
"id": 42,
2016-06-10 15:45:06 -04:00
"name": "rubocop",
"ref": "master",
2018-07-18 17:46:56 -04:00
"artifacts": [],
2016-06-10 15:45:06 -04:00
"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",
2018-09-09 05:49:44 -04:00
"duration": 97.0,
2016-06-10 15:45:06 -04:00
"status": "failed",
"tag": false,
2018-07-18 17:57:08 -04:00
"web_url": "https://example.com/foo/bar/-/jobs/42",
2016-06-10 15:45:06 -04:00
"user": null
2016-06-10 11:11:27 -04:00
}
```
2016-08-16 04:11:32 -04:00
2019-03-06 06:06:21 -05:00
## Delete artifacts
> [Introduced](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/25522) in GitLab 11.9.
Delete artifacts of a job.
```
DELETE /projects/:id/jobs/:job_id/artifacts
```
| Attribute | Type | Required | Description |
|-----------|----------------|----------|------------------------------------------------------------------------------------------------------------------|
| `id` | integer/string | yes | ID or [URL-encoded path of the project ](README.md#namespaced-path-encoding ) |
| `job_id` | integer | yes | ID of a job. |
Example request:
```sh
curl --request DELETE --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/1/jobs/1/artifacts"
```
NOTE: **Note:**
At least Maintainer role is required to delete artifacts.
If the artifacts were deleted successfully, a response with status `204 No Content` is returned.
2017-03-06 04:24:03 -05:00
## Play a job
2016-08-16 04:11:32 -04:00
2017-03-06 04:24:03 -05:00
Triggers a manual action to start a job.
2016-08-16 04:11:32 -04:00
```
2017-03-06 04:24:03 -05:00
POST /projects/:id/jobs/:job_id/play
2016-08-16 04:11:32 -04:00
```
2018-12-05 05:08:39 -05:00
| Attribute | Type | Required | Description |
|-----------|----------------|----------|------------------------------------------------------------------------------------------------------------------|
2019-03-06 06:06:21 -05:00
| `id` | integer/string | yes | ID or [URL-encoded path of the project ](README.md#namespaced-path-encoding ) owned by the authenticated user. |
| `job_id` | integer | yes | ID of a job. |
2016-08-16 04:11:32 -04:00
2018-12-05 05:08:39 -05:00
```sh
2018-12-27 04:03:08 -05:00
curl --request POST --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/1/jobs/1/play"
2016-08-16 04:11:32 -04:00
```
Example of response
```json
{
"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,
2019-05-21 05:21:53 -04:00
"allow_failure": false,
2016-08-16 04:11:32 -04:00
"created_at": "2016-01-11T10:13:33.506Z",
2018-09-09 05:49:44 -04:00
"started_at": null,
2016-08-16 04:11:32 -04:00
"finished_at": null,
2018-09-09 05:49:44 -04:00
"duration": null,
2018-07-18 17:57:08 -04:00
"id": 42,
2016-08-16 04:11:32 -04:00
"name": "rubocop",
"ref": "master",
2018-07-18 17:46:56 -04:00
"artifacts": [],
2016-08-16 04:11:32 -04:00
"runner": null,
"stage": "test",
"status": "started",
"tag": false,
2018-07-18 17:57:08 -04:00
"web_url": "https://example.com/foo/bar/-/jobs/42",
2016-08-16 04:11:32 -04:00
"user": null
}
```
2019-06-06 03:57:39 -04:00
[ee]: https://about.gitlab.com/pricing/
[ee-2346]: https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/2346
[triggers]: ../ci/triggers/README.md#when-a-pipeline-depends-on-the-artifacts-of-another-pipeline-premium