- ジョブアーティファクトの取得
- アーティファクトアーカイブのダウンロード
- ジョブ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
の応答が返されます。