openEuler 社区门禁工程分享

openEuler社区的PR合入流程

openeuler-ci-bot(后面统称ci-bot)是openEuler社区的机器人,在检测到新建PR后,ci-bot会评论一条欢迎信息。ci-bot还会检查PR提交者是否已签署了CLA(Contributor License Agreement),如果你尚未签署CLA,ci-bot会在PR中打上openeuler-cla/no的标签,并在评论中指引你完成CLA的签署。完成CLA签署后,可评论/check-cla刷新PR中CLA标签的状态。

新建PR或强制推送还会触发社区门禁的构建以及生成PR审视要求清单。

  • 门禁检查结果 当门禁在进行中时,ci-bot会给PR打上ci_processing标签;如果门禁结果为 success,说明PR已经通过了门禁检查,ci-bot会给PR打上ci_successful标签;如果是failed的话,具体错误则需要点击Build Details下对应的地址去jenkins的门禁构建console中定位,同时,ci-bot会给PR打上ci_failed标签。下图是一个失败的门禁检查结构。

    门禁检查结果
  • PR审视清单 审视清单列出了PR需要审视的内容与描述,在审视者确认无误,修改审视结果为符合要求后,审视完成。

    审视清单

当一条可合入的PR拥有openeuler-cla/yesci_successfullgtmapproved等标签,ci-bot会自动将该PR合入;对处于开启状态的PR,可通过评论/check-pr检查PR的标签是否已满足合入条件,满足的话会合入PR。

如果一条新增仓库的PR被合入,ci-bot在检测到PR合入后创建仓库,并根据仓库所属sig的OWNERS文件为仓库配置开发者。如果新增的是src-openeuler的仓库,ci-bot还会自动为该项目生成_service文件,推到https://gitee.com/src-openeuler/obs_meta的master/openEuler:Factory ,同时会在Jenkins上为该项目创建一系列门禁的工程(trigger,x86-64,aarch64,comment)。

openEuler社区门禁

openEuelr社区门禁的构建托管在Jenkins,地址为 https://openeulerjenkins.osinfra.cn/job/Infra/job/community_check_v2/ ,新建PR或强制推送会触发门禁检查,检查项具体为以下几项:

  • conflict check
  • sanity check
  • branch check

conflict check会检查目标PR是否存在冲突,sanity check会对提交的健全性做一系列检查,branch check则会对仓库的分支变更做检查。

sanity check的检查逻辑可参考源代码 https://gitee.com/openeuler/community/blob/master/ci-scripts/sanity_check.py

branch check的检查逻辑可参考源代码 https://gitee.com/openeuler/community/blob/master/ci-scripts/check_branch.py

branch check的配置文件为 https://gitee.com/openeuler/release-management/blob/master/valid_release_branches.yaml