我有以下用例:
我们有一个解决方案,其中包含5-10种不同的服务(各种版本的.NET Framework Web Apps)。我们必须在Azure DevOps中设置CI / CD,以便能够分别自动化每个服务(或一次所有服务)的部署。每种服务将有大约5种不同的环境。
挑战:
P.S。我们目前正在使用基于主干的开发,但是我正在考虑转向giflow以具有基于分支的触发器,因为我觉得在这种情况下更容易管理。
答案 0 :(得分:1)
CI -由您的构建服务器(例如teamcity)处理。职责:生成,测试,混淆,创建软件包,最后将软件包推送到nuget服务器(特定于.net)。传统上,除了应用程序代码外,您还至少需要另外两个软件包:db迁移,infra迁移。
您只需构建一次软件包,然后将确切的版本部署到其他任何您想使用的版本。 https://gist.github.com/leblancmeneses/1d352bb79447cd7a486598c4dc796ef1 该脚本与https://github.com/leblancmeneses/RobustHaven.DevOps
结合使用CD -由章鱼部署等操作。负责任地:在整个集群中协调部署过程。 Octopus从nuget服务器中提取软件包,并将其移动到所需的任何环境以及包含该环境的任何计算机上。
答案 1 :(得分:0)
您实际上并不需要50个构建,您可以为每个服务使用一个构建(假设针对不同环境的构建是相同的),并且可以从不同分支构建。从技术上讲,如果您正确创建触发器\阶段,则可以针对50个环境使用一个发行版,但这很麻烦,只需为每个环境创建一个即可。我看不到如何在一个发行版上管理50个环境。
当yaml发布管道到来时,这变得微不足道,不幸的是,现在不是。