Azure DevOps:如何在拉取请求完成后触发发布?

Azure DevOps: how to trigger a release upon pull request being completed?

我有一个有两个分支的仓库:

develop 分支中的代码已知可作为 "alpha" 版本发布,而 master 分支中的代码已知可用于生产。

目前,开发分支的策略要求 CI 构建必须成功完成才能合并 PR。该构建将创建带有预发布标记 (alpha-####) 的 NuGet 包工件。

发布管道负责获取这些包并将它们发布到内部 NuGet 提要。

我想要实现的是在 PR 完成时自动触发发布管道不是每当 CI构建成功。

我希望 "pull request trigger" 能做到这一点,但令我惊讶的是,触发器不会确认 PR 的状态,并会在 CI 构建完成后立即启动发布管道.

这意味着如果 PR 因任何原因被拒绝,NuGet 可能仍会部署到我的提要中!

我在这里做错了什么?为什么拉取请求触发器与持续部署触发器的工作方式没有任何不同?那它的目的是什么? :/

持续部署触发器意味着,如果您在发布管道中指定特定类型的工件,则可以启用持续部署。这指示 Azure Pipeline 在检测到新工件可用时自动创建新版本。

Pull request trigger 意味着,一旦配置了 pull request 发布,只要对受保护的分支提出 pull request,就会自动触发发布,部署到指定的环境。

所以这两个触发器是不同的,更详细的信息你可以参考这里。 https://docs.microsoft.com/en-us/azure/devops/pipelines/release/deploy-pull-request-builds?view=azure-devops

https://docs.microsoft.com/en-us/azure/devops/pipelines/release/triggers?view=azure-devops

如果您在 PR 完成后仍想部署 Nuget,我建议您创建一个新的构建管道并为其启用持续集成。然后将此构建管道设置为发布管道工件。 因为当 PR 完成时,它会创建一个新的提交到目标分支,这个新的提交将触发构建管道,构建管道将触发发布管道以按您的预期部署 Nuget。

不确定一年多后是否还有人在寻找解决方案,但我写了一个 Azure Function 应用程序来接收来自 DevOps 的拉取请求关闭 webhook,并将这些事件转化为新版本。

您可以在我的 github 上找到它:https://github.com/GravlLift/OnPullRequest

随意分叉它以满足您的个人需求。