【问题标题】:How to create a VSTS pull request status from a successful release?如何从成功发布中创建 VSTS 拉取请求状态?
【发布时间】:2018-11-15 23:22:53
【问题描述】:

我们有一个数据仓库类型的应用程序,因此简单的构建不足以验证拉取请求。我们有一个发布管道,可以自动触发发布到烟雾环境。如果此部署成功,则拉取请求可以完成。

看来Pull Request Status API 非常适合这个。但是我不知道如何从版本中获取 pullRequestId。

在构建定义中有一个 $(System.PullRequest.PullRequestId) 变量,但在发布定义中没有。

我目前正在测试一个 hacky 解决方案 - 在构建阶段将一个新文件写入 artefact 目录,其中包含 $(System.PullRequest.PullRequestId)。然后它可用于发布。希望有更简单的方法。

【问题讨论】:

    标签: azure-devops pull-request azure-pipelines-release-pipeline azure-devops-rest-api


    【解决方案1】:

    似乎构建是由 PR 验证触发的,而发布是由构建工件触发的。然后你可以从预定义的变量$(Release.Artifacts.vs2017.SourceBranch)获取拉取请求ID

    由于 PR 验证触发构建,所以源分支格式为:

    refs/pull/{PullRequestId}/merge
    

    发布期间,您可以通过$(Release.Artifacts.vs2017.SourceBranch)获取源码分支。然后将字符串按/ 拆分,您将获得拉取请求ID。下面是一个示例(变量$prid 用于拉取请求ID):

    $t="$(Release.Artifacts.vs2017.SourceBranch)"
    $pr=$t -split '/'
    $prid=$pr[2]
    echo "the pull request id is $prid"
    

    【讨论】:

    • 是否也可以获取 PR 迭代 id?我想在每次推送时重置政策状态。
    • “PR 迭代 id”是什么意思? PR id 有什么区别?并且有了 PR id,改变 PR 状态就足够了。
    • 在分支策略中,对于基于代码的检查,您应该选择“每当有新更改时重置状态”,但这会引发警告“重置状态选项将状态限制为迭代。尝试发布状态拉取请求而不是迭代将失败。”要调用的 API 是这个:docs.microsoft.com/en-us/rest/api/vsts/git/…
    • 您能否显示您设置的“每当有新更改时重置状态”选项和警告的相关屏幕截图?
    • 您是否设置了自己的拉取请求状态服务器?否则 PR 迭代 id 不能用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多