如果同一作业正在前一个管道中运行,如何等待 GitLab 作业?

Aka*_*yap 4 gitlab gitlab-ci gitlab-pipelines

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

  • 由于提交 > 作业名称 DEV 部署 -> 清理数据并部署,旧管道处于运行状态
  • 由于新提交,新管道处于运行状态 > 作业名称 DEV 部署 --> 现在,此干净数据将影响之前的管道部署。

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

GitLab 对此有什么解决方案吗?

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

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

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

Aka*_*yap 8

我们可以在yaml中使用resource_group来等待特定的作业。添加resource_group的示例:

DEV Deployment:
  stage: deploy
  resource_group: my_deploy
  script:
    - echo "Demo Test" >> README.md
    - sleep 200
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请查看https://docs.gitlab.com/ee/ci/resource_groups/