正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

プロジェクトプッシュルールAPI

  • プラン: Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

プロジェクトのプッシュルールAPIを使用して、プロジェクトのプッシュルールを管理します。

GitLabのプッシュルールの正規表現では、RE2構文を使用します。

プロジェクトプッシュルールを取得

プロジェクトのプッシュルールを取得します。

GET /projects/:id/push_rule

サポートされている属性は以下のとおりです:

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス

成功した場合、200 OKと次のレスポンス属性を返します:

属性説明
author_email_regex文字列すべてのコミット作成者のメールは、この正規表現と一致する必要があります。
branch_name_regex文字列すべてのブランチ名は、この正規表現と一致する必要があります。
commit_committer_checkブール値trueの場合、コミッターのメールが自分自身で検証済みのメールのいずれかである場合、ユーザーはリポジトリにコミットをプッシュできます。
commit_committer_name_checkブール値trueの場合、コミット作成者名が自分のGitLabアカウント名と一致する場合、ユーザーはこのリポジトリにコミットをプッシュできます。
commit_message_negative_regex文字列どのコミットメッセージも、この正規表現と一致することは許可されていません。
commit_message_regex文字列すべてのコミットメッセージは、この正規表現と一致する必要があります。
created_at文字列プッシュルールが作成された日時。
deny_delete_tagブール値trueの場合、タグの削除を拒否します。
file_name_regex文字列すべてのコミットされたファイル名は、この正規表現と一致してはなりません。
id整数プッシュルールのID。
max_file_size整数最大ファイルサイズ(MB)。
member_checkブール値trueの場合、作成者(メール)によるコミットを既存のGitLabユーザーに制限します。
prevent_secretsブール値trueの場合、GitLabは、シークレットが含まれている可能性のあるファイルを拒否します。
project_id整数プロジェクトのID。
reject_non_dco_commitsブール値trueの場合、DCO認定されていないコミットを拒否します。
reject_unsigned_commitsブール値trueの場合、署名されていないコミットを拒否します。

プロジェクトにプッシュルールが設定されていない場合、HTTP 200 OKと、レスポンス本文としてリテラル文字列"null"が返されます。

これはグループプッシュルールAPIとは異なり、404 Not Foundエラーを返します。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/3/push_rule"

すべての設定が無効になっているプッシュルールが構成されている場合の応答例:

{
  "id": 1,
  "project_id": 3,
  "created_at": "2012-10-12T17:04:47Z",
  "commit_message_regex": "Fixes \\d+\\..*",
  "commit_message_negative_regex": "ssh\\:\\/\\/",
  "branch_name_regex": "",
  "deny_delete_tag": false,
  "member_check": false,
  "prevent_secrets": false,
  "author_email_regex": "",
  "file_name_regex": "",
  "max_file_size": 0,
  "commit_committer_check": null,
  "commit_committer_name_check": false,
  "reject_unsigned_commits": null,
  "reject_non_dco_commits": null
}

次の属性が無効になっている場合、falseではなくnullが返されます:

  • commit_committer_check
  • reject_unsigned_commits
  • reject_non_dco_commits

プッシュルールがプロジェクトに設定されていない場合の応答例:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 4

null

これは、JSON null値ではなく、リテラル文字列"null"(4文字)を返します。

プロジェクトプッシュルールを追加

指定されたプロジェクトにプッシュルールを追加します。

POST /projects/:id/push_rule

サポートされている属性は以下のとおりです:

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
author_email_regex文字列いいえすべてのコミット作成者のメールは、この正規表現と一致する必要があります。
branch_name_regex文字列いいえすべてのブランチ名は、この正規表現と一致する必要があります。
commit_committer_checkブール値いいえtrueの場合、コミッターのメールが自分自身で検証済みのメールのいずれかである場合、ユーザーはリポジトリにコミットをプッシュできます。
commit_committer_name_checkブール値いいえtrueの場合、コミット作成者名が自分のGitLabアカウント名と一致する場合、ユーザーはこのリポジトリにコミットをプッシュできます。
commit_message_negative_regex文字列いいえどのコミットメッセージも、この正規表現と一致することは許可されていません。
commit_message_regex文字列いいえすべてのコミットメッセージは、この正規表現と一致する必要があります。
deny_delete_tagブール値いいえtrueの場合、タグの削除を拒否します。
file_name_regex文字列いいえすべてのコミットされたファイル名は、この正規表現と一致してはなりません。
max_file_size整数いいえ最大ファイルサイズ(MB)。
member_checkブール値いいえtrueの場合、作成者(メール)によるコミットを既存のGitLabユーザーに制限します。
prevent_secretsブール値いいえtrueの場合、GitLabは、シークレットが含まれている可能性のあるファイルを拒否します。
reject_non_dco_commitsブール値いいえtrueの場合、DCO認定されていないコミットを拒否します。
reject_unsigned_commitsブール値いいえtrueの場合、署名されていないコミットを拒否します。

成功した場合、201 Createdと次のレスポンス属性を返します:

属性説明
author_email_regex文字列すべてのコミット作成者のメールは、この正規表現と一致する必要があります。
branch_name_regex文字列すべてのブランチ名は、この正規表現と一致する必要があります。
commit_committer_checkブール値trueの場合、コミッターのメールが自分自身で検証済みのメールのいずれかである場合、ユーザーはリポジトリにコミットをプッシュできます。
commit_committer_name_checkブール値trueの場合、コミット作成者名が自分のGitLabアカウント名と一致する場合、ユーザーはこのリポジトリにコミットをプッシュできます。
commit_message_negative_regex文字列どのコミットメッセージも、この正規表現と一致することは許可されていません。
commit_message_regex文字列すべてのコミットメッセージは、この正規表現と一致する必要があります。
created_at文字列プッシュルールが作成された日時。
deny_delete_tagブール値trueの場合、タグの削除を拒否します。
file_name_regex文字列すべてのコミットされたファイル名は、この正規表現と一致してはなりません。
id整数プッシュルールのID。
max_file_size整数最大ファイルサイズ(MB)。
member_checkブール値trueの場合、作成者(メール)によるコミットを既存のGitLabユーザーに制限します。
prevent_secretsブール値trueの場合、GitLabは、シークレットが含まれている可能性のあるファイルを拒否します。
project_id整数プロジェクトのID。
reject_non_dco_commitsブール値trueの場合、DCO認定されていないコミットを拒否します。
reject_unsigned_commitsブール値trueの場合、署名されていないコミットを拒否します。

