正式なドキュメントは英語版であり、この日本語訳は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"が返されます。

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

リクエスト例:

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

これはリテラル文字列"null"(4文字)を返し、JSON null値ではありません。

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

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

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"