2014-03-07 19 views
1

我希望TeamCity为SVN存储库中的一个项目构建过程,将它的DLL复制到存储库中另一个项目的“lib”子目录中,然后提交。在TeamCity构建过程中将DLL提交到SVN

的项目,其lib目录应该使用VCS结算规则“映射”在TeamCity的检出目录的子目录中进行更新,:

+:proj1/trunk =>/
+:proj2/trunk => /Downstream/proj2 

已经使用的MSBuild上.sln文件建立proj1,我我能使用命令行生成步骤复制proj1二进制文件,我需要到proj2子文件夹:

robocopy bin\Debug Downstream\proj2\lib file1.dll file2.dll file3.dll 

我的问题是,下游/ proj2不是一个SVN工作拷贝,所以我不能运行SVN从它提交。

如何从TeamCity执行SVN提交 - 从哪里提交工作副本?我应该从VCS签出规则中删除proj2,并在复制和提交之前在我的命令行步骤中检查它吗?

TeamCity的工作目录已被删除.svn似乎很奇怪。

+1

另一种方法是制作一个包含Proj1库的NuGet包并将其存储在TeamCity的NuGet服务器中。然后你可以使用NuGet管理Proj2中的这些依赖关系。 – mattyB

+0

这是一个很好的建议,我很喜欢使用NuGet,但团队架构师热衷于存储库,以便每个项目点在每次分支时都包含正确的库。 – Chris

回答

2

答案是将SVN客户端安装到我的代理上,并将构建配置的VCS Checkout模式更改为“在代理上自动(如果VCS根支持)”。如果在“自动在服务器上”完成检出,则只复制一个导出(没有.svn目录)。

在我的构建代理的工作目录中给定一个工作副本,然后我可以执行非交互式命令行检查。

一个问题:因为我正在提交一个正在被同一个构建配置签出的存储库中的项目,所以我不得不编辑我的触发器规则,以便不会自动启动构建配置,如果提交是由进行自动提交的非交互式用户。幸运的是,我意识到,它只是循环了3次:)