【问题标题】:How to allow automated CI processes to push commits with Github branch protections?如何允许自动化 CI 流程通过 Github 分支保护推送提交?
【发布时间】:2017-07-24 02:44:44
【问题描述】:

Github 不久前添加了分支保护,最近还添加了另一个要求审查的选项。

我尝试过要求审核和状态检查(管理员除外)并且喜欢这个工作流程。但它对我们的 CI/部署工具有负面影响。

例如,当我们发布新版本时,CI 环境中有一个自动化过程,它会增加 package.json 中的版本号,提交它,然后将其推送到存储库。有几个这样的过程,比如清理任务。

这些自动化流程不需要审核或通过状态检查(到那时,作为部署管道的一部分,状态检查已经运行了至少两次)。但是,启用分支保护后,CI“用户”无法推送。

remote: error: GH006: Protected branch update failed for refs/heads/master. 
remote: error: Required status check "default" is expected. At least one approved review is required

之前我们的 CI“用户”拥有“写入”权限。我尝试将“管理员”权限授予我正在尝试的存储库,但这显然还不够;即使是管理员,CI“用户”也无法推送。

在上图中,我尝试删除“评论”,希望无需进一步工作即可进行状态检查。不!

我最希望的是让 CI“用户”免于这些要求。它看起来不像是一个功能。这可能意味着我唯一的其他选择是关闭大部分保护,包括我想要的一些。

但我可能会对现有 CI 管道进行一些更新或更改——或者我可以创建的一些保护配置——这会产生这样的最终结果:

  • 人类用户看到在合并或推送之前需要进行评论和状态检查。 (检查)
  • 只有维护者和 CI 可以直接推送到分支。 (检查)
  • 管理员可以根据具体情况覆盖这些要求。 (检查)
  • CI 可以直接推送到分支,而无需进行审核或等待状态检查。 (需要帮助)

有人做过类似的设置或知道如何绕过 CI“用户”被阻止的问题吗?由于显然 CI“用户”无法实际导航到 Github.com 上的拉取请求,并在“使用您的管理员权限合并此拉取请求”旁边的复选框。 --usemyadminprivilegestopushthis 是否有 CLI 标志?

【问题讨论】:

  • 根据您的描述,它应该可以工作。我必须对此进行测试,但他们的支持可能更快。
  • 你成功了吗?如何 ?谢谢
  • 我做到了。我只能假设 CI 配置指向错误的存储库,因此用户没有对我认为的存储库的管理员访问权限,因为下次我尝试它时它工作正常(有人提到重置 CI 配置,唯一的原因是我可以看到它可能已经开始工作了)。

标签: git github jenkins continuous-integration teamcity


【解决方案1】:

我实际上并没有找出失败的原因;我后来无法用相同的配置重现该问题。

第二天,我所描述的有效。

  1. 保护分支

  2. 但不包括管理员进行审核/状态检查

  3. 确保您的 CI“用户”是管理员

这样做的好处是 Github UI 仍然鼓励管理员等待状态检查和审查。在拉取请求工作流程中很有用。但是,除了无法强制推送或删除(所期望的结果)之外,CLI 的使用对管理员没有影响。

如果有人有关于只需要写入而不是管理员访问权限的设置提示,或者有关如何跨多个请求跟踪状态/审查检查成功的信息,请分享。

(在我的情况下,我相信 CI 配置指向了错误的存储库。它在第二天开始工作,有人提到重置配置,但遗憾的是我无法确认这适用于信息中的每一个失败在我们的日志中。)

【讨论】:

  • 你如何确保你的 CI 用户是管理员?我使用的是个人 github 帐户,而不是组织。如何指定允许推送到 master 的特定用户名?
猜你喜欢
  • 2022-11-04
  • 2022-11-13
  • 2021-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-04
  • 2016-01-14
  • 2016-01-10
相关资源
最近更新 更多