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

如何在Azure DevOps中从一个项目的流水线触发另一项目的流水线

跨项目触发Azure DevOps流水线解决方案

方案1:配置内置服务账号权限(直接复用$(System.AccessToken))

该方案可以直接解决你调用REST API返回401的权限问题:

  • 打开**第二个项目(被触发的目标项目)**的项目设置页,进入「权限」板块
  • 切换到「用户」标签,搜索名为Project Collection Build Service (你的组织名称)的服务账号
  • 将该账号加入第二个项目的Contributor角色,或者单独为其分配生成/队列生成的权限
  • 回到第一个项目的流水线配置,打开作业的安全设置,勾选「允许脚本访问OAuth令牌」,如果是YAML流水线可以直接在步骤中声明环境变量:
    steps:
    - task: PowerShell@2
      env:
        SYSTEM_ACCESSTOKEN: $(System.AccessToken)
      inputs:
        targetType: 'inline'
        script: |
          $header = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }
          $body = @{ definition = @{ id = <目标流水线ID> } } | ConvertTo-Json
          Invoke-RestMethod -Uri "https://dev.azure.com/你的组织名/第二个项目名/_apis/pipelines/目标流水线ID/runs?api-version=7.1-preview.1" -Method Post -Headers $header -Body $body -ContentType "application/json"
    
  • 配置完成后重新运行第一个流水线即可正常调用API触发第二个项目的流水线

方案2:使用PAT令牌(无需修改服务账号权限)

如果你不想调整项目权限配置,可以使用个人访问令牌实现:

  • 使用同时拥有两个项目流水线操作权限的账号,创建PAT,权限范围勾选「生成 - 读取并执行」,有效期按需设置
  • 将生成的PAT存入第一个项目的流水线变量,勾选「保密变量」选项,变量名可设为CROSS_PROJECT_PAT
  • 调用触发流水线的REST API时,将认证头的令牌替换为该保密变量即可

方案3:使用官方任务(零代码调用)

不需要手动写API请求,直接使用Azure DevOps内置任务配置即可:

  • 在第一个流水线的末尾步骤添加「触发Azure管道」任务
  • 按提示填写配置:选择所属组织、第二个项目名称、目标流水线ID、触发分支、传参等内容
  • 按方案1的要求配置服务账号权限后即可直接使用

注意:如果两个项目归属不同的Azure DevOps组织,仅支持使用方案2的PAT令牌方式实现跨组织触发

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:15:08