5

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

我想要的是自动回滚到最后一次成功的构建,以便网站在任何构建中断的情况下都可用。

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

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

我不知道如何让回滚构建基于标签获取版本。

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

干杯。

4

1 回答 1

5

明智地使用 TeamCity REST API 可能在这里奏效。我从这个问题中抄袭了一点,它涵盖了一些相同的领域。你可能可以做这样的事情(我只是在这里吐口水):

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

VerifyBuild

  1. 使用 Rest API列出最近的每晚生产部署
  2. 如果最近的部署是成功的,那么你就完成了。
  3. 如果最近的部署失败,则获取最后一次成功构建的内部版本号。
  4. 使用 Rest API 将的设置为最后成功的内部版本号。%rollback.buildnumber%RollbackBuild
  5. 使用 Rest APIRollbackBuild.

我提出这种方法是因为我不知道您将如何RollbackBuild在结帐之前动态获取正确的标签,所以我使用VerifyBuild它来预填充它。

于 2013-01-28T22:12:47.857 回答