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