如果前一个管道中正在运行相同的作业,如何等待 GitLab 作业?
Posted
技术标签:
【中文标题】如果前一个管道中正在运行相同的作业,如何等待 GitLab 作业?【英文标题】:How to wait a GitLab job if the same job is running in the previous pipeline? 【发布时间】:2021-12-01 00:30:58 【问题描述】:我们有一个要求,如果先前的管道具有相同的部署作业处于运行状态,则管道中的部署作业应该等待。因此,我们面临并发问题。 示例:
由于提交而处于运行状态的旧管道 > 作业名称 DEV 部署 -> 清理数据并部署 由于新提交而处于运行状态的新管道 > 作业名称 DEV 部署 --> 现在这些干净的数据将影响之前的管道部署。我们希望等待新的管道特定作业,直到具有相同作业名称的前一个管道未完成。
我们在 GitLab 中有什么解决方案吗?
我有一个解决方法来处理使用带有管道 API 的 before_script。 我正在执行的处理此问题的步骤:
-
对于新管道,首先检查当前管道 ID。
然后检查之前的管道不等于当前管道ID,状态为running或pending。
然后获取当前管道部署作业名称。
然后检查之前运行的同名作业流水线。
如果是,则等待,否则跳过并移动以进行新部署。
任何不通过脚本处理的通用解决方案都将受到高度赞赏。
【问题讨论】:
【参考方案1】:我们可以在 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/
【讨论】:
以上是关于如果前一个管道中正在运行相同的作业,如何等待 GitLab 作业?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 azure devops YAML 管道中将单个代理用于多个作业/阶段