在将功能分支合并到dev分支时,我想在为dev分支触发的构建中的azure-pipeline.yaml中获取合并的分支名称。
这可能吗?
或者当分支在我的仓库中被删除时,我可以启动一个包含删除分支名称的构建吗?
答案 0 :(得分:1)
如果我正确遵循,则说明您正在完成将功能分支(源分支)合并到开发分支(目标分支)的拉取请求,这将触发在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似乎没有公开事件。
答案 1 :(得分:1)
在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)
以下步骤可以成功访问该值: