【问题标题】:How do you prevent a multi stage pipeline from being launched when another pipeline is running当另一个管道正在运行时,如何防止启动多级管道
【发布时间】:2021-08-02 00:01:45
【问题描述】:

我遇到了多级管道问题。假设我有管道 A 和管道 B。

流水线A如下:

  • A.1 阶段
  • A.2 阶段

管道B如下:

  • B.1 阶段
  • B.2 阶段

这些管道适用于放置在不同存储库中的不同触发器。

有时我们会有以下行为:

  • 管道 A 开始阶段 A.1
  • 然后,在流水线 A 可以开始阶段 A.2 之前,流水线 B 由于其触发器而启动并开始阶段 B.1(请注意,流水线 A 和 B 完全独立)
  • 只有在 B.1 完成后,管道 A 才能在 A.2 上继续

我不抱怨顺序行为,我不想要并行运行。但我想告诉 Azure DevOps 在它开始另一个管道之前完成它。

总而言之,您能否告诉 Azure DevOps 在启动另一个管道之前完成一个多阶段管道?而且我说的不是同一管道的另一个实例,而是完全不同的管道。

【问题讨论】:

    标签: azure-devops azure-pipelines multistage-pipeline


    【解决方案1】:

    这似乎是排他锁的一个用例。您可以在 Azure 管道中为每个管道创建一个环境(环境 A 和环境 B),然后在这两个环境上应用独占锁定策略。因此,您将 same 锁应用于两个环境,而不是两个单独的锁。

    更多信息:

    https://docs.microsoft.com/en-us/azure/devops/release-notes/2020/pipelines/sprint-172-update#exclusive-deployment-lock-policy

    https://docs.microsoft.com/en-us/azure/devops/pipelines/process/approvals?view=azure-devops&tabs=check-pass#exclusive-lock

    【讨论】:

    • 感谢您的指点,但这不是我想要的。首先,我们不使用环境,即使我们使用了,如果到环境 A 的另一个管道没有完成,我也不希望启动到环境 B 的管道。
    • @Laurent 我的意思是对两个环境应用相同的锁,而不是两个单独的锁。
    • 在 Azure DevOps 中设置和定位环境很容易。 docs.microsoft.com/en-us/azure/devops/pipelines/process/…
    • OK 我已经创建了两个环境,并为这两个环境添加了锁。似乎没有为两个环境重用相同锁的选项。每个环境似乎都有自己的锁。部署某些东西时,环境看起来很有用。我的管道并不总是部署任何东西。我不敢相信没有选择告诉 Azure 在开始另一个管道之前完成一个管道。即使这种默认行为对我来说也像是一个错误。
    猜你喜欢
    • 2020-02-23
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多