2

我使用TeamCity进行持续集成,使用Octopus Deploy进行持续部署。

在 TeamCity 中,我有一个项目,我使用 Octopus Deploy 的OctoPack构建然后打包。当前定义了三种构建配置:

  1. 构建、测试、打包
  2. 部署到 CI
  3. 部署到 QA

对于第一个配置中的 OctoPack 配置,包版本是通过内部版本号生成的:

OctoPack package version: 1.0.0.%build.number%

如果Build, Test, Package成功构建,则部署到 CI 会启动 Octopus Deploy 发布。Octopus Deploy 在创建发布时使用 NuGet 版本号作为发布版本号。因此,对于构建 #400,我有一个My.Project.1.0.0.400.nupkgNuGet 包,它作为 version 发布1.0.0.400

在这Deploy to QA一步中,我需要能够将与特定Deploy to 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 中的给定环境?

4

1 回答 1

3

当我进入各种构建配置的构建步骤时,我意识到我可以引用依赖构建配置的属性。

对于上面的示例,我有以下配置和 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%

通过这样做,我能够参考以前构建的内部版本号,以促进从一个环境到另一个环境的正确发布。

于 2013-10-25T20:31:07.227 回答