如何解决在azure管道yaml中获取合并的分支名称
在将功能分支合并到dev分支时,我想在为dev分支触发的构建中的azure-pipeline.yaml中获取合并的分支名称。
这可能吗?
或者当分支在我的仓库中被删除时,我可以启动一个包含删除分支名称的构建吗?
解决方法
如果我正确遵循,则说明您正在完成将功能分支(源分支)合并到开发分支(目标分支)的拉取请求,这将触发在develop分支上进行构建。在生成的版本中,您要获取功能分支的名称吗?也许功能分支遵循了一个您希望继承的重要命名约定。
您确实在$(Build.SourceVersion)
变量中拥有可用的提交ID,因此您应该能够使用BitBucket REST API来获取提交信息。 commit details endpoint可以识别提交的请求请求,因此您应该可以从那里获取源分支信息。
/2.0/repositories/{workspace}/{repo_slug}/commit/{commit}/pullrequests
您还应该能够使用$(Build.SourceVersionMessage)获取提交消息
关于在删除分支时触发构建,YAML语法中没有任何本机触发,但是您可以定义使用webhook trigger的触发。当删除分支时,BitBucket似乎没有公开事件。
,在BitBucket存储库中,当尝试将feature1
合并到dev
分支中时,它提供默认提交消息:
Merged in feature1 (pull request #{PullRequestNumber})
我们可以通过预定义变量$(Build.SourceVersionMessage)
访问此消息。我们可以使用Powershell task输出合并的分支名称,甚至可以使用PS任务在脚本中设置变量,以便后续步骤也可以访问该值。这是我的工作脚本:
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
$SourceVersionMessage = "$(Build.SourceVersionMessage)"
$SourceBranchName = $SourceVersionMessage.split(" ")[2]
#Output the Merged Branch Name
Write-Host $SourceBranchName
#Set the `MergedBranchName` variable so that following steps can access the Merged Branch Name
Write-Host "##vso[task.setvariable variable=MergedBranchName]$SourceBranchName"
- script: |
echo $(MergedBranchName)
以下步骤可以成功访问该值:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。