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

Azure DevOps被触发管道与触发源提交版本不匹配问题

Azure DevOps 管道链式触发代码版本不匹配问题

场景说明

  • 基于同一代码仓库的develop分支实现链式触发:Pipeline A运行完成后自动触发Pipeline B
  • 业务要求支持不同提交触发并发构建,trigger:batch: true批量合并触发配置不符合需求
  • 同逻辑在Jenkins环境下运行正常,可分别针对c1、c2提交触发两次独立的Pipeline B运行

管道配置详情

Pipeline A 配置

# PIPELINE-A
trigger:
  branches:
    include:
      - develop
pr: none

name: $(Build.SourceBranchName)__$(Build.SourceVersion)__$(Date:yyyy-MM-dd_hh-mm)

jobs:
  - job: Test
    pool:
      name: 'Default'
    steps:
      - task: CmdLine@2
        displayName: Simulate 3 min. task
        inputs:
          script: |
            echo $(Build.SourceBranchName)
            echo $(Build.SourceVersion)
            sleep 180
          workingDirectory: '$(Build.SourcesDirectory)'

Pipeline B 配置

# PIPELINE-B
trigger: none
pr: none

resources:
  pipelines:
    - pipeline: PIPELINE-A
      source: PIPELINE-A
      trigger:
        branches:
          include:
            - develop

name: $(Build.SourceBranchName)__$(Build.SourceVersion)__$(Date:yyyy-MM-dd_hh-mm)

jobs:
  - job: Test
    pool:
      name: 'Default'
    steps:
      - task: CmdLine@2
        displayName: Simulate task
        inputs:
          script: |
            echo $(Build.SourceBranchName)
            echo $(Build.SourceVersion)
            echo $(resources.pipeline.PIPELINE-A.sourceBranch)
            echo $(resources.pipeline.PIPELINE-A.sourceCommit)
          workingDirectory: '$(Build.SourcesDirectory)'

问题复现表现

向develop分支连续推送c1、c2两个提交后,观测到如下运行行为:

  • Pipeline A触发逻辑正常,共产生2次独立运行,分别绑定c1、c2提交
  • 绑定c1提交的Pipeline A运行完成后,Pipeline B被触发,但版本变量取值异常:
    • 内置变量Build.SourceVersion取值为分支最新提交c2,和触发源Pipeline A绑定的c1提交不匹配
    • 仅资源变量resources.pipeline.PIPELINE-A.sourceCommit可以正确取到触发源对应的c1提交ID
  • 绑定c2提交的Pipeline A运行完成后,Pipeline B再次被触发,此时Build.SourceVersion与resources.pipeline.PIPELINE-A.sourceCommit取值均为c2,符合预期
  • 即使手动触发Pipeline A运行c1提交对应的历史版本,联动触发的Pipeline B依然会使用c2提交版本

造成的业务影响

  • Pipeline B的Web运行列表中,所有运行记录均显示关联c2提交,无法区分c1、c2两次Pipeline A运行分别触发的Pipeline B执行记录
  • Pipeline B运行时默认检出的代码始终为c2提交版本,和触发源对应的代码版本不一致,可能导致构建产物和预期版本不符

诉求

确认该问题是否由配置遗漏导致,提供可落地的解决方案。

内容的提问来源于stack exchange,提问作者cesjg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:57:16