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

How to trigger a build from another build pipeline in azure devops

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

有没有任何可能的方法可以将另一个任务添加到实际构建中以触发测试自动化构建,或者提出相同的可能方法。

答案非常可观!!

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

此外,您可以添加 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。此外,在父构建中添加对安全令牌的访问: