在 Octopus Deploy 中为多个项目定义角色和环境
Posted
技术标签:
【中文标题】在 Octopus Deploy 中为多个项目定义角色和环境【英文标题】:Defining roles and environments for multiple projects in Octopus Deploy 【发布时间】:2014-01-28 12:10:41 【问题描述】:我们已完成对 Octopus Deploy 的评估,并对我们在单个项目中的体验感到非常满意。现在我们正在将 Octopus Deploy 的使用扩展到多个项目,这一步为我们的 Octopus 体验带来了新的维度。所以我们必须验证以下断言:
虽然每个环境(例如 DEV、STAGE、PROD)只有一个实例会很好,但单个环境会限制同时发布:给定项目的发布会部署到共享同样的角色,所以如果我们的生产环境由多台机器组成,但是我们其中一些必须运行不同的发布版本,那么我们不能只有 Prod 环境,我们需要将它分成几个组,例如PROD_OSLO 和 PROD_BERGEN,因此我们只能在奥斯陆发布生产新版本。
机器角色在所有项目之间共享,因此如果一台机器在 STAGE 环境中有一个角色 web-server,那么任何项目的任何版本的 web 应用程序都将部署在这台机器上。这意味着如果不同的项目应该为他们的 STAGE 环境使用不同的机器,那么这可以通过创建不同的角色(proj1-web-server 和 proj2-web-server)或通过将 STAGE 环境一分为二(STAGE_PROJ1 和 STAGE_PROJ2)来实现.我想知道这些替代方案之一是否有任何优势。
如果我忽略或误解了某些内容,而上述结论不正确,请详细说明。
【问题讨论】:
我很难相信 OctopusDeploy 没有这种项目分离部署管道的功能。我也一直在使用 IBM Urban Code Deploy,他们开箱即用地提供了这个功能。但是,产品之间的定价存在数量级差异。 【参考方案1】:我在我的公司使用 Octopus 实施了部署系统,您的大部分问题都与我们分享。
关于第一点,我们正是这样做的。我们定义了 CI、QA、Pre-Production 并创建了三个独立的生产部署:Production Alpha、生产测试版和全面生产。 Alpha 和 beta 包含完全生产的不同子集。
在将项目隔离到不同的物理服务器时,我们实施了多个角色。我们已经不再将机器标记为“IIS”或“SQL Server”,这听起来就像您所做的那样。我们的角色更加细化,并描述了机器提供的特定功能。
例如,我们的一个数据库服务器可能被标记为“DB-Sales-Reports”,而另一个可能被标记为“DB-Sales-Engine”。从功能上讲,这与您的建议相同,但我们对标签的 what 施加了一些语义含义。
理想情况下,我希望看到支持允许部署步骤针对一台满足“部署步骤目标的所有 M 角色”的机器,而不是当前行为“任何M 角色部署步骤的目标"
【讨论】:
谢谢你,迈克,你的回答很有道理。以上是关于在 Octopus Deploy 中为多个项目定义角色和环境的主要内容,如果未能解决你的问题,请参考以下文章
Octopus Deploy:如何将不同的项目部署到不同的生产机器上
部署应用程序时,Octopus Deploy 未合并我的转换文件
powershell 自动执行Octopus Deploy Server安装和配置
如何将不存在的部署目标配置为 Octopus Deploy?