2016-07-12 57 views
1

我們在工作中使用VisualSVN作爲我們的源代碼庫。我無法控制它(開發人員),我需要圍繞他們目前正在使用它的自動化工作開展工作。TeamCity - SVN更新?

將每個應用程序分解爲不同的代碼分支,這些代碼分支對於Dev當前如何使用它來說,也充當其版本。因此,我正在從SVN中的每個應用程序的分支文件夾進行部署,而不是使用Trunk。

其中一些構建版本構建了許多正在開發的其他應用程序使用的通用文件,並充當這些構建的先決條件。由於一些repo的使用包含多個分支,其中一個分支由一個應用程序使用,另一個分支用於另一個應用程序,因此我不希望將TeamCity設置爲執行清理/檢出,然後必須重新構建所有這些分支。

爲了解決這個問題,我認爲只要在結帳設置中取消選中「清理」選項就可以糾正此問題。但是我注意到,只需取消選中乾淨選項不一定會轉換爲簡單的SVN更新,因爲它會手動執行更新。

例如:手動,如果我進入我的簽出目錄並刪除了一個代碼分支文件夾,然後我可以回去做一個右鍵單擊 - > SVN更新根文件夾,它會檢測到我是錯過了該分支並將其拉回。

但是,在TeamCity中,從結帳文件夾中刪除代碼分支文件夾,然後重新運行作業,它不會檢測到該分支丟失並重新檢查。當然構建失敗,就是這樣。這使我認爲,當一個新的分支到位時,它不會檢查出來嗎?

我是否缺少一些其他參數或明顯的選項讓TeamCity執行此更新?

+0

如何管理對其他分支中的公共文件的依賴關係?你使用SVN外部特徵嗎? 其次,你可以爲依賴設置自動nuget包裝嗎?他們仍然可以留在他們獨立的分支機構等,但需要他們的應用程序只會使用包而不是源代碼。 – gezzahead

+0

讓我先說我對這些工具非常陌生,並且隨時瞭解它們。我不熟悉SVN外部是什麼。對於依賴關係,我一直在構建項目中使用快照依賴項來構建構建鏈。我不熟悉nuget,所以我將不得不進行調查。 – h2ocool

回答

1

我認爲在TeamCity中使用構建鏈/快照依賴不是解決您的問題的正確方法 - 例如。 JetBrains website暗示,

指定構建鏈最常見的用例是在不同平臺上運行項目的相同測試套件。例如,在發佈版本之前,您需要確保測試在不同平臺和環境下正確運行。爲此,您可以指示TeamCity運行測試,然後首先進行集成構建,然後構建發佈版本。

相反,使用SVN Externals允許你籤你的代碼和所有的依賴關係(可以是其他地方SVN回購協議,例如),並參考依賴與相對路徑項目。缺點是每次都會建立所有的依賴關係。

或者,打包自己的NuGet軟件包(可以完成by TeamCity)意味着您的項目僅引用NuGet軟件包(特定版本),因此不需要構建依賴關係。您需要設置一個NuGet商店,但這可以像共享文件夾一樣簡單。

這些方法的優點是它們可以在本地以及在TeamCity中工作 - 也就是說,您需要手動構建每個依賴項。

+0

謝謝,這是非常有用的,我同意構建鏈並沒有真正實現我想要的。我將研究設置NuGet包裝,並閱讀SVN外部信息。感謝您的幫助。 – h2ocool