Prow是kubernetes社区使用的CI/CD系统,基于kubernetes实现,它提供了一系列/foo格式的命令供用户使用。使用这些指令,可以让机器人完成相应的工作,例如,当你提交PR后,可以使用/assign @<somebody>命令来指定一个owner来审核你的PR。

当开发者提交PR(Pull Request)到kubernetes社区时,机器人会自动回复你,并在回复中指示当前PR的状态或者指示你下一步该如何做,别人也会在你的PR中回复一些机器人命令,所以,做为开发者有必要清楚的了解常用的一些命令。

TODO: 或许可以按照标签操作类、流程控制类、其他来分类

重跑失败的用例:/retest

顾名思义,这个命令用于重新执行失败的测试(有时自动化测试会因环境因素而失败),由于只有PR才会触发自动化测试,所以这个命令仅用于PR中。

用法举例:

  • /retest : 重启失败的测试

使用条件:

  • 只能用于可信的PR,即包含ok-to-test标签的PR;
  • 任何人都可以使用;

命令效果:

  • 重新启动失败的测试;

图示如下:

Kubernetes rbac配置 kubernetes prow_用例

手动触发测试用途:/test

/test用于手动执行某个或全部测试用例,有些用例并没包括在自动化测试用例范围内,如有必要可以手动触发。

用法举例:

  • /test pull-kubernetes-bazel-test:启动pull-kubernetes-bazel-test测试;
  • /test all: 启动全部测试用例;

限制条件:

  • 只能用于可信的PR,即包含ok-to-test标签的PR;
  • 任何人都可以使用;

命令效果:

  • 启动指定的测试用例;

图示如下:

Kubernetes rbac配置 kubernetes prow_用例_02

修改标题:/retitle

看起来不错:/lgtm

lgtmlooks good to me的缩写,用来表示对某个PR的认可。

当某个reviewer在PR中回复/lgtm时有两个意思,一方面表示对PR的认可,另一方面指示机器人在该PR中打上lgtm标签。拥有lgtm标签是该PR最终能被合入的必要条件。

lgtm标签也是可以撤销的,当其他reviewer或作者发现还有问题需要修改时,可以以使用/lgtm cancel来撤消标签。

用法举例:

  • /lgtm:代码检视后使用,给PR增加lgtm标签;
  • /lgtm cancel:删除lgtm标签;

限制条件:

  • 只能被社区成员使用;
  • PR作者可以使用lgtm cancel;

命令效果:

  • 给PR增加或删除lgtm标签;

图示如下:

Kubernetes rbac配置 kubernetes prow_用例_03

/check-dco
/check-cla
/cc
/assign
/approve
/auto-cc
/bugzilla refresh
/buildif(y|ier)
/meow(vie) [CATegory]
/(woof|bark|this-is-{fine|not-fine|unbearable})
/lint
/remove-

/hold [cancel]
/remove-

/close
/reopen
/[remove-]lifecycle
/milestone or /milestone clear
/status (approved-for-milestone|in-progress|in-review)
/override [context]
/(pony) [pony]
/project , /project , or /project clear
/release-note-none
/[un]shrug
/skip
/[remove-]stage
/ok-to-test
/joke

/joke是个非常有意思的命令,它会指示机器人讲个笑话,除此之外没有任何作用。

用法举例:

  • /joke;

限制条件:

  • 任何人都可以使用;

命令效果:

  • 机器人回复一个笑话,并@命令发起人;

图示如下:

Kubernetes rbac配置 kubernetes prow_Kubernetes rbac配置_04