温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Is it possible to get parameters from the pull request for Control Options on Azure Devops Pipelines
azure-devops azure-pipelines

其他 - 是否可以从Azure Devops管道上的控制选项的拉取请求中获取参数

发布于 2020-04-14 23:51:17

我在Azure开发操作上有一个简单的管道,具有4个工作

  • Npm运行测试
  • Npm版本凹凸
  • Npm发布

那个有效。此时,每次对主分支进行PR时,版本凹凸仅会“修补”。因此,它仅发布补丁程序版本...我对此有一个自定义条件: contains(variables['Build.SourceBranch'], 'refs/heads/master')好吧,我想要在这里添加一个条件,决定动态地将版本作为补丁(例如,主要或次要)进行修改...因此,我正在考虑从拉取请求标题或描述中获取该参数,例如:

contains(variables['Build.PR.Title'], 'patch') contains(variables['Build.PR.Title'], 'major') contains(variables['Build.PR.Title'], 'minor')

的确,如果PR标题具有“ patch”,“ major”或“ minor”,将触发3种不同的工作。是否可以执行类似的操作,或者是否有更简单的方法?:)

提前感谢!

查看更多

提问者
Mar
被浏览
137
Shamrai Aleksander 2020-02-04 02:50

Azure Devops管道未通过prs的标题。您可以在此处找到预定义的变量:使用预定义的变量为了得到积极拉动请求的详细信息,您可以使用REST API 引入请求-获取拉入请求通过标识System.PullRequest.PullRequestId以获取标题为例:

  1. 添加自定义变量定义诸如Custom.PRTitle之类的变量
  2. 在您的工作中设置对PAT的访问权限。System.AccessToken
  3. 添加第一步作为脚本,以读取和保存您的拉取请求的标题,例如使用PowerShell:
$user = ""
$token = "$(System.AccessToken)"
$teamProject = "$(System.TeamProject)"
$PRId = "$(System.PullRequest.PullRequestId)"
$orgUrl = "$(System.CollectionUri)"

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

$uriGetActivePr = "$orgUrl/$teamProject/_apis/git/pullrequests/$PRId"

$resultPR = Invoke-RestMethod -Uri $uriGetActivePr -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}

Write-Host "##vso[task.setvariable variable=Custom.PRTitle]"$resultPR.title

然后,您可以在自己的条件下使用新变量,例如:

and(contains(variables['Build.SourceBranch'], 'refs/heads/master'), contains(variables['Custom.PRTitle'], 'patch'))