我们有一个要求,如果先前的管道具有相同的部署作业处于运行状态,则管道中的部署作业应该等待。因此,我们面临并发问题。例子:
- 由于提交而处于运行状态的旧管道 > 作业名称 DEV 部署 -> 清理数据并部署
- 由于新提交而处于运行状态的新管道 > 作业名称 DEV 部署 --> 现在这些干净的数据将影响之前的管道部署。
我们希望等待新的管道特定作业,直到具有相同作业名称的前一个管道未完成。
我们在 GitLab 中有什么解决方案吗?
我有一个解决方法来处理使用带有管道 API 的 before_script。我正在执行的处理此问题的步骤:
- 对于新管道,首先检查当前管道 ID。
- 然后检查之前的管道与当前管道 ID 不相等,并且状态为运行或挂起。
- 然后获取当前管道部署作业名称。
- 然后检查之前运行的具有相同作业名称的管道。
- 如果是,则等待,否则跳过并移动以进行新部署。
任何不通过脚本处理的通用解决方案都将受到高度赞赏。