在TeamCity中升级特定的OctopusDeploy版本

时间:2013-10-25 18:46:55

标签: continuous-integration teamcity continuous-deployment octopus-deploy

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

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

  1. 构建,测试,打包
  2. 部署到CI
  3. 部署到QA
  4. 对于第一个配置中的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.nupkg NuGet包,它以版本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中的给定环境?

1 个答案:

答案 0 :(得分: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%

通过这样做,我能够引用先前构建的构建号,以促进从一个环境到另一个环境的正确释放。