增加 Github Enterprise 中受保护的“master”分支的代码覆盖率门
Increase Code Coverage gate for protected `master` branch in Github Enterprise
我已经将 Jenkins 系统设置为在合并到 master (Gitflow) 之前自动 运行 测试每个拉取请求。 master
分支受到保护(https://github.com/blog/2051-protected-branches-and-required-status-checks),这意味着如果测试 运行 失败,对 master 的拉取请求将被阻止。
在 CTO 决定单方面增加代码覆盖率之前,一切正常。代码覆盖率在 Instanbul“.nycrc”文件中定义,他希望每 week/sprint 能够增加 2-4%(当前覆盖率非常低,30%)。他想 commit/push 通过修改“.nycrc”文件而不添加测试来增加这种增加。这意味着所有构建都将失败,所有 PR 都无法合并,直到团队开始添加测试。
进行此操作的最佳方法是什么?请指教。我不想每次他要增加代码覆盖率时都转off/on分支保护。 CTO 的 "hard-handed" 方法已经确定(不可协商):团队将努力在其他人之前添加测试,以使构建绿色和 PR 再次可合并。
支线任务:团队还可以降低“.nycrc”文件中的覆盖率阈值以合并他们的 PR。我该如何预防?我认为我团队中的任何人都不敢乱动该文件(因为 CTO 始终掌握该文件),但我想学习一种适用于更大团队的通用方法。
通常的方法是在两个不同的分支中有两个门:
- 一个受保护,具有您控制的低“
.nycrc
”文件
- 一个受保护,具有由管理员控制的“
.nycrc
”文件
有资格部署到生产中的代码必须来自第二个门。
第一个门允许团队提供和合并 PR,同时异步地添加更多测试以获得第二个分支的资格。
我所做的是将 CTO 添加到 Github 组织的管理员组。在 Branch Protection 设置中,我禁用了“Require status checks to pass before merging”下的“Include adminstrators”(转到 Repository settings -> Branches -> master)。通过这种方式,CTO 可以使用他的管理员权限强制合并拉取请求以提高代码覆盖率阈值(它们通常会失败)。
原问题中的"side quest"仍然悬而未决。对于我公司的特定设置,我有自己的解决方案,但我认为它通常效果不佳。
我已经将 Jenkins 系统设置为在合并到 master (Gitflow) 之前自动 运行 测试每个拉取请求。 master
分支受到保护(https://github.com/blog/2051-protected-branches-and-required-status-checks),这意味着如果测试 运行 失败,对 master 的拉取请求将被阻止。
在 CTO 决定单方面增加代码覆盖率之前,一切正常。代码覆盖率在 Instanbul“.nycrc”文件中定义,他希望每 week/sprint 能够增加 2-4%(当前覆盖率非常低,30%)。他想 commit/push 通过修改“.nycrc”文件而不添加测试来增加这种增加。这意味着所有构建都将失败,所有 PR 都无法合并,直到团队开始添加测试。
进行此操作的最佳方法是什么?请指教。我不想每次他要增加代码覆盖率时都转off/on分支保护。 CTO 的 "hard-handed" 方法已经确定(不可协商):团队将努力在其他人之前添加测试,以使构建绿色和 PR 再次可合并。
支线任务:团队还可以降低“.nycrc”文件中的覆盖率阈值以合并他们的 PR。我该如何预防?我认为我团队中的任何人都不敢乱动该文件(因为 CTO 始终掌握该文件),但我想学习一种适用于更大团队的通用方法。
通常的方法是在两个不同的分支中有两个门:
- 一个受保护,具有您控制的低“
.nycrc
”文件 - 一个受保护,具有由管理员控制的“
.nycrc
”文件
有资格部署到生产中的代码必须来自第二个门。
第一个门允许团队提供和合并 PR,同时异步地添加更多测试以获得第二个分支的资格。
我所做的是将 CTO 添加到 Github 组织的管理员组。在 Branch Protection 设置中,我禁用了“Require status checks to pass before merging”下的“Include adminstrators”(转到 Repository settings -> Branches -> master)。通过这种方式,CTO 可以使用他的管理员权限强制合并拉取请求以提高代码覆盖率阈值(它们通常会失败)。
原问题中的"side quest"仍然悬而未决。对于我公司的特定设置,我有自己的解决方案,但我认为它通常效果不佳。