# 保护分支规则组
如果使用 project_full_path,确保 project_full_path 编码过,例子:/api/v3/projects/tencent/code--> /api/v3/projects/tencent%2Fcode (/ 编码 %2F)
保护分支规则组是工蜂新的用于管理保护分支的功能。 规则组中包含了原有保护分支的所有配置(包括成员)。每个保护分支都属于一个规则组,并且复用规则组中的配置。 通过设置自动保护分支规则组配置,您可以让分支在创建之后自动配置上对应的规则组。 通过规则组,您可以更加方便的管理保护分支。
如果 branch 包含特殊字符,确保 branch 进行过 encodeURIComponent 编码,例子:feature/function1 --> feature%2Ffunction1。
# 旧的保护分支接口兼容
保护分支和保护分成员相关的创建/删除/编辑接口已经废弃,目前您仍然可以使用这些接口,工蜂在内部会为保护分支匹配上对应的规则组 但在后续的版本中这些接口可能会移除,建议您尽快迁移至新的保护分支规则组接口。 您可以参考下表来进行迁移
| 旧的保护分支接口 | 新的规则组接口 |
|---|---|
| 将分支变为保护分支 | 将分支变为保护分支 |
| 修改保护分支基础设置 | 修改保护分支所在的规则组 |
| 删除保护分支 | 取消保护分支 |
| 为保护分支添加成员 | 为保护分支规则组添加成员 |
| 获取保护分支的成员 | 获取保护分支规则组的成员 |
| 编辑保护分支的成员 | 编辑保护分支规则组的成员 |
| 删除保护分支的指定用户 | 删除保护分支规则组的成员 |
| 分支设置 | 修改自动保护分支规则组配置 |
# 创建保护分支规则组
在项目里面创建保护分支规则组
POST /api/v3/projects/:id/protected_branch_rules
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer 或 string | 项目 ID 或 项目全路径 project_full_path |
| name | string | 规则组名称,在项目内必须唯一。不能包含以下字符串: ``(空格), ", REGEXP, ` |
| description | string(可选) | 规则组的描述 |
| push_access_level | integer(可选) | 推送权限级别,有效值:-1,0,30,40。(默认取 0) -1:No one; 0:Only Branch Members(Except Reporters); 30:Above Developer + Branch Members(Except Reporters); 40:Above Master + Branch Members(Except Reporters) |
| merge_access_level | integer(可选) | 合并权限级别,有效值:0,3,30,40。 (默认取 40) 0 :Only Branch Members(Except Reporters); 3 :Only the Merge Manager; 30:Above Developer + Branch Members(Except Reporters); 40:Above Master + Branch Members(Except Reporters) |
| commit_force | boolean(可选) | 合并请求未被批准时,如果新提交涉及合并请求的更改,是否阻止推送代码。 (默认取项目配置) |
| commit_reset | boolean(可选) | 当源分支有新提交时,评审状态将有状态变更 (默认取项目配置) |
| commit_reset_rule | integer(可选) | 有效值:0,1, 2 0:当前评审状态为已通过时,重置所有评审人的批准 1:将重置所有评审人的批准 2:重置被修改文件的 owners 的批准 |
| review_check | boolean(可选) | 合并请求必须经过代码评审才可合并 (默认取项目配置) |
| commit_check | boolean(可选) | 合并请求必须通过流水线检查才可合并 (默认取项目配置) |
| creator_can_approve | boolean(可选) | 创建者是否可以通过评审 (默认取项目配置) |
| push_create_review | boolean(可选) | Push 之后是否自动创建代码评审单 (默认取项目配置) |
| rule_modify | boolean(可选) | 是否禁止在创建评审时修改评审规则 (默认取项目配置) |
| note_label | boolean(可选) | 评审评论时是否需进行标签分类 (默认取项目配置) |
| resolved_check | boolean(可选) | 所有"未解决"评论都解决后才能通过代码评审 (默认取项目配置) |
| auto_create_review_pre_push | boolean(可选) | 推送启用 Pre-Push 模式 (默认 false) |
| approver_rule | integer(可选) | 审批人规则 -1:所有评审人通过,1:单评审通过,2+:多评审通过 (默认取项目配置) |
| necessary_approver_rule | integer(可选) | 必要审批人规则 -1:所有必要评审人通过,1:单必要评审通过,2+:多必要评审通过,0: 没有必要评审人 (默认取项目配置) |
| suggestion_reviewer | string(可选) | 评审人 id (只能是 id。多个评审人请用英文逗号分隔) (默认取项目配置) |
| necessary_reviewer | string(可选) | 必要评审人 id (只能是 id。多个评审人请用英文逗号分隔) (默认取项目配置) |
| path_reviewer | string(可选) | 路径评委规则 (默认取项目配置) *.js review reviewer=username1,username2 necessary_reviewer=username3,username4 test.java review reviewer=git_user1,git_user2 necessary_reviewer=git_user1,git_user2 |
| mr_template | string(可选) | 合并请求模板 (默认取项目配置) |
| merge_manager | string(可选) | 合并负责人,有效值:"0","-1","单个用户 id" (默认取 0) "0": 不设置; "-1": 仅允许合并请求的创建人合并; "单个用户 id": 仅允许某个用户合并; |
| allow_merge_commits | boolean(可选) | 是否允许 merge_commits 合并代码 (默认取项目配置) |
| allow_squash_merging | boolean(可选) | 是否允许 squash_merging 合并代码 (默认取项目配置) |
| allow_rebase_merging | boolean(可选) | 是否允许 rebase_merging 合并代码 (默认取项目配置) |
| default_merge_method | integer(可选) | 默认的合并方式,可选值:0、1、2 0:允许合并提交 1:允许压缩合并 2:允许变基合并 |
| owners_review_enabled | boolean(可选) | 是否对文件启用 OWNERS 评审 (默认 false) |
| initial_owners_min_count | integer(可选) | 每个文件的最小 OWNER 推荐数量 (0~5) |
| forbidden_add_necessary_reviewer | boolean(可选) | 禁止创建者手动添加必要评审人 (默认取项目配置) |
返回值:
{
"id": 1,
"name": "branch_rule_name",
"description": "description",
"count": 0,
"project_id": 29864,
"default_rule": false,
"created_by_id": 11266,
"update_by_id": 11266,
"created_at": "2021-09-26T07:33:29+0000",
"updated_at": "2021-09-26T07:33:29+0000",
"push_reset_enabled": false,
"commit_reset": false,
"commit_reset_rule": 0,
"suggestion_reviewers": "",
"necessary_reviewers": "",
"path_reviewer_rules": "",
"path_reviewer": "",
"file_owner_path_rules": null,
"can_approve_by_creator": true,
"creator_can_approve": true,
"auto_create_review_after_push": true,
"push_create_review": true,
"pre_push": false,
"auto_create_review_pre_push": false,
"forbidden_modify_rule": false,
"rule_modify": false,
"necessary_approver_rule": 0,
"approver_rule": 1,
"merge_request_template": "%commit_msg%",
"commit_force": false,
"review_check": false,
"commit_check": false,
"note_label": true,
"resolved_check": false,
"merge_manager": "123",
"merge_request_must_link_tapd_tickets": false,
"allow_merge_commits": true,
"allow_squash_merging": true,
"allow_rebase_merging": true,
"default_merge_method": 1,
"push_access_level": 40,
"merge_access_level": 40,
"mr_template": "%commit_msg%",
"allow_certified_approver_enabled": false,
"certified_approver_rule": 1,
"certificate_level": "IREAD",
"certified_language_rules": [
{
"extended_suffix": [
""
],
"default_suffix": [
"cpp",
"cc",
"cxx",
"c++"
],
"enable": true,
"language": "C++"
},
{
"extended_suffix": [
""
],
"default_suffix": [
"go"
],
"enable": true,
"language": "Go"
},
{
"extended_suffix": [
""
],
"default_suffix": [
"java"
],
"enable": true,
"language": "Java"
},
{
"extended_suffix": [
""
],
"default_suffix": [
"js",
"jsx"
],
"enable": true,
"language": "JavaScript"
},
{
"extended_suffix": [
""
],
"default_suffix": [
"ts",
"tsx"
],
"enable": true,
"language": "TypeScript"
},
{
"extended_suffix": [
""
],
"default_suffix": [
"m",
"swift",
"mm"
],
"enable": true,
"language": "Objective-C"
},
{
"extended_suffix": [
""
],
"default_suffix": [
"py"
],
"enable": true,
"language": "Python"
}
],
"owners_review_enabled": false,
"initial_owners_min_count": 1,
"forbidden_add_necessary_reviewer": false
}
# 修改保护分支规则组
编辑项目下指定的保护分支规则组
注意:修改之后,规则组下所有保护分支的配置均会同步修改,请谨慎操作!
PUT /api/v3/projects/:id/protected_branch_rules/:rule_id
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer 或 string | 项目 ID 或 项目全路径 project_full_path |
| rule_id | integer | 规则组 ID |
| name | string(可选) | 规则组名称,在项目内必须唯一。不能包含以下字符串: ``(空格), ", REGEXP, ` |
| description | string(可选) | 规则组的描述 |
| push_access_level | integer(可选) | 推送权限级别,有效值:-1,0,30,40。 -1:No one; 0 :Only Branch Members(Except Reporters); 30:Above Developer + Branch Members(Except Reporters); 40:Above Master + Branch Members(Except Reporters) |
| merge_access_level | integer(可选) | 合并权限级别,有效值:0,3,30,40。 (默认取 40) 0 :Only Branch Members(Except Reporters); 3 :Only the Merge Manager; 30:Above Developer + Branch Members(Except Reporters); 40:Above Master + Branch Members(Except Reporters) |
| commit_force | boolean(可选) | 合并请求未被批准时,如果新提交涉及合并请求的更改,是否阻止推送代码。 |
| commit_reset | boolean(可选) | 当源分支有新提交时,评审状态将有状态变更 |
| commit_reset_rule | integer(可选) | 有效值:0,1, 2 0:当前评审状态为已通过时,重置所有评审人的批准 1:将重置所有评审人的批准 2:重置被修改文件的 owners 的批准 |
| review_check | boolean(可选) | 合并请求必须经过代码评审才可合并 |
| commit_check | boolean(可选) | 合并请求必须通过流水线检查才可合并 |
| creator_can_approve | boolean(可选) | 创建者是否可以通过评审 |
| push_create_review | boolean(可选) | Push 之后是否自动创建代码评审单 |
| rule_modify | boolean(可选) | 是否禁止在创建评审时修改评审规则 |
| note_label | boolean(可选) | 评审评论时是否需进行标签分类 |
| resolved_check | boolean(可选) | 所有"未解决"评论都解决后才能通过代码评审 |
| auto_create_review_pre_push | boolean(可选) | 推送启用 Pre-Push 模式 (默认 false) |
| approver_rule | integer(可选) | 审批人规则 -1:所有评审人通过,1:单评审通过,2+:多评审通过 |
| necessary_approver_rule | integer(可选) | 必要审批人规则 -1:所有必要评审人通过,1:单必要评审通过,2+:多必要评审通过,0: 没有必要评审人 |
| suggestion_reviewer | string(可选) | 评审人 id (只能是 id。多个评审人请用英文逗号分隔) |
| necessary_reviewer | string(可选) | 必要评审人 id (只能是 id。多个评审人请用英文逗号分隔) |
| path_reviewer | string(可选) | 路径评委规则 *.js review reviewer=username1,username2 necessary_reviewer=username3,username4\r\ntest.java review reviewer=git_user1,git_user2 necessary_reviewer=git_user1,git_user2 |
| mr_template | string(可选) | 合并请求模板 |
| allow_merge_commits | boolean(可选) | 是否允许 merge_commits 合并代码 |
| allow_squash_merging | boolean(可选) | 是否允许 squash_merging 合并代码 |
| allow_rebase_merging | boolean(可选) | 是否允许 rebase_merging 合并代码 |
| default_merge_method | integer(可选) | 默认的合并方式,可选值:0、1、2 0:允许合并提交 1:允许压缩合并 2:允许变基合并 |
| owners_review_enabled | boolean(可选) | 是否对文件启用 OWNERS 评审 (默认 false) |
| initial_owners_min_count | integer(可选) | 每个文件的最小 OWNER 推荐数量 (0~5) |
| forbidden_add_necessary_reviewer | boolean(可选) | 禁止创建者手动添加必要评审人 |
返回值:
{
"id": 1,
"name": "branch_rule_name",
"description": "description",
"count": 0,
"project_id": 29864,
"default_rule": false,
"created_by_id": 11266,
"update_by_id": 11266,
"created_at": "2021-09-26T07:33:29+0000",
"updated_at": "2021-09-26T07:33:29+0000",
"push_reset_enabled": true,
"commit_reset": true,
"commit_reset_rule": 2,
"suggestion_reviewers": null,
"necessary_reviewers": null,
"path_reviewer_rules": "",
"path_reviewer": "",
"file_owner_path_rules": null,
"can_approve_by_creator": false,
"creator_can_approve": false,
"auto_create_review_after_push": false,
"push_create_review": false,
"pre_push": false,
"auto_create_review_pre_push": false,
"forbidden_modify_rule": false,
"rule_modify": false,
"necessary_approver_rule": 0,
"approver_rule": 1,
"merge_request_template": "%commit_msg%",
"mr_template": "%commit_msg%",
"commit_force": false,
"review_check": false,
"commit_check": false,
"note_label": false,
"resolved_check": false,
"merge_manager": "0",
"merge_request_must_link_tapd_tickets": false,
"allow_merge_commits": true,
"allow_squash_merging": true,
"allow_rebase_merging": true,
"default_merge_method": 0,
"push_access_level": 0,
"merge_access_level": 40,
"allow_certified_approver_enabled": false,
"certified_approver_rule": 1,
"certificate_level": "IREAD",
"certified_language_rules": [
{
"extended_suffix": [
""
],
"default_suffix": [
"cpp",
"cc",
"cxx",
"c++"
],
"enable": true,
"language": "C++"
},
{
"extended_suffix": [
""
],
"default_suffix": [
"go"
],
"enable": true,
"language": "Go"
},
{
"extended_suffix": [
""
],
"default_suffix": [
"java"
],
"enable": true,
"language": "Java"
},
{
"extended_suffix": [
""
],
"default_suffix": [
"js",
"jsx"
],
"enable": true,
"language": "JavaScript"
},
{
"extended_suffix": [
""
],
"default_suffix": [
"ts",
"tsx"
],
"enable": true,
"language": "TypeScript"
},
{
"extended_suffix": [
""
],
"default_suffix": [
"m",
"swift",
"mm"
],
"enable": true,
"language": "Objective-C"
},
{
"extended_suffix": [
""
],
"default_suffix": [
"py"
],
"enable": true,
"language": "Python"
}
],
"owners_review_enabled": false,
"initial_owners_min_count": 1,
"forbidden_add_necessary_reviewer": false
}
# 删除保护分支规则组
删除项目下某个保护分支规则组。 只有满足以下条件,规则组才能被删除:
- 规则组下无保护分支。
- 规则组不是默认规则组。
- 规则组不在自动保护分支正则中。
DELETE /api/v3/projects/:id/protected_branch_rules/:rule_id
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer 或 string | 项目 ID 或 项目全路径 project_full_path |
| rule_id | integer | 规则组 ID |
返回值:
200 或其他返回值
# 查看某个保护分支规则组
GET /api/v3/projects/:id/protected_branch_rules/:rule_id
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer 或 string | 项目 ID 或 项目全路径 project_full_path |
| rule_id | integer | 规则组 ID |
返回值:
{
"id": 1,
"name": "branch_rule_name",
"description": "description",
"count": 0,
"project_id": 29864,
"default_rule": false,
"created_by_id": 11266,
"update_by_id": 11266,
"created_at": "2021-09-26T07:33:29+0000",
"updated_at": "2021-09-26T07:33:29+0000",
"push_reset_enabled": true,
"commit_reset": true,
"suggestion_reviewers": null,
"necessary_reviewers": null,
"path_reviewer_rules": null,
"file_owner_path_rules": null,
"can_approve_by_creator": false,
"creator_can_approve": false,
"auto_create_review_after_push": false,
"push_create_review": false,
"pre_push": false,
"auto_create_review_pre_push": false,
"forbidden_modify_rule": false,
"rule_modify": false,
"necessary_approver_rule": 0,
"approver_rule": 1,
"merge_request_template": "%commit_msg%",
"mr_template": "%commit_msg%",
"commit_force": false,
"review_check": false,
"commit_check": false,
"note_label": false,
"resolved_check": false,
"merge_manager": "0",
"merge_request_must_link_tapd_tickets": false,
"allow_merge_commits": true,
"allow_squash_merging": true,
"allow_rebase_merging": true,
"default_merge_method": 0,
"push_access_level": 40,
"merge_access_level": 40,
"allow_certified_approver_enabled": false,
"certified_approver_rule": 1,
"certificate_level": "IREAD",
"certified_language_rules": [
{
"extended_suffix": [],
"default_suffix": [
"cpp",
"cc",
"cxx",
"c++"
],
"enable": true,
"language": "C++"
},
{
"extended_suffix": [],
"default_suffix": [
"go"
],
"enable": true,
"language": "Go"
},
{
"extended_suffix": [],
"default_suffix": [
"java"
],
"enable": true,
"language": "Java"
},
{
"extended_suffix": [],
"default_suffix": [
"js",
"jsx"
],
"enable": true,
"language": "JavaScript"
},
{
"extended_suffix": [],
"default_suffix": [
"ts",
"tsx"
],
"enable": true,
"language": "TypeScript"
},
{
"extended_suffix": [],
"default_suffix": [
"m",
"swift",
"mm"
],
"enable": true,
"language": "Objective-C"
},
{
"extended_suffix": [],
"default_suffix": [
"py"
],
"enable": true,
"language": "Python"
}
],
"owners_review_enabled": false,
"initial_owners_min_count": 1,
"forbidden_add_necessary_reviewer": false
}
# 保护分支规则组列表
返回项目下的规则组列表,按规则组的更新时间倒序
GET /api/v3/projects/:id/protected_branch_rules
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer 或 string | 项目 ID 或 项目全路径 project_full_path |
| page | integer(可选) | 分页(默认值:1) |
| per_page | integer(可选) | 默认页面大小(默认:20,最大:100) |
| search | string(可选) | 搜索条件,模糊匹配规则组名 |
返回值:
[
{
"id": 1,
"name": "branch_rule_name2",
"description": "description",
"count": 0,
"project_id": 29864,
"default_rule": false,
"created_by_id": 11266,
"update_by_id": 11266,
"created_at": "2021-09-26T07:33:29+0000",
"updated_at": "2021-09-26T07:33:29+0000",
"push_reset_enabled": false,
"suggestion_reviewers": "",
"necessary_reviewers": "",
"path_reviewer_rules": "",
"file_owner_path_rules": null,
"can_approve_by_creator": true,
"auto_create_review_after_push": false,
"pre_push": false,
"forbidden_modify_rule": false,
"necessary_approver_rule": 0,
"approver_rule": 1,
"merge_request_template": "%commit_msg%",
"commit_force": false,
"review_check": false,
"note_label": true,
"resolved_check": false,
"merge_manager": "123",
"merge_request_must_link_tapd_tickets": false,
"allow_merge_commits": true,
"allow_squash_merging": true,
"allow_rebase_merging": true,
"push_access_level": 40,
"merge_access_level": 40,
"commit_reset": false,
"creator_can_approve": true,
"rule_modify": false,
"path_reviewer": "",
"mr_template": "%commit_msg%"
"allow_certified_approver_enabled": false,
"certified_approver_rule": 1,
"certificate_level": "IREAD",
"certified_language_rules": [
{
"extended_suffix": [
""
],
"default_suffix": [
"cpp",
"cc",
"cxx",
"c++"
],
"enable": true,
"language": "C++"
},
{
"extended_suffix": [
""
],
"default_suffix": [
"go"
],
"enable": true,
"language": "Go"
},
{
"extended_suffix": [
""
],
"default_suffix": [
"java"
],
"enable": true,
"language": "Java"
},
{
"extended_suffix": [
""
],
"default_suffix": [
"js",
"jsx"
],
"enable": true,
"language": "JavaScript"
},
{
"extended_suffix": [
""
],
"default_suffix": [
"ts",
"tsx"
],
"enable": true,
"language": "TypeScript"
},
{
"extended_suffix": [
""
],
"default_suffix": [
"m",
"swift",
"mm"
],
"enable": true,
"language": "Objective-C"
},
{
"extended_suffix": [
""
],
"default_suffix": [
"py"
],
"enable": true,
"language": "Python"
}
]
}
]
# 将分支变为保护分支
在项目中将某个分支变为保护分支,必须指定所在的规则组
POST /api/v3/projects/:id/protected_branch_rules/:rule_id/branches
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer 或 string | 项目 ID 或 项目全路径 project_full_path |
| rule_id | integer | 规则组 ID |
| branch | string | 分支名 |
返回值:
{
"id": 123,
"projectId": 123,
"name": "branch_name",
"rule_id": 1,
"created_at": "2021-09-26T08:40:37+0000",
"updated_at": "2021-09-26T08:40:37+0000"
}
# 修改保护分支所在的规则组
修改保护分支所在的规则组,从而修改保护分支本身的配置。
PUT /api/v3/projects/:id/protected_branch_rules/:rule_id/branches/:branch
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer 或 string | 项目 ID 或 项目全路径 project_full_path |
| rule_id | integer | 规则组 ID |
| branch | string | 分支名 |
| new_rule_id | integer | 新的规则组 id |
返回值:
{
"id": 123,
"projectId": 123,
"name": "branch_name",
"rule_id": 1,
"created_at": "2021-09-26T08:40:37+0000",
"updated_at": "2021-09-26T08:40:37+0000"
}
# 取消保护分支
取消受保护分支
DELETE /api/v3/projects/:id/protected_branch_rules/:rule_id/branches/:branch
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer 或 string | 项目 ID 或 项目全路径 project_full_path |
| rule_id | integer | 规则组 ID |
| branch | string | 分支名 |
返回值:
# 获取保护分支规则组下的保护分支列表
返回项目下某个规则组的保护分支列表
GET /api/v3/projects/:id/protected_branch_rules/:rule_id/branches
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer 或 string | 项目 ID 或 项目全路径 project_full_path |
| rule_id | integer | 规则组 ID |
| search | string(可选) | 搜索条件,模糊匹配 分支名 |
| page | integer(可选) | 页数(默认值:1) |
| per_page | integer(可选) | 默认页面大小(默认值:20,最大值:100) |
返回值:
[
{
"id": 1,
"projectId": 2,
"name": "api_create",
"rule_id": 1,
"created_at": "2021-09-22T12:04:21+0000",
"updated_at": "2021-09-23T12:04:55+0000"
},
{
"id": 2,
"projectId": 2,
"name": "dev",
"rule_id": 1,
"created_at": "2021-09-26T07:59:48+0000",
"updated_at": "2021-09-26T07:59:48+0000"
}
]
# 保护分支规则组成员
保护分支规则组成员访问权限包括:
REPORTER = 20
DEVELOPER = 30
MASTER = 40
访问权限不能被设置为低于 REPORTER 或者 高于 MASTER
# 为保护分支规则组添加成员
POST /api/v3/projects/:id/protected_branch_rules/:rule_id/members
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer 或 string | 项目 ID 或 项目全路径 project_full_path |
| rule_id | integer | 规则组 ID |
| user_id | integer | 用户的 ID |
| access_level | integer | 要给用户设置的访问级别 |
返回值:
{
"id": 1223,
"avatar_url": "git.tencent.com/uploads/user/avatar/1223",
"username": "user_git022",
"web_url": "https://git.tencent.com/u/user_git022",
"name": "user_git022",
"state": "active",
"access_level": 40
}
# 获取保护分支规则组的成员
GET /api/v3/projects/:id/protected_branch_rules/:rule_id/members
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer 或 string | 项目 ID 或 项目全路径 project_full_path |
| rule_id | integer | 规则组 ID |
| search | string(可选) | 搜索条件,模糊匹配 username |
| page | integer(可选) | 页数(默认值:1) |
| per_page | integer(可选) | 默认页面大小(默认值:20,最大值:100) |
返回值:
[{
"id": 1223,
"avatar_url": "git.tencent.com/uploads/user/avatar/1223",
"username": "user_git022",
"web_url": "https://git.tencent.com/u/user_git022",
"name": "user_git022",
"state": "active",
"access_level": 40
}]
# 编辑保护分支规则组的成员
PUT /api/v3/projects/:id/protected_branch_rules/:rule_id/members/:user_id
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer 或 string | 项目 ID 或 项目全路径 project_full_path |
| rule_id | integer | 规则组 ID |
| user_id | integer | 用户的 ID |
| access_level | integer | 要给用户设置的访问级别 |
返回值:
{
"id": 1223,
"avatar_url": "git.tencent.com/uploads/user/avatar/1223",
"username": "user_git022",
"web_url": "https://git.tencent.com/u/user_git022",
"name": "user_git022",
"state": "active",
"access_level": 30
}
# 删除保护分支规则组的成员
DELETE /api/v3/projects/:id/protected_branch_rules/:rule_id/members/:user_id
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer 或 string | 项目 ID 或 项目全路径 project_full_path |
| rule_id | integer | 规则组 ID |
| user_id | integer | 用户的 ID |
返回值:
200 或其他返回值
# 保护分支规则组项目相关设置
设置默认保护分支规则组、自动保护分支规则,需要具有项目 master 以上权限
# 修改保护分支默认规则组
PUT /api/v3/projects/:id/config/default_protected_branch_rule_id
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer 或 string | 项目 ID 或 项目全路径 project_full_path |
| rule_id | integer | 默认规则组 id |
返回值:
{
"limit_size": 512000,
"limit_file_size": 512,
"limit_lfs_size": 512000,
"limit_lfs_file_size": 51200,
"branch_name_regex": "",
"auto_protect_branches": "dev.*",
"tag_name_regex": null,
"tag_create_push_level": 30,
"default_protected_branch_rule_id": "`branch_rule_default` REGEXP \"feature.*\"\n`branch_rule_009` REGEXP \"00222229.*\"",
"auto_protected_branch_rules": 58
}
# 自动保护规则
# 获取自动保护分支规则配置
获取项目的自动保护分支规则
GET /api/v3/projects/:id/config/auto_protected_branch_rules
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer 或 string | 项目 ID 或 项目全路径 project_full_path |
返回值:
"`branch_rule_1` REGEXP \"dev.*\""
# 修改自动保护分支规则组配置
修改项目的自动保护分支规则。可以通过正则表达式,让分支在创建之后自动匹配到对应的保护分支规则组
语法为 `规则组名` REGEXP "正则表达式" 。多个用换行符分隔。
e.g.
`branch_rule_1` REGEXP "branch_01.*"
`branch_rule_dev` REGEXP "dev.*"
PUT /api/v3/projects/:id/config/auto_protected_branch_rules
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer 或 string | 项目 ID 或 项目全路径 project_full_path |
| auto_protected_branch_rules | string | 自动保护分支规则。 |
| should_update_existing_branches | boolean(可选) | 是否根据自动保护分支规则更新存量分支,不传递则默认以当前项目配置的值为准 |
返回值:
{
"limit_size": 512000,
"limit_file_size": 512,
"limit_lfs_size": 512000,
"limit_lfs_file_size": 51200,
"branch_name_regex": "",
"auto_protect_branches": "dev.*",
"tag_name_regex": null,
"tag_create_push_level": 30,
"default_protected_branch_rule_id": "`branch_rule_default` REGEXP \"feature.*\"\n`branch_rule_009` REGEXP \"00222229.*\"",
"auto_protected_branch_rules": 58,
"should_update_existing_branches": true
}
# 保护分支规则组持证评审规则相关设置
# 修改保护分支规则组持证评审规则
注意:需要 master 及以上权限,请将参数以 json 的格式放置在 request 请求体中.
PUT /api/v3/projects/:id/protected_branch_rules/:rule_id/certified_reviewer_config
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer 或 string | 项目 ID 或 项目全路径 project_full_path |
| rule_id | string | 保护分支规则组 id |
| allow_certified_approver_enabled | boolean | 持证评审开关 true/false |
| certified_language_rules | string[] | 持证评审的证书语言配置,参考下面的 certified_language_rules |
certified_language_rules 参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| enable | Boolean | 语言开关 true/false |
| language | string | 语言列表("C++"/"Go"/"Java"/"JavaScript/TypeScript"/"Objective-C"/"Python") |
| extended_suffix | string[] | 拓展文件后缀"txt","pdf"等 |
Body 举例:
{
"allow_certified_approver_enabled":true,
"certified_language_rules":[
{
"language": "c++",
"extended_suffix": ["text"],
"enable": true
},
{
"language": "Go",
"extended_suffix": [],
"enable": false
}
]
}
返回值:
{
"id": 228508,
"name": "master_rule_001",
"description": "This is the protection branch rule group created from the protected branch page",
"count": 1,
"project_id": 10625560,
"default_rule": true,
"created_by_id": 385488,
"update_by_id": 385488,
"created_at": "2021-12-31T07:57:38+0000",
"updated_at": "2022-02-22T02:00:30+0000",
"push_reset_enabled": false,
"suggestion_reviewers": "227375",
"necessary_reviewers": "13233",
"path_reviewer_rules": "*.js review reviewer=s-1\n\n",
"file_owner_path_rules": null,
"can_approve_by_creator": true,
"auto_create_review_after_push": true,
"push_create_review": true,
"pre_push": false,
"auto_create_review_pre_push": false,
"forbidden_modify_rule": false,
"necessary_approver_rule": 0,
"approver_rule": 1,
"merge_request_template": "%commit_msg%",
"commit_force": false,
"review_check": true,
"note_label": false,
"resolved_check": true,
"merge_manager": "13233",
"merge_request_must_link_tapd_tickets": false,
"allow_merge_commits": true,
"allow_squash_merging": true,
"allow_rebase_merging": true,
"push_access_level": 40,
"merge_access_level": 40,
"allow_certified_approver_enabled": true,
"certified_approver_rule": 1,
"certificate_level": "IREAD",
"certified_language_rules": [
{
"extended_suffix": [
"text"
],
"default_suffix": [
"cpp",
"cc",
"cxx",
"c++"
],
"enable": true,
"language": "C++"
},
{
"extended_suffix": [],
"default_suffix": [
"go"
],
"enable": false,
"language": "Go"
},
{
"extended_suffix": [],
"default_suffix": [
"java"
],
"enable": true,
"language": "Java"
},
{
"extended_suffix": [],
"default_suffix": [
"js",
"jsx"
],
"enable": true,
"language": "JavaScript"
},
{
"extended_suffix": [],
"default_suffix": [
"ts",
"tsx"
],
"enable": true,
"language": "TypeScript"
},
{
"extended_suffix": [],
"default_suffix": [
"m",
"swift",
"mm"
],
"enable": true,
"language": "Objective-C"
},
{
"extended_suffix": [],
"default_suffix": [
"py"
],
"enable": true,
"language": "Python"
}
]
}