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

如何用PowerShell脚本通过Azure DevOps API批量添加构建管道触发器

批量自动更新Azure DevOps构建管道触发器的实现方案

完全可以通过Azure DevOps Build Definitions API实现批量添加/更新触发器,无需逐个打开管道定义。以下是具体的PowerShell脚本实现思路和步骤:

核心流程

  1. 批量获取目标管道的定义详情
  2. 修改定义中的触发器配置(添加或更新)
  3. 将修改后的定义提交回API完成更新

PowerShell脚本示例

前置准备

  • 生成Azure DevOps个人访问令牌(PAT),需授予**Build (Read & Write)**权限
  • 收集需要更新的所有管道ID

完整脚本

# 配置基础参数
$organizationUrl = "https://dev.azure.com/你的组织名称"
$projectName = "你的项目名称"
$personalAccessToken = "你的PAT令牌"
$authHeader = @{Authorization = "Basic " + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$personalAccessToken"))}

# 待更新的管道ID列表
$targetPipelineIds = @(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

# 定义要添加/更新的触发器配置(以CI触发器为例)
$triggerConfig = @{
    triggerType = "continuousIntegration"
    settings = @{
        branchFilters = @("refs/heads/main", "refs/heads/release/*")
        pathFilters = @()
        batchChanges = $true
        maxConcurrentBuildsPerBranch = 1
    }
}

# 批量处理管道
foreach ($pipelineId in $targetPipelineIds) {
    # 获取当前管道定义
    $definitionUrl = "$organizationUrl/$projectName/_apis/build/definitions/$pipelineId?api-version=7.1-preview.7"
    $currentDefinition = Invoke-RestMethod -Uri $definitionUrl -Headers $authHeader -Method Get

    # 检查是否已存在同类型触发器
    $existingTrigger = $currentDefinition.triggers | Where-Object { $_.triggerType -eq $triggerConfig.triggerType }
    if ($existingTrigger) {
        # 更新现有触发器的配置
        $existingTrigger.settings = $triggerConfig.settings
    }
    else {
        # 添加新的触发器
        $currentDefinition.triggers += $triggerConfig
    }

    # 提交更新后的定义
    $updateResult = Invoke-RestMethod -Uri $definitionUrl -Headers $authHeader -Method Put `
        -Body ($currentDefinition | ConvertTo-Json -Depth 10) `
        -ContentType "application/json"
    
    Write-Host "管道ID $pipelineId 触发器更新完成,状态: $($updateResult.status)"
}

关键细节说明

  • API版本选择:使用7.1-preview.7或更高稳定版本,确保触发器配置结构的兼容性
  • 触发器类型扩展:支持计划触发器(schedule)、拉取请求触发器(pullRequest)等,只需修改triggerType和对应的settings字段即可适配
  • 重复避免:脚本中加入了同类型触发器检查,防止重复添加
  • 批量效率:通过遍历管道ID列表,一次性完成所有目标管道的更新操作

验证方式

执行脚本后,可通过Azure DevOps门户查看管道触发器配置,或再次调用API获取定义信息确认更新生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:20:05