关于k8s:K8s-系列二-K8s-PR-怎样才能被-merge

3次阅读

共计 3623 个字符,预计需要花费 10 分钟才能阅读完成。

K8s 作为一个开源我的项目,激励全世界的参与者踊跃贡献力量,包含 kubernetes/kubernetes 主我的项目、kubernetes/websitekubernetes/enhancementsK8s 相干我的项目都是如此。本文将介绍给 K8sPR 相干流程、注意事项等。

1. 发现 Bug 先提 Issue

首先祝贺你,通过认真仔细浏览 K8s 源码 (https://github.com/kubernetes/kubernetes),或在工作实际中偶尔遇到了一个 K8s bug,第一步应该到官网 issues(https://github.com/kubernetes/kubernetes/issues) 上面查问一下,是否其他人曾经提过相干或雷同的 issue 了,如果没有查到相干 issue,那么就能够点击页面右上角 “New issue” 创立一个新 issue

而后,抉择对应的 issue 类型,如果是 bug 则抉择第一个 “Bug Report“:

接着,就须要填写具体 bugtitle, content,能够依据默认模板精确填写如 What happened, How to reproduce it, Environment(kubectl 版本号、OS 类型 ) 等,尽量清晰、筹备形容,能够间接将 bug 对应的代码文件、行数标记进去,不便 Reviewer 疾速辨认 issue 的真伪。

2. Fork 代码进行 PR

PR(Pull Request) 第一步是 fork 一份 K8s master 分支代码到本人的集体仓库 (Repo),在 GitHub 界面上右上角点击 “Fork“,抉择本人的集体 GitHub 账号,稍等几秒就能够看到胜利 fork 到了本人仓库。

此时,就能够在本地通过 git clone 刚刚 forkrepo,个别默认拉下来是 master 分支,基于 master 分支创立一个新分支,命名清晰达意。而后就能够欢快的进行代码更改,减少相干正文等,批改结束 git commit 即可。

留神:commit message 尽量清晰达意,不要应用 @xxx 特殊符号,开端不须要加 . 标点符号等。
标准参见:https://github.com/kubernetes/community/blob/master/contributors/guide/pull-requests.md#commit-message-guidelines

3. 提交 PR

在集体分支推送到远端 GitHub 仓库后,就能够在页面发动 “New pull request“,抉择集体的更改分支,指标分支是 Kubernetes/master,通过代码 “Compare changes” 再次确认本地须要 PR 的文件、代码,点击确认。

Tips: Git commit author 肯定要与 CLA 协定 (下一步) 统一,否则 label 将会显示 cncf-cla: no,不能通过前面的 merge 校验。

下一步就是须要填写本次 PR 相干 title, content,倡议参考 content 模板填写相干的内容项,抉择对应的 sig 小组,release-note 标记等填写残缺,否则可能因为必要信息不残缺迟迟得不到 code review

K8s PR 中通过 label 来对立治理流程、状态变更。

PR 提交后,k8s-ci-robot 将会主动新增对应的 label,比方 needs-sig, needs-triage,示意须要确认该 PR 属于哪个 SIG(Special Interest Group),须要分类等,而后就须要期待相干 K8s memberscode review,如果确认是此 PR 改变正当, 就会在上面的进行评论如 /sig api-machinery, /triage accepted 等,robot 收到这样的评论后,就会主动将 needs-sig, needs-triage label 去掉,新增评论中对应的 label

4. 签 CLA 协定

CLA(Contributor License Agreement):贡献者批准协定,这是参加 K8s PR 必须要签订的一个协定,分为个人版、企业版,普通用户抉择个人版签订即可。

如果曾经签过 CLA 协定,则在 https://github.com/kubernetes/ 我的项目上面的所有我的项目都会共享协定,即只有在其中任一我的项目 PR 签订了 CLA 协定,其余我的项目都是通用的。

如果是第一次提交 K8s PR,则会收到机器人推送的签协定评论,如下:

此时,就须要依据链接指引,去 https://identity.linuxfoundation.org/ 签订协议,注册倡议抉择 Log in with GitHub 能够间接获取到 GitHub username,与上一步 PR git commit author 保持一致。按提醒填写相干签约信息后,将收到正式的签约胜利邮件,如下:

到这一步,刷新 PR 页面或等一会查看是否 label 是否变为了 cncf-cla: yes,如果等了几个小时还没变更,能够手动评论:/check-cla,将会触发机器人从新验证 CLA 签约状态,并更新 label

5. Reviewer 反馈

一旦 PR 提交后,机器人会触发 label 标记、CLA 验证、调配 Reviewer,针对每个 PR 个别默认调配两个 Reviewer,对应 Reviewer 将会收到邮件或 Slack 揭示,此时就静静期待他们来 review 相干代码改变。

此时,其余 K8s member 也能够被动参加此 PR review,右上角 Reviewers 外面就会看到所有人员,包含机器人默认调配的两个 Reviewer,以及其余被动参加的 Reviewer

Reviewer 能够间接在代码上评论,也能够在最上面写评论,包含一些能够被机器人辨认的命令,都是通过 Comment 触发的,所以须要认真看 Reviewer 反馈的信息。

6. 跟进 Review

PR 大多数状况下都不是那么顺利就被 mergetitle/content 形容可能不具体,代码正文不适合等,往往 Reviewer 们会给出很多审阅意见、倡议,或相干 PR 曾经有其他人提了,也可能会被否定、不被承受等,此时不要急,须要依据反馈意见批改、优化 PR,而后再次提交,此时能够评论 @Reviewer PTAL 再次审阅。

如此重复,直到 PR 最终被 MergedClosed(未被驳回),时间跨度可能快则几天、一周左右,满则几周、几个月都有可能,须要及时跟进、揭示 review 进度。

7. 代码 Squash

Reviewer 审阅感觉代码改变 ok 了,此时会看下 git commit 是不是曾经 squash,如果没有则个别会评论揭示 Author 进行代码 Squash

因为 K8s PR 数量太多,而每个 PR 对应 git commit 次数可能很多,所以 K8s PRmerge 之前,Reviewer 个别会揭示进行代码 Squash,将本次 PR 所有 git commit 合并为一个 commit,这样代码合并到主分支后,git log 查看的 git commit 记录就是一个,大大减小系统的 commit 数量。

git squash 操作如下:

git rebase -i HEAD~3 // 数字示意要合并的 git commit 数量 

在交互式 editor 中,将 pick 改为 squash 后保留:

pick 2ebe926 Original commit
squash 31f33e9 Address feedback
pick b0315fe Second unit of work

将会看到:

....
Successfully rebased and updated refs/heads/xxxx

最初执行 git push --force 将本地合并后的 commit 强制推送到远端,即实现了 git squash。而后就能够再次揭示 Reviewer 进行确认。

8. 终于等到 Approve

通过下面的 Review & Squash,终于失去了 Reviewer 的评论 /lgtm, /approve,祝贺你,示意此 PR review 通过了,这些评论将触发机器人 merge 代码到主分支,并标记下一次发版的 Milestonev1.22

merge 到主分支之前,机器人会做各种 CI testcheck,确保全副查看项都通过,才会真正 merge PR 代码到主分支。

至此,一个 PR 通过以上这些步骤,才最终被 merge 到主分支,PR 状态从 Open 变更为 Merged。相关联的 Issues 将会被机器人主动变更为 Closed

小结

K8s 作为一个开源我的项目,激励全世界的参与者踊跃贡献力量。本文介绍了一个 K8s PR 的残缺流程,次要包含:提 IssueFork 代码、提交 PRCLA 签约、Review 跟进、代码 Squash 等步骤,如果一切顺利,PR 才可能被 merge 到主分支。

把握了以上 PR 流程,通过积极参与、奉献 K8s 我的项目,能够取得从 Author, Contributor, Member, Chair, Lead 的身份转变,为 K8s 开源事业奉献一份力。

PS: 更多文章请关注公众号“稻草人生”

正文完
 0