到目前为止,我仅使用TeamCity作为连续构建服务器。没有真正的整合。现在,我需要将输出从一个共享项目复制到其他两个从属项目,并依次启动它们的自动化构建。也就是说,ProjectA和ProjectB都依赖于ProjectC。当它们各自的存储库中发生任何提交时,TC目前正在构建这三个数据库。我们希望将ProjectC的输出复制并提交给ProjectA和ProjectB。这样的提交又将启动两个相关项目的构建过程。在谈论持续集成时,这似乎是一种常见的情况。不是吗
为了明确起见,我们使用TeamCity v.4.5.5(内部版本9103),SVN和nAnt作为我们的构建运行器。
编辑:当我说有关提交到另一个存储库的事情时,我误会了。它们实际上实际上全部三个都位于同一物理存储库中,只是位于层次结构的不同级别上。
最佳答案
我不知道TeamCity是否支持此功能,但是您自己应该很容易编写脚本-作为在ProjectC中构建的最后一步,添加一个脚本,该脚本将检出ProjectC目录(不是整个存储库,只是一个用于保存ProjectC二进制文件的目录) )从ProjectA和ProjectB复制所有必需的文件并提交一些自动生成的消息-看起来非常简单。
但是-这很危险。 ProjectA和ProjectB的构建可能会中断,因为ProjectC的API发生了更改,或者某些未经测试的代码已损坏。这可能会扰乱A和B团队的工作。我将寻求解决方案,其中每天,每周或在任何其他时间段提交一次新版本的库。
同样,创建一个自动变更日志可能是一个好主意-例如,如果您信任svn日志消息的质量,则可以从已提交的发行版中包含的所有“新”提交中创建变更日志(或附加当前日志消息,如果您决定在每次提交后选择推送新库)。这样,负责ProjectA和ProjectB的团队将能够在新库中断的情况下轻松修复其构建-他们将确切知道已更改的内容,而无需手动/询问团队C。