- プロジェクト外部ステータスチェックサービスの取得
- 外部ステータスチェックサービスの作成
- 外部ステータスチェックサービスの更新
- 外部ステータスチェックサービスの削除
- マージリクエストのステータスチェック一覧
- 外部ステータスチェックのステータス設定
- マージリクエストのステータスチェック失敗の再試行
- レスポンス
- 外部サービスに送信されるペイロードの例
- 関連するトピック
外部ステータスチェックAPI
プロジェクト外部ステータスチェックサービスの取得
以下のエンドポイントを使用して、プロジェクトの外部ステータス・チェック・サービスに関する情報を要求できます:
GET /projects/:id/external_status_checks
パラメータ
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数。 | yes | プロジェクトのID |
[
{
"id": 1,
"name": "Compliance Tool",
"project_id": 6,
"external_url": "https://gitlab.com/example/compliance-tool",
"protected_branches": [
{
"id": 14,
"project_id": 6,
"name": "master",
"created_at": "2020-10-12T14:04:50.787Z",
"updated_at": "2020-10-12T14:04:50.787Z",
"code_owner_approval_required": false
}
]
}
]
外部ステータスチェックサービスの作成
以下のエンドポイントを使用して、プロジェクトの新しい外部ステータス・チェック・サービスを作成できます:
POST /projects/:id/external_status_checks
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数。 | yes | プロジェクトのID |
name | 文字列です。 | yes | 外部状態チェックサービスの表示名 |
external_url | 文字列です。 | yes | 外部ステータスチェックサービスのURL |
protected_branch_ids | array<Integer> | いいえ | ルールを適用するブランチのID |
外部ステータスチェックサービスの更新
以下のエンドポイントを使用して、プロジェクトの既存の外部ステータス・チェックを更新できます:
PUT /projects/:id/external_status_checks/:check_id
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数。 | yes | プロジェクトのID |
check_id | 整数。 | yes | 外部ステータスチェックサービスのID |
name | 文字列です。 | いいえ | 外部状態チェックサービスの表示名 |
external_url | 文字列です。 | いいえ | 外部ステータスチェックサービスのURL |
protected_branch_ids | array<Integer> | いいえ | ルールを適用するブランチのID |
外部ステータスチェックサービスの削除
以下のエンドポイントを使用して、プロジェクトの外部ステータス・チェック・サービスを削除できます:
DELETE /projects/:id/external_status_checks/:check_id
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
check_id | 整数。 | yes | 外部ステータスチェックサービスのID |
id | 整数。 | yes | プロジェクトのID |
マージリクエストのステータスチェック一覧
単一のマージリクエストについて、それに適用される外部ステータスチェックサービスとそのステータスを一覧表示します。
GET /projects/:id/merge_requests/:merge_request_iid/status_checks
パラメータ
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数。 | yes | プロジェクトのID |
merge_request_iid | 整数。 | yes | マージリクエストのIID |
[
{
"id": 2,
"name": "Service 1",
"external_url": "https://gitlab.com/test-endpoint",
"status": "passed"
},
{
"id": 1,
"name": "Service 2",
"external_url": "https://gitlab.com/test-endpoint-2",
"status": "pending"
}
]
外部ステータスチェックのステータス設定
- GitLab 14.9で導入された、
passed
外部ステータスチェックをパスするためのステータス。status_checks_add_status_field
というフラグで導入。デフォルトでは無効。- GitLab 14.9で導入された、
failed
statusで外部ステータスチェックに失敗するように。status_checks_add_status_field
というフラグで導入。デフォルトでは無効。pass
status to pass checksはGitLab 14.9では非推奨。passed
に置き換えられました。failed
とpassed
のサポートはGitLab 15.0でデフォルトで有効になり、機能フラグは削除されました。
単一のマージリクエストに対して、マージリクエストが外部サービスによるチェックを通過したことをGitLabに通知するためにAPIを使用します。外部チェックのステータスを設定するには、使用される個人アクセストークンはマージリクエストのターゲットプロジェクトで少なくとも開発者ロールを持つユーザーに属していなければなりません。
マージリクエスト自体を承認する権限を持つユーザーとして、この API コールを実行します。
POST /projects/:id/merge_requests/:merge_request_iid/status_check_responses
パラメータ
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数。 | yes | プロジェクトのID |
merge_request_iid | 整数。 | yes | マージリクエストのIID |
sha | 文字列です。 | yes | ソースブランチのHEAD でのSHA |
external_status_check_id | 整数。 | yes | 外部ステータスチェックのID |
status | 文字列です。 | いいえ | チェックに合格する場合はpassed 、不合格の場合はfailed 。 |
sha
はマージリクエストのソースブランチのHEAD
の SHA でなければなりません。マージリクエストのステータスチェック失敗の再試行
GitLab 15.7 で導入されました。
単一のマージリクエストに対して、指定された失敗した外部ステータスチェックを再試行します。マージリクエストが変更されていなくても、このエンドポイントはマージリクエストの現在の状態を定義された外部サービスに再送します。
POST /projects/:id/merge_requests/:merge_request_iid/status_checks/:external_status_check_id/retry
パラメータ
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数。 | yes | プロジェクトのID |
merge_request_iid | 整数。 | yes | マージリクエストのIID |
external_status_check_id | 整数。 | yes | 失敗した外部ステータスチェックのID |
レスポンス
成功の場合、ステータスコードは202です。
{
"message": "202 Accepted"
}
ステータスチェックに合格した場合のステータスコードは 422 です。
{
"message": "External status check must be failed"
}
外部サービスに送信されるペイロードの例
{
"object_kind": "merge_request",
"event_type": "merge_request",
"user": {
"id": 1,
"name": "Administrator",
"username": "root",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
"email": "[REDACTED]"
},
"project": {
"id": 6,
"name": "Flight",
"description": "Ipsa minima est consequuntur quisquam.",
"web_url": "http://example.com/flightjs/Flight",
"avatar_url": null,
"git_ssh_url": "ssh://example.com/flightjs/Flight.git",
"git_http_url": "http://example.com/flightjs/Flight.git",
"namespace": "Flightjs",
"visibility_level": 20,
"path_with_namespace": "flightjs/Flight",
"default_branch": "master",
"ci_config_path": null,
"homepage": "http://example.com/flightjs/Flight",
"url": "ssh://example.com/flightjs/Flight.git",
"ssh_url": "ssh://example.com/flightjs/Flight.git",
"http_url": "http://example.com/flightjs/Flight.git"
},
"object_attributes": {
"assignee_id": null,
"author_id": 1,
"created_at": "2022-12-07 07:53:43 UTC",
"description": "",
"head_pipeline_id": 558,
"id": 144,
"iid": 4,
"last_edited_at": null,
"last_edited_by_id": null,
"merge_commit_sha": null,
"merge_error": null,
"merge_params": {
"force_remove_source_branch": "1"
},
"merge_status": "can_be_merged",
"merge_user_id": null,
"merge_when_pipeline_succeeds": false,
"milestone_id": null,
"source_branch": "root-master-patch-30152",
"source_project_id": 6,
"state_id": 1,
"target_branch": "master",
"target_project_id": 6,
"time_estimate": 0,
"title": "Update README.md",
"updated_at": "2022-12-07 07:53:43 UTC",
"updated_by_id": null,
"url": "http://example.com/flightjs/Flight/-/merge_requests/4",
"source": {
"id": 6,
"name": "Flight",
"description": "Ipsa minima est consequuntur quisquam.",
"web_url": "http://example.com/flightjs/Flight",
"avatar_url": null,
"git_ssh_url": "ssh://example.com/flightjs/Flight.git",
"git_http_url": "http://example.com/flightjs/Flight.git",
"namespace": "Flightjs",
"visibility_level": 20,
"path_with_namespace": "flightjs/Flight",
"default_branch": "master",
"ci_config_path": null,
"homepage": "http://example.com/flightjs/Flight",
"url": "ssh://example.com/flightjs/Flight.git",
"ssh_url": "ssh://example.com/flightjs/Flight.git",
"http_url": "http://example.com/flightjs/Flight.git"
},
"target": {
"id": 6,
"name": "Flight",
"description": "Ipsa minima est consequuntur quisquam.",
"web_url": "http://example.com/flightjs/Flight",
"avatar_url": null,
"git_ssh_url": "ssh://example.com/flightjs/Flight.git",
"git_http_url": "http://example.com/flightjs/Flight.git",
"namespace": "Flightjs",
"visibility_level": 20,
"path_with_namespace": "flightjs/Flight",
"default_branch": "master",
"ci_config_path": null,
"homepage": "http://example.com/flightjs/Flight",
"url": "ssh://example.com/flightjs/Flight.git",
"ssh_url": "ssh://example.com/flightjs/Flight.git",
"http_url": "http://example.com/flightjs/Flight.git"
},
"last_commit": {
"id": "141be9714669a4c1ccaa013c6a7f3e462ff2a40f",
"message": "Update README.md",
"title": "Update README.md",
"timestamp": "2022-12-07T07:52:11+00:00",
"url": "http://example.com/flightjs/Flight/-/commit/141be9714669a4c1ccaa013c6a7f3e462ff2a40f",
"author": {
"name": "Administrator",
"email": "admin@example.com"
}
},
"work_in_progress": false,
"total_time_spent": 0,
"time_change": 0,
"human_total_time_spent": null,
"human_time_change": null,
"human_time_estimate": null,
"assignee_ids": [
],
"reviewer_ids": [
],
"labels": [
],
"state": "opened",
"blocking_discussions_resolved": true,
"first_contribution": false,
"detailed_merge_status": "mergeable"
},
"labels": [
],
"changes": {
},
"repository": {
"name": "Flight",
"url": "ssh://example.com/flightjs/Flight.git",
"description": "Ipsa minima est consequuntur quisquam.",
"homepage": "http://example.com/flightjs/Flight"
},
"external_approval_rule": {
"id": 1,
"name": "QA",
"external_url": "https://example.com/"
}
}