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

グループプッシュルール

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

プッシュルールを使用して、リポジトリが受け入れるGitコミットの内容と形式を制御します。プッシュルールエンドポイントは、グループのオーナーと管理者のみが利用できます。

グループのプッシュルールを取得します

グループのプッシュルールを取得します。

GET /groups/:id/push_rule

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

属性必須説明
id整数または文字列はいグループのURLエンコードされたパスまたはID。

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

属性説明
author_email_regex文字列この正規表現に一致するコミットの作成者のメールアドレスのみを許可します。
branch_name_regex文字列この正規表現に一致するブランチ名のみを許可します。
commit_committer_checkブール値trueの場合、コミッターのメールが自分自身で確認済みのメールの1つである場合にのみ、ユーザーからのコミットを許可します。
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の場合、シークレットが含まれている可能性のあるファイルを拒否します。
reject_non_dco_commitsブール値trueの場合、DCO認証されていないコミットを拒否します。
reject_unsigned_commitsブール値trueの場合、署名されていないコミットを拒否します。

リクエスト例:

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

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

{
  "id": 1,
  "created_at": "2020-08-17T19:09:19.580Z",
  "commit_message_regex": "[a-zA-Z]",
  "commit_message_negative_regex": "[x+]",
  "branch_name_regex": "[a-z]",
  "author_email_regex": "^[A-Za-z0-9.]+@gitlab.com$",
  "file_name_regex": "(exe)$",
  "deny_delete_tag": false,
  "member_check": false,
  "prevent_secrets": false,
  "max_file_size": 0,
  "commit_committer_check": null,
  "commit_committer_name_check": false,
  "reject_unsigned_commits": null,
  "reject_non_dco_commits": null
}

グループに対してプッシュルールが一度も構成されていない場合、404 Not Foundを返します:

{
  "message": "404 Not Found"
}

これはプロジェクトのプッシュルールとは異なり、プッシュルールが構成されていない場合、HTTP 200 OKはリテラル文字列"null"を返します。

無効にすると、一部のブール型の属性は、falseの代わりにnullを返します。例:

  • commit_committer_check
  • reject_unsigned_commits
  • reject_non_dco_commits

グループにプッシュルールを追加します

プッシュルールをグループに追加します。これまでプッシュルールを定義していない場合にのみ使用してください。

POST /groups/:id/push_rule

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

属性必須説明
id整数または文字列はいIDまたはURLエンコードされたパス。
author_email_regex文字列いいえこの属性で指定された正規表現に一致するコミットの作成者のメールアドレスのみを許可します(例: @my-company.com$)。
branch_name_regex文字列いいえこの属性で指定された正規表現に一致するブランチ名のみを許可します(例: (feature|hotfix)\/.*)。
commit_committer_checkブール値いいえtrueの場合、コミッターのメールが自分自身で確認済みのメールの1つである場合にのみ、ユーザーからのコミットを許可します。
commit_committer_name_checkブール値いいえtrueの場合、コミットの作成者名が自分のGitLabアカウント名と一致する場合にのみ、ユーザーからのコミットを許可します。
commit_message_negative_regex文字列いいえこの属性で指定された正規表現に一致するコミットメッセージを拒否します(例: ssh\:\/\/)。
commit_message_regex文字列いいえtrueの場合、この属性で指定された正規表現に一致するコミットメッセージのみを許可します(例: Fixed \d+\..*)。
deny_delete_tagブール値いいえタグの削除を拒否します。
file_name_regex文字列いいえこの属性で指定された正規表現に一致するファイル名を拒否します(例: (jar|exe)$)。
max_file_size整数いいえ許可される最大ファイルサイズ(MB)。
member_checkブール値いいえtrueの場合、GitLabユーザーのみがコミットを作成することを許可します。
prevent_secretsブール値いいえtrueの場合、シークレットを含む可能性のあるファイルを拒否します。
reject_non_dco_commitsブール値いいえtrueの場合、DCO認証されていないコミットを拒否します。
reject_unsigned_commitsブール値いいえtrueの場合、署名されていないコミットを拒否します。

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

属性説明
author_email_regex文字列この正規表現に一致するコミットの作成者のメールアドレスのみを許可します。
branch_name_regex文字列この正規表現に一致するブランチ名のみを許可します。
commit_committer_checkブール値trueの場合、コミッターのメールが自分自身で確認済みのメールの1つである場合にのみ、ユーザーからのコミットを許可します。
commit_committer_name_checkブール値trueの場合、コミットの作成者名が自分のGitLabアカウント名と一致する場合にのみ、ユーザーからのコミットを許可します。
commit_message_negative_regex文字列この正規表現に一致するコミットメッセージを拒否します。
commit_message_regex文字列trueの場合、この正規表現に一致するコミットメッセージのみを許可します。
created_at文字列プッシュルールが作成された日時。
deny_delete_tagブール値trueの場合、タグの削除を拒否します。
file_name_regex文字列この正規表現に一致するファイル名を拒否します。
id整数プッシュルールのID。
max_file_size整数許可される最大ファイルサイズ(MB)。
member_checkブール値trueの場合、GitLabユーザーのみがコミットを作成することを許可します。
prevent_secretsブール値trueの場合、シークレットが含まれている可能性のあるファイルを拒否します。
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/groups/19/push_rule?prevent_secrets=true"

