配置评审人
git:reviewer
给 PR
添加评审人。
# 适用事件
pull_request
pull_request.target
# 参数
# type
- type: REVIEW_OPERATION_TYPE
- required:
false
- default:
add-reviewer
操作类型
add-reviewer
: 添加reviewer
,添加reviewers
参数传入的成员add-reviewer-from-repo-members
: 从仓库直接成员里选一名,添加为reviewer
add-reviewer-from-group-members
: 从仓库父组织(直接上级组织)里选一名,添加为reviewer
add-reviewer-from-outside-collaborator-members
: 从仓库的外部协作者里选一名,添加为reviewer
remove-reviewer
从已有的 reviewer 中删除指定的成员
# reviewers
- type:
Array<String>
|String
- required:
false
要 添加
或 删除
的 reviewer
用户名。多个使用 ,
或 ;
分隔。
type
为 add-reviewer
、remove-reviewer
时必填。
若同时配置了 reviewers
、 reviewersConfig
,则会在两者中随机选指定数量的评审人
# count
- type:
Number
- required:
false
指定要添加的 reviewer
数量,随机抽取。
- 当
type=add-reviewer
,count 缺省值为reviewers
的数量,即全部添加 - 当
type=add-reviewer-from-repo-members
,count 缺省值为 1 - 当
type=add-reviewer-from-group-members
,count 缺省值为 1 - 当
type=add-reviewer-from-outside-collaborator-members
,count 缺省值为 1
如果已有 reviewer
的数量 < count
,那么补齐。
如果已有 reviewer
的数量 >= count
,那么什么也不做。
# exclude
- type:
Array<String>
|String
- required:
false
排除指定的用户。
# reviewersConfig
- type: IReviewersConfig |
String
- required:
false
文件评审人配置,如果配置中有配置当前变更文件的评审人,则会被添加为评审人。
type
为 add-reviewer
时有效。
支持两种格式:
- 字符串格式,传入配置文件相对路径(支持
json
文件):
reviewersConfig: config.json
{
"./src": "name1,name2",
".cnb.yml": "name3"
}
- 对象格式,传入文件评审人配置:
reviewersConfig:
./src: name1,name2
.cnb.yml: name3
其中,文件评审人配置的 key
为文件相对路径;value
为评审人英文名,用英文逗号分隔。
若同时配置了 reviewers
、 reviewersConfig
,则会在两者中随机选指定数量的评审人。
# role
- type: ROLE_TYPE
- required:
false
评审人可以添加的角色
可选包括:Developer
、Master
、Owner
如果选择 Developer
,则可添加 Developer
及以上权限成员,包括 Developer
、Master
、Owner
# 输出结果
{
// 当前有效的 reviewers
reviewers,
// reviewers对应的 at 消息格式,方便发送通知
reviewersForAt
}
# 配置样例
- 添加评审人
main:
pull_request:
- stages:
- name: 添加评审人
type: git:reviewer
options:
type: add-reviewer
reviewers: aaa;bbb
- 删除指定成员
main:
pull_request:
- stages:
- name: 删除评审人
type: git:reviewer
options:
type: remove-reviewer
reviewers: aaa
- 结合 ifModify,指定文件被修改时添加 reviewer
main:
pull_request:
- stages:
- name: 改配置?需要特别 review
ifModify:
- ".cnb.yml"
- "configs/**"
type: git:reviewer
options:
type: add-reviewer
reviewers: bbb
- 结合 if,在指定条件下将某些人添加为 reviewer
main:
pull_request:
- stages:
- name: 下班时间发版本?需指定人评审。
if: |
[ $(date +%H) -ge 18 ]
type: git:reviewer
options:
type: add-reviewer
reviewers: bbb
- 随机选择一名负责人走查代码
main:
pull_request:
- stages:
- name: random
image: tencentcom/random
settings:
from:
- aaa
- bbb
exports:
result: CURR_REVIEWER
- name: show CURR_REVIEWER
script: echo ${CURR_REVIEWER}
- name: add reviewer
type: git:reviewer
options:
type: add-reviewer
reviewers: ${CURR_REVIEWER}
- 从当前仓库成员里选一名评审人进行 review
main:
pull_request:
- stages:
- name: add reviewer
type: git:reviewer
options:
type: add-reviewer-from-repo-members
# 最佳实践
建立专用的 CR 群,交叉评审自动合并
PR
随机选择N名评审者,通知到群- 评审通过后自动合并
- 记录评审者信息在提交信息中
Git
设置满足多人评审自动合并策略实现多人交叉评审
main:
review:
- stages:
- name: CR 通过后自动合并
type: git:auto-merge
options:
mergeType: squash
removeSourceBranch: true
mergeCommitMessage: $CNB_LATEST_COMMIT_MESSAGE
exports:
reviewedBy: REVIEWED_BY
# 将评审消息发送到企业微信机器人
- name: notify
image: tencentcom/wecom-message
settings:
msgType: markdown
robot: "155af237-6041-4125-9340-000000000000"
content: |
> CR 通过后自动合并 <@${CNB_BUILD_USER}>
>
> ${CNB_PULL_REQUEST_TITLE}
> [${CNB_EVENT_URL}](${CNB_EVENT_URL})
>
> ${REVIEWED_BY}
pull_request:
- stages:
# ...省略其它任务
# 发送到 CR 专用群
- name: add reviewer
type: git:reviewer
options:
reviewers: aaa,bbb,ccc,ddd
count: 2
exports:
reviewersForAt: CURR_REVIEWER_FOR_AT
- name: notify
image: tencentcom/wecom-message
settings:
msgType: markdown
robot: "155af237-6041-4125-9340-000000000000"
message: |
> ${CURR_REVIEWER_FOR_AT}
>
> ${CNB_PULL_REQUEST_TITLE}
> [${CNB_EVENT_URL}](${CNB_EVENT_URL})
>
> from ${CNB_BUILD_USER}
← issue-update release →