我正在尝试为我们公司设置持续交付,但对如何做到这一点有疑问。
目标
目标是在每次主版本更新时构建并部署在临时环境中。
下一步将是建立一些接口,以便项目经理可以验证暂存并触发部署到客户端暂存,然后客户端验证并触发部署到生产。
我认为应该做什么
构建和测试(持续集成)运行良好。
但是为了进行交付跟踪,我认为我应该有一个分支“暂存”,我可以在其上进行构建然后推送。
问题
当我这样做时,我最终会在我的分支“staging”上出现冲突:如果两个管道并行工作,一个管道在另一个管道之前结束,则第二个管道将无法推送,因为 git 会告诉“更新被拒绝,因为远程包含您本地没有的工作。这通常是由另一个存储库推送引起的......”。
我感觉不对
我可以施加推力,但感觉好像我做错了事情。
对于这种情况你有什么建议?
您遇到的本质上是锁定问题。我见过的最好的解决方案是,当它失败时,立即重新启动。当它这样做时,它所做的“git pull”将会不同(因为另一个分支的成功导致“staging”更改其HEAD),然后它将合并分支并再次运行测试并尝试推送。 ..如果失败,则会重复,但如果成功,则完成。