automation - Azure DevOps 多 CI/CD
问题描述
我有以下用例:
我们有一个解决方案,其中包含 5-10 个不同的服务(各种版本的 .NET Framework Web 应用程序)。我们必须在 Azure DevOps 中设置 CI/CD,以便能够分别自动部署每个服务(或同时自动部署所有服务)。每个服务将有大约 5 种不同的环境。
挑战:
- 我们试图避免(服务数量 X 环境数量)单独的构建和发布(~50 构建/~50 发布)。
- 我们必须能够单独部署一项服务而不影响其他服务。
- 我们确实必须能够一次部署所有服务以进行大规模部署。
PS 我们目前正在使用基于主干的开发,但我正在考虑迁移到 giflow 以拥有基于分支的触发器,因为我觉得在这种情况下更容易管理。
解决方案
CI - 由您的构建服务器处理(例如 teamcity)。职责:构建、测试、混淆、创建包,最后将包推送到 nuget 服务器(特定于.net)。传统上,除了应用程序代码之外,您还需要至少 2 个其他包:db migrations、infra migrations。
您构建包一次,然后在您希望它去的任何其他地方部署确切的版本。 https://gist.github.com/leblancmeneses/1d352bb79447cd7a486598c4dc796ef1 此脚本与https://github.com/leblancmeneses/RobustHaven.DevOps配合使用
CD - 由章鱼部署之类的东西处理。负责任地:在您的集群中协调部署过程。Octopus 从 nuget 服务器中提取包并将它们移动到您想要的任何环境以及包含该环境的任何机器。
推荐阅读
- php - 选择 Select2 JS 中的所有选项复选框?
- apache-kafka - Kafka - 具有批处理数据和流的事件之间的区别
- selenium - xpath中的点(。)如何在识别元素和匹配文本时采用多种形式
- php - 使用内爆或爆炸将数值数组转换为关联数组?
- regex - 如何使用 REGEX 匹配另一个模式之前的最后一次出现的模式
- elasticsearch - 从最后一个 updated_on 日期推送数据
- javascript - A-Frame:在 EventListener 中缩放 a-box:“this.el is undefined”
- ruby-on-rails - 如何在 Rails 迁移中使触发器可逆
- authentication - ASP Core 3 react模板,登录后HttpContext.User.IsAuthenticated()返回False
- linux - 无法在基于 Yocto 的发行版上从 VLC 流式传输 RTSP