如何在 azure devops 中从另一个构建管道触发构建

时间:2021-01-28 09:00:46

标签: azure azure-devops build-pipeline

我有两个用于两个不同项目的构建管道。一个用于构建实际项目,另一个构建管道用于测试自动化。我想在实际项目构建成功后自动触发测试自动化的构建管道。

是否有任何可能的方法可以将更多任务添加到实际构建中以触发测试自动化构建,或者建议一种可能的方法。

enter image description here

答案非常可观!!

1 个答案:

答案 0 :(得分:1)

您可以在第二个管道中使用“构建完成”触发器:

enter image description here

此外,您可以添加 PowerShell 脚本以将来自父构建的另一个构建排入队列。示例:

$user = ""
$token = $env:SYSTEM_ACCESSTOKEN

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
$orgUrl = "$env:SYSTEM_COLLECTIONURI"
$teamProject = "$env:SYSTEM_TEAMPROJECT"
$buildBodyTemplate = "{`"definition`": {`"id`": <build_id>}}"

$restApiQueueBuild = "$orgUrl/$teamProject/_apis/build/builds?api-version=6.0"

function InvokePostRequest ($PostUrl, $body)
{   
    return Invoke-RestMethod -Uri $PostUrl -Method Post -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}  -Body $body
}

function RunBuild($buildId)
{
    $buildBody = $buildBodyTemplate.Replace("<build_id>", $buildId)            
    Write-Host $buildBody
    
    $buildresponse = InvokePostRequest $restApiQueueBuild $buildBody
    Write-Host $buildresponse
}

RunBuild SECOND_BUILD_ID

使用测试将 SECOND_BUILD_ID 更新为构建定义的 ID。此外,在父构建中添加对安全令牌的访问:

enter image description here

相关问题