wer*_*zui 8 git azure-devops azure-pipelines
我们正在使用带有Git和Team System Build(以前的Build vNext)的Visual Studio Team Systems。当我们执行请求请求时,将触发一个新的构建,该构建将用于运行单元测试并部署到隔离的测试系统中。为了执行到隔离系统的部署,我需要在构建过程中获取真实的源分支名称。但是,Build.SourceBranchName变量始终为“合并”,
例如:
从源FOO到目标BAR的请求
Build.SourceBranch是“ refs / pull / 1 / merge”,因此Build.SourceBranchName是“ merge”。但是我需要以某种方式使“ FOO”运行我的Power Shell脚本来配置系统。
有没有办法在VSTS的Git Pull Request中获取真实的源分支名称?
对此没有任何变量,但您可以创建一个 power-shell 脚本以通过Rest API获取它。
[String]$projecturi = "$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"
[String]$sourcebranch = "$env:BUILD_SOURCEBRANCH"
[String]$repoid = "$env:BUILD_REPOSITORY_ID"
$username="alternativeusername"
$password="alternativepassword"
$basicAuth= ("{0}:{1}"-f $username,$password)
$basicAuth=[System.Text.Encoding]::UTF8.GetBytes($basicAuth)
$basicAuth=[System.Convert]::ToBase64String($basicAuth)
$headers= @{Authorization=("Basic {0}"-f $basicAuth)}
#get pull request ID via regex
$pullrequest = "refs/pull/+(?<pullnumber>\w+?)/merge+"
if($sourcebranch -match $pullrequest){
$pullrequestid = $Matches.pullnumber;
}
else { write-host "Cannot find pull request ID" }
#get pull request information via API
$url= $projecturi + "_apis/git/repositories/" + $repoid + "/pullRequests/" + $pullrequestid + "?api-version=1.0-preview.1"
Write-Host $url
$getpullrequest = Invoke-RestMethod -Uri $url -headers $headers -Method Get
#get sourcebranch and targetbranch
$sourceref = $getpullrequest.sourceRefName
$targetref = $getpullrequest.targetRefName
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2938 次 |
| 最近记录: |