プロジェクトプッシュルール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_checkreject_unsigned_commitsreject_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"