- ジョブアーティファクトの取得
- アーティファクトアーカイブのダウンロード
- ジョブIDで単一のアーティファクトファイルをダウンロードします。
- 特定のタグまたはブランチから単一のアーティファクトファイルをダウンロードします。
- アーティファクトを保持
- ジョブのアーティファクトの削除
- プロジェクトのアーティファクトの削除
ジョブアーティファクトAPI
ジョブアーティファクトの取得
アーティファクトダウンロードAPIで
CI_JOB_TOKEN、GitLab Premium9.5で導入されました。
プロジェクトのアーティファクトの zip アーカイブを取得します。
GET /projects/:id/jobs/:job_id/artifacts
| 属性 | 種類 | 必須 | 説明 |
|---|---|---|---|
id | 整数/文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
job_id | 整数。 | はい | ジョブのID。 |
job_token
| 文字列です。 | なし | マルチプロジェクトパイプラインのトリガーで使用します。.gitlab-ci.yml ファイルで定義された CI/CD ジョブでのみ起動されるべきです。値は常に$CI_JOB_TOKEN. $CI_JOB_TOKENに$CI_JOB_TOKEN関連付けられたジョブは $CI_JOB_TOKEN、このトークンが使用されるときに実行されていなければなりません。 |
PRIVATE-TOKEN ヘッダーを使用したリクエストの例です:
curl --location --output artifacts.zip --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts"
.gitlab-ci.yml 内部のscript 定義でこれを使うには、次のどちらかを使います。 の中で使うには
-
JOB-TOKENヘッダと GitLab が提供するCI_JOB_TOKEN変数。例えば、次のジョブは42という ID のジョブのアーティファクトをダウンロードします。コマンドはコロン (:) を含むためシングルクォートで囲まれています: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"' -
あるいは、
job_token属性を GitLab が提供するCI_JOB_TOKEN変数で指定します。例えば、次のジョブは ID42のジョブのアーティファクトをダウンロードします: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"'
可能なレスポンスのステータスコード
| ステータス | 説明 |
|---|---|
| 200 | アーティファクトファイルを提供します。 |
| 404 | ビルドが見つからないか、アーティファクトがありません。 |
アーティファクトアーカイブのダウンロード
アーティファクトダウンロードAPIで
CI_JOB_TOKEN、GitLab Premium9.5で導入されました。
与えられた参照名とジョブのパイプラインのうち、ジョブが正常に終了したものからアーティファクトの zip アーカイブをダウンロードします。これはジョブのアーティファクトを取得するのと同じですが、ジョブの ID の代わりにジョブ名を定義します。
GET /projects/:id/jobs/artifacts/:ref_name/download?job=name
パラメータ
| 属性 | 種類 | 必須 | 説明 |
|---|---|---|---|
id | 整数/文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
ref_name | 文字列です。 | はい | リポジトリ内のブランチ名またはタグ名。HEAD または SHA 参照はサポートされていません。 |
job | 文字列です。 | はい | ジョブの名前。 |
job_token
| 文字列です。 | なし | マルチプロジェクトパイプラインのトリガーで使用します。.gitlab-ci.yml ファイルで定義された CI/CD ジョブでのみ起動されるべきです。値は常に$CI_JOB_TOKEN. $CI_JOB_TOKENに$CI_JOB_TOKEN関連付けられたジョブは $CI_JOB_TOKEN、このトークンが使用されるときに実行されていなければなりません。 |
PRIVATE-TOKEN ヘッダーを使用したリクエストの例です:
curl --location --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/artifacts/main/download?job=test"
.gitlab-ci.yml 内部のscript 定義でこれを使うには、次のどちらかを使います。 の中で使うには
-
JOB-TOKENヘッダと GitLab が提供するCI_JOB_TOKEN変数。例えば、次のジョブはmainブランチのtestジョブのアーティファクトをダウンロードします。コマンドはコロン (:) を含むためシングルクォートで囲まれています: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/main/download?job=test"' -
あるいは、
job_token属性に GitLab が提供するCI_JOB_TOKEN変数を指定します。例えば、次のジョブはmainブランチのtestジョブのアーティファクトをダウンロードします:artifact_download: stage: test script: - 'curl --location --output artifacts.zip "https://gitlab.example.com/api/v4/projects/$CI_PROJECT_ID/jobs/artifacts/main/download?job=test&job_token=$CI_JOB_TOKEN"'
可能なレスポンスのステータスコード
| ステータス | 説明 |
|---|---|
| 200 | アーティファクトファイルを提供します。 |
| 404 | ビルドが見つからないか、アーティファクトがありません。 |
ジョブIDで単一のアーティファクトファイルをダウンロードします。
指定されたIDのジョブから単一のアーティファクトファイルを、そのジョブのアーティファクトZIPアーカイブ内からダウンロードします。ファイルはアーカイブから抽出され、クライアントにストリーミングされます。
GET /projects/:id/jobs/:job_id/artifacts/*artifact_path
パラメータ
| 属性 | 種類 | 必須 | 説明 |
|---|---|---|---|
id | 整数/文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
job_id | 整数。 | はい | 一意のジョブ識別子。 |
artifact_path | 文字列です。 | はい | アーティファクトアーカイブ内のファイルへのパス。 |
job_token
| 文字列です。 | なし | マルチプロジェクトパイプラインのトリガーで使用します。.gitlab-ci.yml ファイルで定義された CI/CD ジョブでのみ起動されるべきです。値は常に$CI_JOB_TOKEN. $CI_JOB_TOKENに$CI_JOB_TOKEN関連付けられたジョブは $CI_JOB_TOKEN、このトークンが使用されるときに実行されていなければなりません。 |
リクエストの例
curl --location --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/5/artifacts/some/release/file.pdf"
可能なレスポンスのステータスコード
| ステータス | 説明 |
|---|---|
| 200 | 単一のアーティファクトファイルを送信します。 |
| 400 | 無効なパスが指定されました |
| 404 | ビルドが見つからないか、ファイル/アーティファクトがありません。 |
特定のタグまたはブランチから単一のアーティファクトファイルをダウンロードします。
ジョブのアーティファクトアーカイブの中から、指定された参照名で成功した最新のパイプラインの特定のジョブの単一のアーティファクトファイルをダウンロードします。ファイルはアーカイブから抽出され、クライアントにストリーミングされます。
アーティファクトファイルは、CSVエクスポートで利用可能なものよりも詳細な情報を提供します。
親パイプラインと子パイプラインのアーティファクトは、親から子へと階層順に検索されます。たとえば、親パイプラインと子パイプラインの両方に同じ名前のジョブがある場合、親パイプラインのアーティファクトが返されます。
GET /projects/:id/jobs/artifacts/:ref_name/raw/*artifact_path?job=name
パラメータを指定します:
| 属性 | 種類 | 必須 | 説明 |
|---|---|---|---|
id | 整数/文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
ref_name | 文字列です。 | はい | リポジトリ内のブランチまたはタグ名。HEAD またはSHA 参照はサポートされていません。 |
artifact_path | 文字列です。 | はい | アーティファクトアーカイブ内のファイルへのパス。 |
job | 文字列です。 | はい | ジョブの名前。 |
job_token
| 文字列です。 | なし | マルチプロジェクトパイプラインのトリガーで使用します。.gitlab-ci.yml ファイルで定義された CI/CD ジョブでのみ起動されるべきです。値は常に$CI_JOB_TOKEN. $CI_JOB_TOKENに$CI_JOB_TOKEN関連付けられたジョブは $CI_JOB_TOKEN、このトークンが使用されるときに実行されていなければなりません。 |
リクエストの例
curl --location --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/artifacts/main/raw/some/release/file.pdf?job=pdf"
可能なレスポンスのステータスコード
| ステータス | 説明 |
|---|---|
| 200 | 単一のアーティファクトファイルを送信します。 |
| 400 | 無効なパスが指定されました |
| 404 | ビルドが見つからないか、ファイル/アーティファクトがありません。 |
アーティファクトを保持
有効期限が設定されている場合、アーティファクトが削除されないようにします。
POST /projects/:id/jobs/:job_id/artifacts/keep
パラメータ
| 属性 | 種類 | 必須 | 説明 |
|---|---|---|---|
id | 整数/文字列 | はい | 認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス。 |
job_id | 整数。 | はい | ジョブのID。 |
リクエストの例
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/1/artifacts/keep"
応答例
{
"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,
"allow_failure": false,
"download_url": null,
"id": 42,
"name": "rubocop",
"ref": "main",
"artifacts": [],
"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",
"duration": 97.0,
"status": "failed",
"failure_reason": "script_failure",
"tag": false,
"web_url": "https://example.com/foo/bar/-/jobs/42",
"user": null
}
ジョブのアーティファクトの削除
ジョブのアーティファクトを削除します。
前提条件:
- 少なくともプロジェクトのメンテナーのロールを持っている必要があります。
DELETE /projects/:id/jobs/:job_id/artifacts
| 属性 | 種類 | 必須 | 説明 |
|---|---|---|---|
id | 整数/文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
job_id | 整数。 | はい | ジョブのID。 |
リクエストの例
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/1/artifacts"
アーティファクトの削除に成功した場合、ステータス204 No Content の応答が返されます。
プロジェクトのアーティファクトの削除
削除可能なプロジェクトのアーティファクトを削除します。
デフォルトでは、各 ref の直近に成功したパイプラインのアーティファクトが保持されます。
DELETE /projects/:id/artifacts
| 属性 | 種類 | 必須 | 説明 |
|---|---|---|---|
id | 整数/文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
リクエストの例
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/artifacts"
削除可能なすべてのアーティファクトの有効期限を現在時刻に更新するようワーカーをスケジュールします。ステータス202 Accepted の応答が返されます。