gpt4 book ai didi

git - 从发布 (CD) 管道触发构建 (CI) 管道?

转载 作者:行者123 更新时间:2023-12-02 23:13:41 25 4
gpt4 key购买 nike

我知道从发布管道触发构建管道是非常规的,但就我而言,这是我的需要。在 Azure DevOps 中,我有一个触发发布管道的构建管道,然后在发布中完成所有阶段后,我想触发另一个构建管道。该构建管道将负责更新我的 git 存储库中的 json 文件。为了能够访问 git 存储库并进行更改/提交,我需要使用构建管道。我有一个解决方法,可以在发布管道中克隆 git 存储库并进行更新,但这“感觉不对”。我希望能找到更好的解决方案。

注意:在 git commit 消息中我将有 [skip ci],因此不会出现触发器或管道的无限循环...

最佳答案

最简单的方法是尝试任何这些第三方任务,它可以让您从您的版本中调用构建管道。但我不能保证任何内容。

enter image description here

如果您像我一样有信任问题:)您可以使用 DevOps REST.API 来触发您的构建管道。

基本上,您需要发出 POST 请求来触发管道:

POST https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=6.0

引用:https://learn.microsoft.com/en-us/rest/api/azure/devops/build/builds/queue?view=azure-devops-rest-6.0

为此,您可以使用作为发布管道最后一步添加的 PowerShell 任务。

引用:https://learn.microsoft.com/en-us/azure/devops/pipelines/scripts/powershell?view=azure-devops&tabs=yaml#example-powershell-script-access-rest-api

此外,请记住在“在代理上运行”任务的“其他选项”下设置 OAuth token 访问权限。

enter image description here

此外,您尝试触发的构建管道应该为您的构建服务授予“队列构建”权限。

enter image description here

这是一个您应该能够重用的类似脚本:

$alias = "$(Release.TriggeringArtifact.Alias)"
$buildIdKey = "RELEASE_ARTIFACTS_" + $alias + "_BUILDID"
$buildId = (Get-item env:$buildIdKey).Value
$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build/builds?api-version=6.1-preview.6"
Write-Host "URL: $url"
$authHeader = "Bearer $(System.AccessToken)"
$requestHeader = @{
"Authorization" = $authHeader
"Accept" = "application/json"
}
$requestBody = '{
"definition": {
"id": ' + $buildId + '
}
}'
$pipeline = Invoke-RestMethod -Method 'Post' -Uri $url -ContentType "application/json" -Headers $requestHeader -Body $requestBody
Write-Host "Pipeline = $($pipeline | ConvertTo-Json -Depth 100)"

关于git - 从发布 (CD) 管道触发构建 (CI) 管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65502622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com