リクエスト例:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/3/push_rule" \
  --data "commit_message_regex=Fixes \\d+\\..*" \
  --data "deny_delete_tag=false"

レスポンス例:

{
  "id": 1,
  "project_id": 3,
  "created_at": "2012-10-12T17:04:47Z",
  "commit_message_regex": "Fixes \\d+\\..*",
  "commit_message_negative_regex": "",
  "branch_name_regex": "",
  "deny_delete_tag": false,
  "member_check": false,
  "prevent_secrets": false,
  "author_email_regex": "",
  "file_name_regex": "",
  "max_file_size": 0,
  "commit_committer_check": false,
  "commit_committer_name_check": false,
  "reject_unsigned_commits": false,
  "reject_non_dco_commits": false
}

プロジェクトプッシュルールを編集

指定されたプロジェクトのプッシュルールを編集します。

PUT /projects/:id/push_rule

サポートされている属性は以下のとおりです:

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
author_email_regex文字列いいえすべてのコミット作成者のメールは、この正規表現と一致する必要があります。
branch_name_regex文字列いいえすべてのブランチ名は、この正規表現と一致する必要があります。
commit_committer_checkブール値いいえtrueの場合、コミッターのメールが自分自身で検証済みのメールのいずれかである場合、ユーザーはリポジトリにコミットをプッシュできます。
commit_committer_name_checkブール値いいえtrueの場合、コミット作成者名が自分のGitLabアカウント名と一致する場合、ユーザーはこのリポジトリにコミットをプッシュできます。
commit_message_negative_regex文字列いいえどのコミットメッセージも、この正規表現と一致することは許可されていません。
commit_message_regex文字列いいえすべてのコミットメッセージは、この正規表現と一致する必要があります。
deny_delete_tagブール値いいえtrueの場合、タグの削除を拒否します。
file_name_regex文字列いいえすべてのコミットされたファイル名は、この正規表現と一致してはなりません。
max_file_size整数いいえ最大ファイルサイズ(MB)。
member_checkブール値いいえtrueの場合、作成者(メール)によるコミットを既存のGitLabユーザーに制限します。
prevent_secretsブール値いいえtrueの場合、GitLabは、シークレットが含まれている可能性のあるファイルを拒否します。
reject_non_dco_commitsブール値いいえtrueの場合、DCO認定されていないコミットを拒否します。
reject_unsigned_commitsブール値いいえtrueの場合、署名されていないコミットを拒否します。

成功した場合、200 OKと次のレスポンス属性を返します:

属性説明
author_email_regex文字列すべてのコミット作成者のメールは、この正規表現と一致する必要があります。
branch_name_regex文字列すべてのブランチ名は、この正規表現と一致する必要があります。
commit_committer_checkブール値trueの場合、コミッターのメールが自分自身で検証済みのメールのいずれかである場合、ユーザーはリポジトリにコミットをプッシュできます。
commit_committer_name_checkブール値trueの場合、コミット作成者名が自分のGitLabアカウント名と一致する場合、ユーザーはこのリポジトリにコミットをプッシュできます。
commit_message_negative_regex文字列どのコミットメッセージも、この正規表現と一致することは許可されていません。
commit_message_regex文字列すべてのコミットメッセージは、この正規表現と一致する必要があります。
created_at文字列プッシュルールが作成された日時。
deny_delete_tagブール値trueの場合、タグの削除を拒否します。
file_name_regex文字列すべてのコミットされたファイル名は、この正規表現と一致してはなりません。
id整数プッシュルールのID。
max_file_size整数最大ファイルサイズ(MB)。
member_checkブール値trueの場合、作成者(メール)によるコミットを既存のGitLabユーザーに制限します。
prevent_secretsブール値trueの場合、GitLabは、シークレットが含まれている可能性のあるファイルを拒否します。
project_id整数プロジェクトのID。
reject_non_dco_commitsブール値trueの場合、DCO認定されていないコミットを拒否します。
reject_unsigned_commitsブール値trueの場合、署名されていないコミットを拒否します。

リクエスト例:

curl --request PUT \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/3/push_rule" \
  --data "commit_message_regex=Fixes \\d+\\..*" \
  --data "deny_delete_tag=true"

レスポンス例:

{
  "id": 1,
  "project_id": 3,
  "created_at": "2012-10-12T17:04:47Z",
  "commit_message_regex": "Fixes \\d+\\..*",
  "commit_message_negative_regex": "",
  "branch_name_regex": "",
  "deny_delete_tag": true,
  "member_check": false,
  "prevent_secrets": false,
  "author_email_regex": "",
  "file_name_regex": "",
  "max_file_size": 0,
  "commit_committer_check": false,
  "commit_committer_name_check": false,
  "reject_unsigned_commits": false,
  "reject_non_dco_commits": false
}

プロジェクトプッシュルールを削除

プロジェクトからプッシュルールを削除します。

DELETE /projects/:id/push_rule

サポートされている属性は以下のとおりです:

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス

成功すると、204 No Contentを返します。

リクエスト例:

curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/3/push_rule"