我在 Azure DevOps 上开发管道并使用我们自己的实例作为代理运行时有以下需求:
我有#1。问题是我遇到了资源和端口争用。我在阶段运行时输出构建 ID,它们经常报告相同的代理:
steps:
- task: Bash@3
displayName: Debug
inputs:
targetType: 'inline'
script: |
echo "Agent ID: $(Agent.Id)"
如何确保每个代理一次仅运行一个阶段和/或作业?
考虑使用独占锁:
独占锁检查仅允许管道中的单个运行继续进行。使用该资源的该管道的所有运行中的所有阶段都将暂停。当使用锁的阶段完成时,另一个阶段可以继续使用该资源。而且,只允许继续一个阶段。
登上舞台:
stages:
- stage: A
lockBehavior: sequential
jobs:
- job: Job
steps:
- script: Hey!
设置在管道上:
lockBehavior: runLatest
stages:
- stage: A
jobs:
- job: Job
steps:
- script: Hey!