首页 > 解决方案 > Azure DevOps 构建管道 - 失败的构建仍会部署到 Azure

问题描述

我正在尝试为示例原型创建 CI/CD 管道。因此,我已经开始非常简单地测试我的基础架构——我使用的是一个几乎未受影响的 ASP.NET Framework Web App 样板(针对 4.6.1)。我完成的步骤是:

使用的任务

下一步是验证由于测试失败或任何其他原因而导致的损坏构建部署到 Azure 中的生产环境。出于这个原因,我创建了一个失败的测试。

这就是我被难住的地方。构建确实按预期失败,并且“App Service Deploy”任务被跳过,因为它之前的构建任务失败了:

部署失败

然而,这些损坏的构建仍然会部署到 Azure 和生产中,甚至无需等待管道完成。我正在验证小的视觉更新实际上已经发生了变化。

在完全遍历 DevOps 中的管道(或者甚至开始,如果查找代理需要更长时间)之前,一旦发生推送,构建就会在 Azure 中开始和完成:

在 Azure 上构建

建成

(DevOps 仍未完成):

然而,管道还没有完成......

我在这里做错了什么?我理解管道错误吗?我是否错过了某个地方的设置步骤?我迷路了。

编辑:正如乔希所问,这也是我的触发器: 在此处输入图像描述

编辑 2.2对我在 Azure 中的应用服务中的部署选项的更多说明,与 Daniel 的评论有关:

在此处输入图像描述

原来这是问题所在。

这是我在将部署绑定到 DevOps 时唯一可以选择的选项。我不允许选择管道,只能选择项目和分支。在我比较过的教程中,设置是相同的(至少在这个菜单中),但构建不会从存储库触发,但希望管道首先到达适当的步骤,这就是为什么我没有t认为它是罪魁祸首。是否有一些额外的设置,我错过了,以表明它必须寻找管道,而不是直接从分支更改中触发?

标签: azureazure-devopscontinuous-integrationazure-pipelinescontinuous-delivery

解决方案


您在 Azure 门户中设置的部署仅与源代码管理相关联,而不与您的生成定义相关联。因此,每次您提交源代码控制时,都会发生两件事,它们彼此完全断开并并行启动,因为它们侦听相同的存储库以进行更改:

  1. 一个构建在管道中启动。
  2. Azure 网站已更新为您刚刚推送到源代码管理的版本,因为它的部署选项已绑定到它。

删除#2,你的问题就会消失。您可以在管道中设置要更新的应用服务,无需在应用服务本身中添加额外的挂钩。


推荐阅读