gpt4 book ai didi

azure-devops - 是否可以读取管道任务上的 PR 标签?

转载 作者:行者123 更新时间:2023-12-04 16:26:28 26 4
gpt4 key购买 nike

我的问题基本上是标题。我找不到这样的信息阅读this page并在网上搜索。
我的场景如下:每当我创建一个 PR 来掌握时,我都会添加一个带有一些信息的标签,就像这里看到的 lib 版本:
enter image description here
然后,在构建过程中,我生成发行说明并希望在任务中访问该 PR 标签,就像我对 $(Build.BuildId) 所做的那样。这里:
enter image description here
我怎样才能做到这一点?类似 $(PullRequest.Tag)谢谢!

最佳答案

How can I accomplish that? Something like $(PullRequest.Tag) Thanks!


拉取请求标签的预定义变量。 (我在 CMD 任务中使用 printenv 命令来确认这一点!)
这是我的解决方法:
使用 Powershell task调用 this rest api ,响应将包含特定 PR 的标签
$url = "$($env:SYSTEM_TEAMFOUNDATIONSERVERURI)$env:SYSTEM_TEAMPROJECTID/_apis/git/repositories/$($env:BUILD_REPOSITORY_NAME)/pullRequests/$($env:SYSTEM_PULLREQUEST_PULLREQUESTID)/labels?api-version=5.1-preview.1"
$response = Invoke-RestMethod -Uri $url -Method Get -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}

Write-Host "##vso[task.setvariable variable=PullRequestTag;isOutput=true]$($response.value.name)"
然后传递变量 $response.value.name (来自rest api响应,名称代表标签名称)输出变量PullRequestTag(自定义变量)以便下一个任务可以访问返回的标签名称。
备注:
1.确保包含Powershell任务的作业允许脚本访问OAuth token ,因为我的脚本使用OAuth token 而不是PAT来调用rest api。 (单击代理作业名称=> 其他选项)
enter image description here
2.既然是 output variable , 我们应该使用格式 $(referenceName.variablename) .
enter image description here
enter image description here
之后,我们可以使用 $(PS.PullRequestTag)在接下来的任务中访问标签名称。
3.由于您的场景是在由 PR 触发的管道运行中,因此实际上 Powershell 任务应该仅在当前管道由 PR 触发而不是手动运行/CI 时运行。
使用 and(succeeded(), eq(variables['Build.Reason'], 'PullRequest'))在 PS 任务的控制选项中。见 conditionsBuild.Reason多变的。
更新:
如果我在创建 PR 时添加了几个标签:
enter image description here $(PS.PullRequestTag)的值(value)将是:
enter image description here

关于azure-devops - 是否可以读取管道任务上的 PR 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62932941/

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