レスポンス例:

{
  "id": 1,
  "created_at": "2020-08-31T15:53:00.073Z",
  "commit_committer_check": false,
  "commit_committer_name_check": false,
  "reject_unsigned_commits": false,
  "reject_non_dco_commits": false,
  "commit_message_regex": "[a-zA-Z]",
  "commit_message_negative_regex": "[x+]",
  "branch_name_regex": null,
  "deny_delete_tag": false,
  "member_check": false,
  "prevent_secrets": true,
  "author_email_regex": "^[A-Za-z0-9.]+@gitlab.com$",
  "file_name_regex": null,
  "max_file_size": 100
}

グループのプッシュルールを編集します

グループのプッシュルールを編集します。

PUT /groups/:id/push_rule

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

属性必須説明
id整数または文字列はいIDまたはURLエンコードされたパス。
author_email_regex文字列いいえこの属性で指定された正規表現に一致するコミットの作成者のメールアドレスのみを許可します(例: @my-company.com$)。
branch_name_regex文字列いいえこの属性で指定された正規表現に一致するブランチ名のみを許可します(例: (feature|hotfix)\/.*)。
commit_committer_checkブール値いいえtrueの場合、コミッターのメールが自分自身で確認済みのメールの1つである場合にのみ、ユーザーからのコミットを許可します。
commit_committer_name_checkブール値いいえtrueの場合、コミットの作成者名が自分のGitLabアカウント名と一致する場合にのみ、ユーザーからのコミットを許可します。
commit_message_negative_regex文字列いいえこの属性で指定された正規表現に一致するコミットメッセージを拒否します(例: ssh\:\/\/)。
commit_message_regex文字列いいえtrueの場合、この属性で指定された正規表現に一致するコミットメッセージのみを許可します(例: Fixed \d+\..*)。
deny_delete_tagブール値いいえtrueの場合、タグの削除を拒否します。
file_name_regex文字列いいえこの属性で指定された正規表現に一致するファイル名を拒否します(例: (jar|exe)$)。
max_file_size整数いいえ許可される最大ファイルサイズ(MB)。
member_checkブール値いいえtrueの場合、GitLabユーザーのみがコミットを作成することを許可します。
prevent_secretsブール値いいえtrueの場合、シークレットを含む可能性のあるファイルを拒否します。
reject_non_dco_commitsブール値いいえtrueの場合、DCO認証されていないコミットを拒否します。
reject_unsigned_commitsブール値いいえtrueの場合、署名されていないコミットを拒否します。

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

属性説明
author_email_regex文字列この正規表現に一致するコミットの作成者のメールアドレスのみを許可します。
branch_name_regex文字列この正規表現に一致するブランチ名のみを許可します。
commit_committer_checkブール値trueの場合、コミッターのメールが自分自身で確認済みのメールの1つである場合にのみ、ユーザーからのコミットを許可します。
commit_committer_name_checkブール値trueの場合、コミットの作成者名が自分のGitLabアカウント名と一致する場合にのみ、ユーザーからのコミットを許可します。
commit_message_negative_regex文字列この正規表現に一致するコミットメッセージを拒否します。
commit_message_regex文字列trueの場合、この正規表現に一致するコミットメッセージのみを許可します。
created_at文字列プッシュルールが作成された日時。
deny_delete_tagブール値trueの場合、タグの削除を拒否します。
file_name_regex文字列この正規表現に一致するファイル名を拒否します。
id整数プッシュルールのID。
max_file_size整数許可される最大ファイルサイズ(MB)。
member_checkブール値trueの場合、GitLabユーザーのみがコミットを作成することを許可します。
prevent_secretsブール値trueの場合、シークレットが含まれている可能性のあるファイルを拒否します。
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/groups/19/push_rule?member_check=true"

レスポンス例:

{
  "id": 19,
  "created_at": "2020-08-31T15:53:00.073Z",
  "commit_committer_check": false,
  "commit_committer_name_check": false,
  "reject_unsigned_commits": false,
  "reject_non_dco_commits": false,
  "commit_message_regex": "[a-zA-Z]",
  "commit_message_negative_regex": "[x+]",
  "branch_name_regex": null,
  "deny_delete_tag": false,
  "member_check": true,
  "prevent_secrets": false,
  "author_email_regex": "^[A-Za-z0-9.]+@staging.gitlab.com$",
  "file_name_regex": null,
  "max_file_size": 100
}

グループのプッシュルールを削除します

グループのすべてのプッシュルールを削除します。

DELETE /groups/: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/groups/19/push_rule"