假设我在TeamCity中有两个“项目”,它们是两个网站,每个网站都使用不在网站的svn路径内的共享库。这是svn结构,使其更清晰:
网站A:svn:// root / web / websitea(使用共享库a)
网站B:svn:// root / web / websiteb(使用共享库b)
共享库A:svn:// root / shared / liba
共享库B:svn:// root / shared / libb
我如何为网站a设置团队城市项目?现在我指向svn:// root,但即使网站b或共享库b被更改,也会触发构建,这是不正确的。我真正需要的是只有在svn:// root / web / websitea或svn:// root / shared / liba中发生更改时触发构建的方法。
我尝试在同一个项目中设置两个vcs根,指向上面的两个svn路径,但是似乎没有办法为每个vcs root设置工作目录。出于这个原因,它最终只是将两个svn路径的内容直接复制到我的构建目录的根目录中,而不是将它们放在适当的位置(C:\ Build \ Web \ WebsiteA& C:\ Build \ Shared \力霸)。
答案 0 :(得分:13)
TeamCity的结帐规则功能可以支持您所描述的设置。我的团队使用它来做类似于你想要做的事情。
首先,设置一个SVN Root。这个根的URL将是这样的:
svn://root/
然后设置以下结帐规则。
对于项目A:
+:web/websitea=>/web/websitea
+:shared/liba=>/shared/liba
对于项目B:
+:web/websiteb=>/web/websiteb
+:shared/libb=>/shared/libb
关于结帐规则的TeamCity文档并不完全清楚这一点,但只有您所包含的特定路径才会用于触发构建。这应该满足你只需要更改网站和liba触发其构建的需要(和B相同)。
答案 1 :(得分:6)
除了Eric提到的内容之外,如果您需要检出整个源根,但只触发基于特定路径的构建,则可以在Build Triggering部分中编辑VCS Trigger规则,使其具有以下内容: / p>
+:web/websitea
+:share/liba