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

手动触发安装器流水线时获取对应分支/提交构建工件的问题

解决手动触发安装器流水线获取对应分支/提交构建工件的问题

问题分析

你手动触发安装器流水线时,当前DownloadPipelineArtifact@2任务未指定目标分支,导致无法关联对应分支的构建,出现PipelineId from non-trigerringBuild错误,且无法通过硬编码方式适配不同分支/提交。

解决方案

场景1:基于所选分支获取最新构建工件

直接利用安装器流水线触发时的分支变量,指定要下载的构建分支:

修改后的任务配置:

- task: DownloadPipelineArtifact@2
  inputs:
    source: specific
    project: '$(System.TeamProjectId)'
    pipeline: 23
    path: '$(System.ArtifactsDirectory)'
    artifact: 'drop'
    runVersion: 'latestFromBranch'
    runBranch: '$(Build.SourceBranch)' # 指定触发安装器流水线时选择的分支

$(Build.SourceBranch)会自动获取你手动触发时所选的分支,任务将据此找到流水线23中该分支的最新成功构建工件。

场景2:基于所选提交哈希获取对应构建工件

若手动触发时选择了特定提交,需先通过API查询该提交对应的构建ID,再下载工件:

  1. 添加PowerShell任务查询构建ID
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      $headers = @{
        Authorization = "Bearer $(System.AccessToken)"
      }
      $apiUrl = "https://dev.azure.com/$(System.TeamProjectId)/$(System.TeamProject)/_apis/build/builds?definitions=23&commitId=$(Build.SourceVersion)&statusFilter=completed&resultFilter=succeeded&api-version=7.1-preview.7"
      $buildResponse = Invoke-RestMethod -Uri $apiUrl -Headers $headers -Method Get
      
      if ($buildResponse.value.Count -gt 0) {
        $targetBuildId = $buildResponse.value[0].id
        Write-Host "##vso[task.setvariable variable=TargetBuildId]$targetBuildId"
      } else {
        throw "未找到流水线23中与提交 $(Build.SourceVersion) 对应的成功构建"
      }
  1. 使用获取到的构建ID下载工件
- task: DownloadPipelineArtifact@2
  inputs:
    source: specific
    project: '$(System.TeamProjectId)'
    pipeline: 23
    path: '$(System.ArtifactsDirectory)'
    artifact: 'drop'
    runVersion: 'specific'
    runId: '$(TargetBuildId)' # 引用上一步获取的构建ID

$(Build.SourceVersion)会自动获取手动触发时所选的提交哈希,API将查询流水线23中该提交对应的成功构建,获取ID后用于下载对应工件。

注意:确保安装器流水线的服务账号拥有读取构建的权限,$(System.AccessToken)默认具备该权限,若出现权限问题需检查项目权限配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:20:32