为TeamCity创建回滚构建

时间:2013-01-28 20:59:06

标签: tfs teamcity

我们有一个每晚TeamCity构建版本,它将最新代码发布到我们的测试网站,恢复数据库以匹配生产,然后应用我们在TFS中的任何模式和数据更改。 如果每晚构建失败,网站将关闭,直到我们手动修复代码和/或数据库脚本并重新启动构建。

我想要的是自动回滚到上一次成功构建,以便尽管有任何构建中断,网站仍然可用。

在花了一些时间调查后,这是我提出的解决方案:

  1. 每晚构建运行,在TFS中创建一个新标签(类似于Nightly-build- {build number})
  2. 创建一个新的TeamCity构建,在每晚构建运行后触发
  3. 查找最后一次成功的夜间编号
  4. 在TFS中获取与该内部版本号标签相关的版本
  5. 回滚构建(如果每晚构建成功完成并不重要)
  6. 我不知道的是如何让回滚版本获得基于标签的版本。

    对此或其他解决方案的任何帮助都将不胜感激。

    干杯。

1 个答案:

答案 0 :(得分:5)

明智地使用TeamCity REST API可能会在这里工作。我从this question中榨取了一些东西,它覆盖了同一领域的某些领域。你可能会做这样的事情(我只是在这里吐痰):

  1. 根据您的步骤2创建VerifyBuild配置。
  2. 创建可以从给定标签部署的RollbackBuild配置,其内部版本号参数化为%rollback.buildnumber%
  3. VerifyBuild

    1. 使用Rest API来list最新的夜间制作部署
    2. 如果最近的部署是成功的,那么你就完成了。
    3. 如果最近的部署是FAILURE,那么获取上次成功构建的内部版本号。
    4. 使用Rest API将%rollback.buildnumber%的{​​{1}} RollbackBuild用于上一个成功的内部版本号。
    5. 将Rest API用于setRollbackBuild
    6. 我建议使用此方法,因为我不知道如何在结帐前动态获取RollbackBuild的正确标签,因此我使用VerifyBuild预先填充它。