首页 > 解决方案 > 在 Azure DevOps Servvices 中,我们可以在不同的环境之间共享一个 VM 吗?

问题描述

我目前有一个 DEV 服务器,其中部署了多个应用程序。我想使用 Azure DevOps 管道自动部署这些应用程序,因此我现在正在寻找构建多阶段管道。

据我了解,我们现在应该使用环境的创建,而不是部署组。

但是,在项目中设置环境(指定 VM 资源)意味着执行 PowerShell 脚本,该脚本将为每个项目创建一个代理、一个 Windows 服务和一个“环境”部署组。因此,如果我有一个包含 10 个项目的服务器,这将下载 10 次代理,在同一台服务器上安装 10 个 Windows 服务。

我理解并行化作业部署的兴趣,但这对我来说似乎有点矫枉过正。

有什么我想念的吗?我们可以为多个项目共享一个环境虚拟机资源(以及底层环境代理)吗?

谢谢!

标签: azure-devops

解决方案


有什么我想念的吗?我们可以为多个项目共享一个环境虚拟机资源(以及底层环境代理)吗?

抱歉,尚不支持在不同环境之间共享 VM 。

您似乎有 10 个团队项目,这里有一些建议可能会有所帮助,具体取决于我们无法在环境之间共享 VM:

  1. 为每个项目指定资源,这意味着我们必须按照您上面提到的那样做 10 次。那么每个团队项目都应该有自己的 CI/CD 管道。(不是你最初想要的)

  2. 使用来自一个团队项目的一个多阶段管道从十个项目中获取 repos,然后为它们执行 CI/CD 工作。这样,我们使用一个管道来构建和部署十个repos,因此我们只需要在当前项目中使用Environment即可。

    这样,我们只需要为当前项目指定一次VM资源。我们可以使用十个阶段或十个作业来部署十个项目。但这会使 yaml 文件复杂且难以维护。任何工作或阶段中的任何错误都可能使整个管道失败,这也不是一个好的工作流程。(不推荐)。

  3. 您可以查看此博客:跨项目共享部署组。您可以考虑暂时使用经典 CI/CD 管道,以便您可以使用部署组,而不是环境。并且支持在不同的部署组之间共享一个虚拟机。

由于目前不支持您想要的,我们必须使用临时解决方法。就像博客提到的那样:

我们收到的重要反馈之一是,这仅部分解决了客户跨多个应用程序共享其 IaaS 机器(部署目标)的情况。

我同意支持在环境之间共享 VM 是个好主意,因此我建议您可以在我们的用户语音论坛Suggest a feaure中发布功能请求( )以分享您的反馈。

希望以上对你有所帮助。干杯!


推荐阅读