我正在使用TeamCity用于持续集成和 Octopus Deploy用于持续部署。
在 TeamCity 中,我有一个项目,我使用 Octopus Deploy 的 OctoPack 构建然后打包该项目。 。目前定义了三种构建配置:
- 构建、测试、打包
- 部署到 CI
- 部署到质量检查
对于第一个配置中的OctoPack配置,包版本是通过内部版本号生成的:
OctoPack package version: 1.0.0.%build.number%
如果构建、测试、打包
成功构建,则部署到 CI 会启动 Octopus Deploy 版本。创建发行版时,Octopus Deploy 使用 NuGet 版本号作为发行版本号。因此,对于构建 #400,我有一个 My.Project.1.0.0.400.nupkg
NuGet 包,它作为版本 1.0.0.400
发布。
在部署到 QA
步骤中,我需要能够从我的 CI
提升与特定部署到 CI
版本相关的版本> 环境到我的 QA
环境。
本质上,我希望能够拥有这种依赖树:
Build, Test, Package
|-- #401 SUCCESS
|-- #400 FAILURE
|-- #399 FAILURE
|-- #398 SUCCESS
/ #391-397 FAILURE
|-- #390 SUCCESS
Deploy to CI
|-- #100 SUCCESS (Depends Build, Test, Package #401)
|-- #99 SUCCESS (Depends Build, Test, Package #398)
|-- #98 SUCCESS (Depends Build, Test, Package #390)
Deploy to QA
|-- #10 SUCCESS (Depends Deploy to CI #100)
|-- #9 SUCCESS (Depends Deploy to CI #98)
在 Octopus 中我会看到以下内容:
Release
|-- 1.0.0.100 CI, QA
|-- 1.0.0.99 CI
|-- 1.0.0.98 CI, QA
如何传递特定版本号以升级到 TeamCity 中的给定环境?
最佳答案
当我进入各种构建配置的构建步骤时,我意识到我可以引用依赖构建配置的属性。
对于上面的示例,我有以下配置和 ID:
Build, Test, Package - btp1
Deploy to CI - dtc1
Deploy to QA - dtq1
在我的 Build, Test Package
构建配置中,我将 OctoPack
版本号配置为:
%MajorVersion%.%MinorVersion%.%build.vcs.number%.%build.number%
然后在部署配置中,我将版本号更改为:
Deploy to CI - %MajorVersion%.%MinorVersion%.%dep.btp1.build.vcs.number%.%dep.btp1.build.number%
Deploy to QA - %MajorVersion%.%MinorVersion%.%dep.btp1.build.vcs.number%.%dep.btp1.build.number%
通过这样做,我能够引用先前版本的版本号,以将正确的版本从一个环境提升到另一个环境。
关于continuous-integration - 在 TeamCity 中推广特定的 OctopusDeploy 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19597325/