Azure devops Azure Devops YAML管道-清理动态部署

Azure devops Azure Devops YAML管道-清理动态部署,azure-devops,azure-pipelines,Azure Devops,Azure Pipelines,我们当前的管道为azure repos上创建的每个新分支部署一个新的应用程序实例,就像Heroku或Gitlab上的review应用程序一样。 创建部分进行得很顺利,但我不确定在分支被删除后(希望是被接受的pr删除),如何处理孤立的资源和部署 手动删除它们不是一个选项,我在文档中找不到分支删除的触发器 我现在看到的唯一选项是使用bash脚本为主分支创建一个计划作业(因为它总是存在的),该脚本比较已部署应用程序列表和现有分支,并清理资源 这是我唯一的选择,还是没有一台相当复杂的、全访问、销毁的机器

我们当前的管道为azure repos上创建的每个新分支部署一个新的应用程序实例,就像Heroku或Gitlab上的review应用程序一样。 创建部分进行得很顺利,但我不确定在分支被删除后(希望是被接受的pr删除),如何处理孤立的资源和部署

手动删除它们不是一个选项,我在文档中找不到分支删除的触发器

我现在看到的唯一选项是使用bash脚本为主分支创建一个计划作业(因为它总是存在的),该脚本比较已部署应用程序列表和现有分支,并清理资源


这是我唯一的选择,还是没有一台相当复杂的、全访问、销毁的机器,还有其他方法?

所以做了一点调查,将所有环境变量转储到Notepad++并使用比较插件,我意识到当接受PR时,两个环境变量是不同的

推送过程中的第一个初始变量“BUILD_REASON”设置为“IndividualCI”,但“BUILD_SOURCEBRANCH”设置为“refs/heads/feature/*****”。启动拉请求时,“生成原因”更改为“pullrequest”,而“生成源分支”更改为“refs/pull/***”

最后,当接受PR时,变量变为“BUILD_REASON”=“IndividualCI”和“BUILD_SOURCEBRANCH”=“refs/heads/master”

一旦我明白了这一点,我可以创建具有以下条件的阶段:

- stage: CleanUp
  displayName: 'CleanUp'
  dependsOn: Test
  condition:  and(succeeded(), in(variables['Build.Reason'], 'IndividualCI'),in(variables['Build.SourceBranchName'], 'master'))

上述阶段将在接受PR时触发,以便清理PR期间创建的资源:-)一路未测试,但似乎完成了任务。

您可以使用Azure DevOps中的webhook来查看拉取更新请求。当pull请求状态更改为completed时,启动一个脚本,删除用于PR的资源。

您想删除与已删除分支相对应的构建管道还是要删除服务器上部署的资源?部署的资源,如docker swarm堆栈、数据库、azure队列等。据我所知,除了手动删除,您只能尝试通过脚本实现。不应该有这样的触发器:一旦分支被删除,相关的部署资源将自动删除。您也有同样的问题,如果我可以在批准拉请求时触发,从而清理测试资源,那将非常酷!在yaml管道中真的没有办法实现这一点吗?我假设您必须手动检查剩下哪些孤立资源需要清理?这只是在主版本上运行此步骤?