我们有这样一个需求:如果之前的管道中有相同的部署作业处于运行状态,那么管道中的部署作业应该等待。因此我们面临并发问题。例子:
- 旧管道由于提交而处于运行状态>工作名称开发部署->清理数据并部署
- New Pipeline由于新提交而处于运行状态>职位名称开发部署——>现在,这些干净的数据将影响之前的管道部署。
我们希望等待新的特定于管道的作业,直到具有相同作业名称的前一个管道未完成。
我们在GitLab中有任何解决方案吗?
我有一个解决方法来处理使用管道API的before_script。我正在执行的步骤来处理这个:
- 对于新管道,首先检查当前管道ID。
- 检查与当前管道ID不相等且状态为running或pending的先前管道。
- 然后获取当前管道部署作业名称。
- 然后检查之前运行的具有相同作业名称的管道。
- 如果是,则等待,否则跳过并移动到新的部署。
任何不通过脚本处理的通用解决方案都将受到高度赞赏。
我们可以在yaml中使用resource_group来等待特定的作业。使用实例添加resource_group:
DEV Deployment:
stage: deploy
resource_group: my_deploy
script:
- echo "Demo Test" >> README.md
- sleep 200
详情请查看https://docs.gitlab.com/ee/ci/resource_groups/