在 azure pipelines yaml 中获取合并的分支名称
get merged branch name in azure pipelines yaml
在将功能分支合并到 dev 分支时,我想在我的 azure-pipeline.yaml 上为 dev 分支触发的构建中获取合并的分支名称。
这可能吗?
或者当我的仓库中的一个分支被删除时,我可以启动一个包含删除分支名称的构建吗?
如果我没听错,您将完成一个将功能分支(源分支)合并到开发分支(目标分支)的合并请求,这会触发开发分支上的构建。在生成的构建中,您想获取功能分支的名称吗?也许功能分支遵循了您想要继承的重要命名约定。
您确实在 $(Build.SourceVersion)
变量中拥有可用的提交 ID,因此您应该能够使用 BitBucket REST API 获取提交信息。此 commit details endpoint 可以识别提交的 pull-requests,因此您应该能够从那里获取源分支信息。
/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来输出Merged Branch Name,我们甚至可以使用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)
下面的步骤可以成功访问这个值:
在将功能分支合并到 dev 分支时,我想在我的 azure-pipeline.yaml 上为 dev 分支触发的构建中获取合并的分支名称。
这可能吗?
或者当我的仓库中的一个分支被删除时,我可以启动一个包含删除分支名称的构建吗?
如果我没听错,您将完成一个将功能分支(源分支)合并到开发分支(目标分支)的合并请求,这会触发开发分支上的构建。在生成的构建中,您想获取功能分支的名称吗?也许功能分支遵循了您想要继承的重要命名约定。
您确实在 $(Build.SourceVersion)
变量中拥有可用的提交 ID,因此您应该能够使用 BitBucket REST API 获取提交信息。此 commit details endpoint 可以识别提交的 pull-requests,因此您应该能够从那里获取源分支信息。
/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来输出Merged Branch Name,我们甚至可以使用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)
下面的步骤可以成功访问这个值: