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

如何通过PowerShell触发Azure DevOps pipeline的CI/CD流程

PowerShell 触发 Azure DevOps Pipeline 实现方案

前置准备

  • 提前申请Azure DevOps个人访问令牌(PAT):权限至少勾选Build (读取并执行),若触发的是YAML管道还需额外勾选*Pipeline (运行资源)*权限
  • 记录3个核心信息:目标管道所属的DevOps组织名称、项目名称、管道定义ID(管道页面URL中definitionId=后的数字即为ID)
  • 本地环境安装Windows PowerShell 5.1或PowerShell 7+版本

核心实现逻辑

通过调用Azure DevOps官方提供的Build REST接口完成触发,全程使用PowerShell内置的Invoke-RestMethod cmdlet发送请求,无需额外安装第三方模块。

详细操作步骤

步骤1:构造身份验证请求头

Azure DevOps REST接口采用Basic认证规则,将PAT作为密码、用户名字段留空,拼接后转Base64编码即可生成认证头,示例代码:

# 替换为你自己的PAT
$pat = "你的Azure DevOps PAT"
$headers = @{
    Authorization = "Basic " + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat"))
    "Content-Type" = "application/json"
}

步骤2:构造触发参数

可根据需求指定触发分支、自定义管道变量,请求体为JSON格式,示例:

# 替换为自己的组织名、项目名、管道ID
$orgName = "你的组织名"
$projectName = "你的项目名"
$pipelineId = "你的管道定义ID"
$requestBody = @{
    definition = @{
        id = $pipelineId
    }
    # 指定触发的分支,替换为你需要的分支名
    sourceBranch = "refs/heads/main"
    # 可选:自定义管道变量,不需要可以删除该字段
    parameters = @{
        "env" = "test"
        "deploySwitch" = $true
    } | ConvertTo-Json
} | ConvertTo-Json

步骤3:发送请求触发管道

调用POST接口完成触发,成功后会返回本次运行的详细信息:

$apiUrl = "https://dev.azure.com/$orgName/$projectName/_apis/build/builds?api-version=7.0"
$response = Invoke-RestMethod -Uri $apiUrl -Method Post -Headers $headers -Body $requestBody

# 打印触发后的运行ID和访问链接
Write-Host "管道触发成功,运行ID:$($response.id)"
Write-Host "运行详情页地址:$($response._links.web.href)"

步骤4:(可选)查询运行状态

如果需要等待运行完成并获取结果,可通过返回的运行ID轮询查询:

$runId = $response.id
do {
    Start-Sleep -Seconds 10
    $runInfo = Invoke-RestMethod -Uri "https://dev.azure.com/$orgName/$projectName/_apis/build/builds/$runId?api-version=7.0" -Headers $headers
    Write-Host "当前运行状态:$($runInfo.status)"
} while ($runInfo.status -eq "inProgress" -or $runInfo.status -eq "notStarted")

Write-Host "运行最终结果:$($runInfo.result)"

注意事项

  • PAT不要配置超出需要的权限,有效期按需设置,避免明文硬编码在脚本中,建议使用安全字符串或密钥管理工具存储
  • 如果要覆盖管道中预设的变量,需要提前在管道设置中开启允许在队列时设置变量的开关
  • 若管道配置了分支过滤,触发时传入的分支需要在过滤规则的允许范围内

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:09:03