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

グループプッシュルールAPI

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

このAPIを使用して、グループ内の新規作成プロジェクトのグループプッシュルールを管理します。

前提条件:

  • グループのオーナーロールを持つか、インスタンスの管理者である必要があります。

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

指定されたグループのプッシュルールを取得する。

GET /groups/: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の場合、シークレットを含む可能性のあるファイルを拒否します。
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"
}

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

無効になっている場合、一部のブール属性は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の場合、コミッターのメールアドレスが自身の検証済みメールアドレスのいずれかである場合にのみ、ユーザーからのコミットを許可します。
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の場合、コミッターのメールアドレスが自身の検証済みメールアドレスのいずれかである場合にのみ、ユーザーからのコミットを許可します。
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の場合、コミッターのメールアドレスが自身の検証済みメールアドレスのいずれかである場合にのみ、ユーザーからのコミットを許可します。
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の場合、コミッターのメールアドレスが自身の検証済みメールアドレスのいずれかである場合にのみ、ユーザーからのコミットを許可します。
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"