Mar*_*kTO 5 git branch github git-merge
因此,这就是问题所在:对于我们的50多个存储库中的每一个,我们都有一个三层分支模型:Dev,Test,Master。开发人员可以根据需要随时更新开发人员,并由团队负责人汇总变更并将其提交给我们的测试环境,然后将代码合并到测试分支并进行标记。一旦测试并通过(部署)代码,便将其迁移到主代码。在将代码放入master并成功部署之后,我们将杀死旧分支并仅在需要时创建新分支。
但是,我们正在使用SonarQube和Fortify扫描代码,每次请求新分支时更新扫描计划都变得不知所措。我们希望保留在每个版本中刷新分支的模型。
我的想法是为每个存储库创建一个新分支,该分支始终保持相同的名称,但是每次从dev分支进行合并以进行测试时,都会自动将来自test分支的代码合并到其中。我们将使用此分支进行代码扫描,因为它应该与更改的分支完全匹配。
我们可以将其作为Jenkins管道脚本的一部分开始,但这只会将问题从“更新扫描计划中的分支”转移到“更新50+个脚本”(或一个参数化列表,虽然更好,但并不理想) )
有没有办法在将主要合并合并到永久性主要测试分支的同时,自动执行从dev分支到永久测试分支的合并?所有这些都无需手动更新脚本(或者更好的是,参数化列表)?我可能会遇到问题(父分支问题等)吗?
通常,您想要的行为是服务器端的行为,有几种方法可以实现。
首先,如果您使用拉取请求,则可以将代码设置为在拉取请求上扫描,作为 CI 的一部分。未通过的代码不会合并(或仅与管理员覆盖合并)。这是人们处理这个问题的传统方式,而且效果很好。您可以拥有一组供所有 CI 作业使用的全局脚本,这将要求您在第一次更新多个脚本,但在后续迭代中则不需要。
其次,如果您的服务器端实现支持钩子post-receive,则可以添加这样的钩子以在推送发生时更新永久测试分支。这需要一个支持该功能的服务器端实现,但大多数不支持。
第三,如果您的服务器端实现支持 Webhook 传递,您可以使用它与可以为您执行操作的服务进行通信。这将要求该服务拥有某种令牌或 SSH 密钥来执行该任务。
第四,如果您使用 GitHub(云版本,而不是自托管版本),您可以选择加入 GitHub Actions 并使用它来执行此任务。这还需要某种可用于更新分支的秘密。
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |