为TeamCity创建回滚构建

5
我们有一个每晚运行的TeamCity构建,它将最新的代码发布到我们的测试网站上,还会将数据库还原以匹配生产环境,然后应用我们在TFS中拥有的任何模式和数据更改。如果这个每晚的构建失败了,网站就会宕机,直到我们手动修复代码和/或数据库脚本并重新启动构建。
我希望能自动回滚到上一个成功的构建,这样即使出现构建断裂也可以保证网站可用。
经过一番调查研究,这是我的解决方案:
  1. 每晚进行构建,并在TFS中创建一个新标签(类似于夜间构建-{构建编号})
  2. 创建一个新的TeamCity构建,在每晚构建运行之后触发
  3. 找到上一个成功的夜间构建编号
  4. 获取与该构建编号相关联的TFS标签版本
  5. 回滚构建(如果每晚构建刚刚成功完成,则无所谓)
我不知道如何让回滚构建根据标签获取版本。
对于此问题或其他解决方案的任何帮助都将不胜感激。
谢谢。
1个回答

5
一种明智的方法是使用TeamCity REST API。我从this question中借鉴了一些内容,它涵盖了一些相同的领域。你可以尝试这样做(我只是随便说说):
  1. 按照步骤2创建你的VerifyBuild配置。
  2. 创建一个RollbackBuild配置,可以从给定的标签部署,其构建编号参数化为%rollback.buildnumber%
VerifyBuild中:
  1. 使用Rest API列出最近的夜间生产部署list
  2. 如果最新的部署是成功的,则完成。
  3. 如果最新的部署失败了,则获取上一个成功构建的版本号。
  4. 使用Rest API将%rollback.buildnumber%设置为上一个成功构建的版本号,setRollbackBuild中。
  5. 使用Rest API queue一个RollbackBuild

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接