Azure DevOps构建管道-失败的构建仍将部署到Azure

时间:2018-10-11 13:04:23

标签: azure continuous-integration azure-devops continuous-delivery build-pipeline

我正在尝试为示例原型创建CI / CD管道。因此,我已经开始足够简单地测试我的基础结构-我正在使用几乎未改动的ASP.NET Framework Web App(针对4.6.1)。我已经完成的步骤是:

  • 应用程序已部署到Azure应用程序服务。
  • 其版本控制由Azure DevOps托管。
  • 已创建,设置并测试了具有以下任务的构建管道是否执行(任务及其顺序,来自模板):

Tasks used

  • Azure部署选项/设置绑定到存储库DevOps,因此,构建也显示在Azure中,如果成功,则应将其部署在其中。
  • 构建管道已绑定到DevOps中正确的存储库
  • 通过推送到master分支触发构建

下一步是验证由于测试失败或任何其他原因而导致构建版本损坏的原因未部署到Azure中。因此,我创建了失败的测试。

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

Deployment failed

然而,那些损坏的构建仍然仍被部署到Azure和生产中,甚至无需等待管道完成。我正在验证小的视觉更新确实发生了更改。

在完全遍历DevOps中的管道之前(如果找到代理需要更长的时间,甚至在发现之前就开始了),只要在推送中就开始在Azure中开始和结束构建:

Building on Azure

Built

(DevOps仍未完成):

And yet the pipeline hasn't finished yet...

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

编辑:按照乔什的要求,这也是我的触发条件: enter image description here

编辑2.2 进一步阐明了我在Azure的App Service中的部署选项,与Daniel的评论有关:

enter image description here

原来是问题所在。

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

1 个答案:

答案 0 :(得分:1)

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

  1. 一个建筑物在管道中点火。
  2. Azure网站已更新为您刚刚推送到源代码管理的版本,因为其部署选项已绑定到该版本。

删除#2,您的问题将消失。您可以在管道中设置要更新的App Service,而无需在App Service本身中附加钩子。