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

Cro*_*ono 11 continuous-integration nuget continuous-delivery azure-devops

我有一个 repo,它有两个分支:

  • 开发(repo 的默认分支)
  • 掌握

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

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

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

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

我希望“拉取请求触发器”能做到这一点,但令我惊讶的是,触发器不会确认 PR 的状态,并且在 CI 构建完成后立即启动发布管道。

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

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

小智 6

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

拉取请求触发器意味着,一旦配置了拉取请求发布,无论何时为受保护分支提出拉取请求,都会自动触发发布,并将其部署到指定的环境。

所以这两个触发器是不同的,更详细的信息你可以参考这里。 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。

  • 谢谢。使用启用了 CI 的第二个构建是我辞职的事情。我只是希望有更好的方法。我发现,当只有策略就可以的时候,必须同时完成分支策略构建和合并构建,这很愚蠢。我将尝试在发布管道上使用分支过滤器,这样我就可以摆脱 CI 和分支策略只有一个构建定义的情况。希望它能起作用。:s (5认同)