【问题标题】:How to get the pull request number from predefined variable in azure build pipeline(CI)如何从 azure build pipeline(CI)中的预定义变量获取拉取请求编号
【发布时间】:2020-03-20 09:09:07
【问题描述】:

我需要我的 CI 启动的 PR 编号。我正在使用 System.PullRequest.PullRequestNumber,但是当我的 CI 运行时它显示为空字符串。

Write-Host "PR Number is:-" $env:System.PullRequest.PullRequestNumber

我没有通过保存和队列运行此 CI。跟随 PR 的完整过程。

【问题讨论】:

  • 两者都不工作

标签: azure powershell azure-devops continuous-integration


【解决方案1】:

如何从 azure build pipeline(CI) 中的预定义变量中获取拉取请求编号

首先,就像文档System variables状态:

变量 System.PullRequest.PullRequestNumber 是从 GitHub 填充的。我们应该使用System.PullRequest.PullRequestId

所以,我们可以使用语法$(System.PullRequest.PullRequestId) 来获取值:

Write-Host "PR ID is:-" $(System.PullRequest.PullRequestId)

另外,基于Understand variable syntax文档

当变量变成环境变量时,变量名 变成大写,句号变成下划线。例如, 变量 any.variable 变为 $ANY_VARIABLE

所以,如果你得到环境变量$env:System_PullRequest_PullRequestId 而不是$(System.PullRequest.PullRequestId)

所以,脚本应该是:

Write-Host "PR ID is:-" $env:System_PullRequest_PullRequestId

这就是System.PullRequest.PullRequestId 不适合你的原因。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    试试这个:

    Write-Host "PR Number is:-" $(System.PullRequest.PullRequestId)

    编辑

    根据documentation,System.PullRequest.PullRequestNumber 是从 GitHub 填充的,您确定需要这个吗?

    和 System.PullRequest.PullRequestId:

    导致此构建的拉取请求的 ID。例如:17。 (此变量仅在构建因 Git 运行时才被初始化 PR 受分支策略影响。)

    【讨论】:

    • 术语“System.PullRequest.PullRequestId”不被识别为 cmdlet、函数、脚本文件或可运行程序的名称。通过正确提交和 PR 完成运行 CI 后
    • 奇怪,我有完全相同的字符串:“Write-Host”PR Number is:-“$(System.PullRequest.PullRequestId)”,我在上面的 powershell v.2 任务和工作中发布完美。
    【解决方案3】:

    $(System.PullRequest.PullRequestId) 仅在构建运行时初始化,因为 Git PR 受分支策略影响。根据documentation,该变量也仅在经典管道(不是 YAML)中可用。

    您可以从以下位置提取PullRequestId

    "$(RELEASE.ARTIFACTS.*YOURARTIFACTNAME*.SOURCEBRANCH)"
    

    【讨论】:

    • 更新:这个变量似乎在 YAML 管道中可用(可能是后来添加的)并且文档 has been updated
    猜你喜欢
    • 1970-01-01
    • 2021-03-29
    • 2023-03-24
    • 2018-12-12
    • 1970-01-01
    • 2020-02-23
    • 2014-04-15
    • 1970-01-01
    • 2021-10-27
    相关资源
    最近更新 更多