如何限制 Azure 代理上的并发管道作业执行?

问题描述 投票:0回答:1

我在 Azure DevOps 上开发管道并使用我们自己的实例作为代理运行时有以下需求:

  1. 我需要同时执行的阶段
  2. 每个阶段都需要保证在自己的代理上执行

我有#1。问题是我遇到了资源和端口争用。我在阶段运行时输出构建 ID,它们经常报告相同的代理:

steps:
- task: Bash@3
  displayName: Debug
  inputs:
    targetType: 'inline'
    script: |
      echo "Agent ID: $(Agent.Id)"

如何确保每个代理一次仅运行一个阶段和/或作业?

azure-devops azure-pipelines azure-pipelines-yaml
1个回答
0
投票

考虑使用独占锁

独占锁检查仅允许管道中的单个运行继续进行。使用该资源的该管道的所有运行中的所有阶段都将暂停。当使用锁的阶段完成时,另一个阶段可以继续使用该资源。而且,只允许继续一个阶段。

登上舞台:

stages:
- stage: A
  lockBehavior: sequential
  jobs:
  - job: Job
    steps:
    - script: Hey!

设置在管道上:

lockBehavior: runLatest
stages:
- stage: A
  jobs:
  - job: Job
    steps:
    - script: Hey!
© www.soinside.com 2019 - 2024. All rights reserved.