我正在尝试设置azure管道以触发每次PR更新的构建,以及每次合并的发布。合并PR时有几个原因,我需要访问PR的最新验证版本保存的数据。
但是,在发布管道运行期间,我需要PRid。一个人怎么能做到这一点?
答案 0 :(得分:1)
在发布管道中,您可以使用变量$(RELEASE.ARTIFACTS.<<Source alias name>>.PULLREQUEST.ID)
获取请求请求ID。
注意:Source别名是在发布工件中设置的名称。
顺便说一句,如果您在脚本中使用默认变量,则必须首先用.
替换默认变量名称中的_
。
例如:$env:RELEASE_ARTIFACTS_<<Source alias name>>_PULLREQUEST_ID
这是有关the Release variables的文档。
希望这会有所帮助。
答案 1 :(得分:1)
根据您的情况,据我所知,在您的发行版中获取相关的构建信息很复杂。此外,如果未涵盖所有可能的情况,可能会导致意外结果。
我建议您可以参考以下步骤:
通过这种方式,在完成拉取请求之后,将触发此新的构建管道并发布必要的工件,然后将触发发行版。
对于请求请求验证构建,他们只是执行验证代码的任务(例如,构建项目),而不发布工件。
节省时间的简单方案:
拉取请求具有50个验证版本
然后您可以节省40分钟。
答案 2 :(得分:1)
您可以从发行版中检索触发构建的提交ID。 然后,您在已完成的PR列表中搜索commitId并获取您的PR编号。
$commitId = "$(RELEASE.ARTIFACTS.{YOURARTIFACTALIAS}.SOURCEVERSION)"
$repoId = "$(RELEASE.ARTIFACTS.{YOURARTIFACTALIAS}.REPOSITORY.ID)"
$pullRequestsUri = "https://dev.azure.com/{organization}/{project}_apis/git/repositories/" + $repoId + "/pullrequests?searchCriteria.status=completed&api-version=5.1"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "", "$(System.AccessToken)")))
$pullRequests = Invoke-RestMethod -Uri $pullRequestsUri -Method GET -ContentType "application/json" -Headers @{Authorization = "Basic $base64AuthInfo" }
foreach ($value in $pullRequests.value) {
if ($value.lastMergeCommit.commitId -eq $commitId) {
$pullRequestId = $value.pullRequestId
}
}
Write-Host $pullRequestId