【问题标题】:How can I get the branch name that is merged into target branch that trigger the pipeline?如何获取合并到触发管道的目标分支的分支名称?
【发布时间】:2020-12-25 18:44:52
【问题描述】:

分支“1850”被合并到分支“dev”中。当合并到分支“dev”时,管道触发。当发布成功或失败时,会有一个阶段会发送电子邮件让用户知道发布的状态。从电子邮件中我无法判断它是哪一个。那么如何获取“1850”变量的分支名称。

更新 Leo Liu-MSFT 的回答:

感谢您的帮助。所以我做出改变并发生这些错误。请解释为什么会这样。

【问题讨论】:

    标签: azure-devops


    【解决方案1】:

    如何获取合并到触发管道的目标分支的分支名称?

    您可以使用predefined variablesSystem.PullRequest.SourceBranch,它返回正在拉取请求中审查的分支。

    作为测试,我添加了一个内联 powershell 任务来输出这个变量:

    Write-Host "The merged target branch is:-" $(System.PullRequest.SourceBranch)
    

    那么我们可以得到值为refs/heads/1805

    我们可以使用命令行任务来解析该路径以获取分支名称:

    set BranchName=$(System.PullRequest.SourceBranch)
    for %%a in (%BranchName%) do echo %%~nxa
    

    更新:

    在我测试时,它在我这边运行良好,使用以下代码:

    Write-Host "##vso[task.setvariable variable=SourceBranchName;]$(System.PullRequest.SourceBranch)"
    

    删除isOutput=true

    然后,我可以通过命令行任务获取变量SourceBranchName

    echo  $(SourceBranchName)
    

    根据您的错误,错误似乎来自您的 powershell 任务本身或代理。因此,请尝试使用 hosted agentInline powershell 任务来检查您是否仍有此问题。

    希望这会有所帮助。

    【讨论】:

    • 我更新了我的问题。希望你能为我破案。对 azure devops 还是新手,很头疼
    • @PhucVuong,查看我更新的答案以获取更多信息。
    • 我认为 isOutput=true 是必要的。因为我需要在 SendGrid 电子邮件任务中使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 2020-12-20
    相关资源
    最近更新 更多