Woo*_*Hoo 7 teamcity octopus-deploy
我正在寻找有关设置 TeamCity/Octopus 的最佳方法的建议。
目前我在 TFS2015 中有多个分支 - dev、main 和 release(目前我们为每个版本创建一个发布分支)。
我们的程序是在 dev 中开发并部署到 dev 环境。当我们准备好测试时,我们从 dev 合并到 main,然后从 main 部署到 test。高兴时,我们创建一个发布分支并从发布分支部署到现场。这是一个手动过程。
修补程序在发布分支上完成并部署到现场。然后我们合并回 main/dev。
我对此完全陌生,到目前为止在 VM 游乐场中我已经设置了 TFS2015、TeamCity 和 Octopus,并且可以登记到 TFS,在 TeamCity 上构建/创建包并从 Octopus 部署这个包。但...
我不确定我应该如何设置 TeamCity 和 Octopus 以与多个分支一起工作?每个分支的多个项目并生成不同的工件?
当我真正做到这一点时,我有一个 TFS VM,我计划在上面安装 TeamCity 和 Octopus 以及构建代理。这是一个坏主意吗?我应该为 TM 和 Octopus 创建一个新的虚拟机吗?
任何建议或最佳实践将不胜感激。
尽管您的问题范围很广,但一个好的答案必须涵盖许多细节才能完整。
让我尝试指出您需要进一步调查和配置的主要领域。
可以将 VCS 根配置为通过分支规范侦听多个分支
VCS 根可以包含多个项目/解决方案,并且可以在 TeamCity 中通过多个步骤构建这些项目/解决方案。
鉴于 Team City 不支持条件构建步骤,您将需要一种不同的策略来允许您根据发布渠道/环境改变构建步骤(和参数)。
我推荐的方法是将构建拆分为每个发布渠道(目标环境)的构建定义。
Dev和Feature分支可以共享单个构建定义。Master和Hotfix分支可以共享单个构建定义,因为它们都发布到暂存/生产环境。Release 分支将需要单独的构建定义并发布到 QA/测试环境。这使您可以对每个发布通道的参数和配置进行细粒度控制。从Dev分支构建应用程序的调试版本,例如在主要版本 3,同时从Master主要版本 2 的分支构建发布版本。
每个构建定义都将有一个步骤将其工件/包发布到 Octopus Deploy,并指定工件所属的通道。
在 Octopus Deploy 中,定义渠道以反映发布渠道,也反映您的分支模型。
Develop, Test,Release是我的标准转到频道
每个通道都可以实施不同的生命周期,以限制通道可以部署到的环境以及应用程序在整个 ALM 周期中的进展情况。
我知道这不是一个完整的答案。但这是一个好的开始,我希望可以帮助您将问题提炼为更具体的技术细节。
因此,回答我自己的问题(抱歉),我最终采取的方法是简化我的分支并像这样配置 TeamCity/Octopus...
分支策略
我已经从
--dev
- 主要的
- 发布
----发布1
----发布2
到
- 掌握
- 发布
----发布1
----发布2
Master 是大多数开发人员工作的地方,当我们准备好发布时,我们有一个截止点并将 master 合并到新的发布分支中。
部署发布分支进行测试,并且测试中的任何修复都在发布分支上进行。
测试完成后,我们从该分支部署到实时/生产。
这意味着我们测试的二进制文件与我们部署到实时/生产的二进制文件完全相同。
团队城
在 TeamCity 中,每次签入时都会自动构建 master。然后包裹被推送到八达通。在这种情况下,章鱼充当存储库。TeamCity 还在 Octopus 上创建版本。所以应该是签入->构建->创建发布->部署。
为此,我有一个 VCS 根目录并有一个名为 Build-Master 的构建配置。这使用结帐规则来确保我只使用主分支。我使用 Ocotpus 打包来构建包,然后使用 TeamCity 中的 OctopusDeploy 运行程序自动创建版本并部署到开发服务器。
发布方式不同。我想手动部署到测试服务器,而不是每次签入时部署。当高兴时将其推广到实时生产服务器。
测试中的任何修复都将针对发布分支进行并部署到测试。
测试完成后,我们将升级上线,并在发布分支上进行任何修补程序。显然,所有修复/修补程序都已合并到主版本中。
因此,在 TeamCity 中为了实现此目的,我有一个名为 Build-Release 的构建配置。再次,我使用签出规则来确保我正在处理正确的发布分支。
构建使用 OctoPack 创建一个包,但是这次它没有推送到 Octopus。
章鱼
Octopus有一个专门用于将master部署到我们的开发服务器的项目,例如projectnamehere-dev。
在 Octopus 中,我有一个单独的测试/生产项目。我已经设置了一个指向 TeamCity 的外部源,这样我就可以获取在 TeamCity 中创建的包。这是在“库”->“外部源”中设置的。
所以,要部署来测试。我在 TFS 中创建发布分支,并为其指定版本号 1、2、3 等。然后,我更改 Build-Release 构建配置以指向这个新分支。更改版本号。
然后在 Octopus 中,我创建一个版本,选择此包并部署以进行测试。测试中的任何修复都是在此版本分支上进行的。我只是再次构建该包并创建一个新版本并选择新包。
测试完成后,在 Octopus 中,我只是将最后一个版本升级到实时生产服务器。
这两个项目都使用了 Octopus 中的通道,因为它们具有不同的生命周期。我还创建了两个新的生命周期,默认是dev/test/prod。我只创建了一个开发人员,然后进行测试/生产。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
5248 次 |
| 最近记录: |