如果相同的作业在以前的管道中运行,如何等待GitLab作业?



我们有这样一个需求:如果之前的管道中有相同的部署作业处于运行状态,那么管道中的部署作业应该等待。因此我们面临并发问题。例子:

  • 旧管道由于提交而处于运行状态>工作名称开发部署->清理数据并部署
  • New Pipeline由于新提交而处于运行状态>职位名称开发部署——>现在,这些干净的数据将影响之前的管道部署。

我们希望等待新的特定于管道的作业,直到具有相同作业名称的前一个管道未完成。

我们在GitLab中有任何解决方案吗?

我有一个解决方法来处理使用管道API的before_script。我正在执行的步骤来处理这个:

  1. 对于新管道,首先检查当前管道ID。
  2. 检查与当前管道ID不相等且状态为running或pending的先前管道。
  3. 然后获取当前管道部署作业名称。
  4. 然后检查之前运行的具有相同作业名称的管道。
  5. 如果是,则等待,否则跳过并移动到新的部署。

任何不通过脚本处理的通用解决方案都将受到高度赞赏。

我们可以在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/

最新更新