You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipeline sequential独占锁未锁定其他运行作业问题咨询

Azure Pipeline独占锁问题解答

这不是bug,是你对独占锁机制的理解有偏差——必须通过环境(Environment)绑定目标计算机并配置锁,直接指定计算机名称不会触发独占锁的预期行为,具体原因和解决方式如下:

1. 独占锁的作用范围

lockBehavior: sequential 是针对环境级受保护资源的独占控制逻辑,并非直接作用于单个代理计算机。你直接在YAML里通过pool指定computer1的方式,只是让Pipeline把任务调度到该计算机,但并没有将其标记为需要加锁的“受保护资源”,所以锁配置不会生效。

2. 正确的配置步骤

  • 先在Azure DevOps中创建一个环境,将computer1添加为该环境的资源(比如作为虚拟机资源)。
  • 在Pipeline的阶段或作业中,通过environment字段引用这个环境,同时配置lockBehavior: sequential。
  • 示例配置:
    lockBehavior: sequential
    stages:
      - stage: MyStage
        jobs:
          - job: Job1
            environment: MyEnvironment # 引用包含computer1的环境
            steps:
              - script: echo "Job1 running on computer1"
          - job: Job2
            environment: MyEnvironment
            steps:
              - script: echo "Job2 running on computer1"
    

3. 为什么直接指定计算机无效

Azure Pipeline的锁机制核心是保护环境层面的资源(比如生产服务器、共享数据库等),单个代理计算机默认只是一个普通执行节点,不属于“受保护资源”范畴。只有当计算机被纳入环境资源后,锁才会生效,确保同一时间只有一个运行实例能访问该环境下的资源,从而实现你预期的“run1的job2先于run2的job1执行”的逻辑。

内容的提问来源于stack exchange,提问作者C. Javier González Chamorro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:01:08