Azure DevOps多CI / CD

时间:2019-01-11 02:51:34

标签: automation continuous-integration azure-devops continuous-deployment

我有以下用例:

我们有一个解决方案,其中包含5-10种不同的服务(各种版本的.NET Framework Web Apps)。我们必须在Azure DevOps中设置CI / CD,以便能够分别自动化每个服务(或一次所有服务)的部署。每种服务将有大约5种不同的环境。

挑战:

  • 我们正在努力避免将(服务数量X环境数量)分开的构建和发布(〜50构建/〜50发布)分开。
  • 我们确实必须能够单独部署一项服务,而不会影响其他服务。
  • 我们必须能够一次全部部署所有服务以进行大规模部署。

P.S。我们目前正在使用基于主干的开发,但是我正在考虑转向giflow以具有基于分支的触发器,因为我觉得在这种情况下更容易管理。

2 个答案:

答案 0 :(得分:1)

CI -由您的构建服务器(例如teamcity)处理。职责:生成,测试,混淆,创建软件包,最后将软件包推送到nuget服务器(特定于.net)。传统上,除了应用程序代码外,您还至少需要另外两个软件包:db迁移,infra迁移。

您只需构建一次软件包,然后将确切的版本部署到其他任何您想使用的版本。 https://gist.github.com/leblancmeneses/1d352bb79447cd7a486598c4dc796ef1 该脚本与https://github.com/leblancmeneses/RobustHaven.DevOps

结合使用

CD -由章鱼部署等操作。负责任地:在整个集群中协调部署过程。 Octopus从nuget服务器中提取软件包,并将其移动到所需的任何环境以及包含该环境的任何计算机上。

https://www.robusthaven.com/presentations/DevOps

答案 1 :(得分:0)

您实际上并不需要50个构建,您可以为每个服务使用一个构建(假设针对不同环境的构建是相同的),并且可以从不同分支构建。从技术上讲,如果您正确创建触发器\阶段,则可以针对50个环境使用一个发行版,但这很麻烦,只需为每个环境创建一个即可。我看不到如何在一个发行版上管理50个环境。

当yaml发布管道到来时,这变得微不足道,不幸的是,现在不是。