当新的PR合并到master中时,我们使用CI平台来构建,测试和发布新代码。 “发布”步骤非常简单/愚蠢,实际上使用新推送的docker映像的标签运行kubectl patch
。
两个PR大约同时合并时(例如:A
,则B
-B
包含A
的提交,反之则不行) ,可能发生B
首先完成其构建/测试,然后首先开始其发布步骤的情况。发生这种情况时,A
将释放第二个,即使它具有较旧的代码。结果是进入稳定状态,其中B
的部署已有效地回滚了A
的代码。
我们希望保持CI / CD尽可能连续,理想情况下不使用:
大三角帆是否具有解决此问题的功能或最佳做法?
答案 0 :(得分:0)
针对您问题的最佳做法在“异步系统的消息排序”中进行了广泛描述。最简单的解决方案是为CI / CD管道实现FIFO原则。 这样可以避免实施CI和CD零件之间的检查。