2014-03-07 41 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次:)