2012-12-07 33 views

回答

14

您可以通過控制結帳目錄位置來完成此操作。

首先,您需要將您的checkout目錄定義爲兩個構建都可以識別的內容。在您的構建配置中,瀏覽到版本控制設置 - >簽出設置。將結帳目錄設置更改爲Custom Path。然後系統會提示您提供要檢出源的目錄。這可以在任何你想要的地方**,只要TeamCity有寫權限。

接下來,你需要修改結帳規則(也版本控制設置)對每一個項目,使得它們相對於檢出目錄的根文件夾目標。您可以通過將規則設置爲+:%some.repo.path%=>/%some.sub.folder%來完成此操作。你可以規定你想要的任何子文件夾。我們只需將所有內容簽出到結帳目錄根目錄(=>/)。

如果這兩個項目都引用相同的檢出目錄,然後設置這個組合應該給你,你要尋找的控制和靈活性。

**對於我們的檢出目錄,我們使用參數值%teamcity.agent.work.dir%\%system.teamcity.projectName%\%branch%。前兩個參數是TeamCity系統參數,最後一個是我們定義的。在我們的系統上,這解決了G:\ BuildAgent \ work \ $ PROJECT \ $ BRANCH,它保持了一切的整潔和可預測性。

1

似乎VCS設置(VCS根和結算規則集)是這些生成配置的不同,這就是爲什麼TeamCity的使用不同的結算目錄的原因。在這種情況下,我不建議強制服務器使用相同的目錄。

說你有兩個配置A和B,並且在配置的TeamCity構建它們在同一個目錄中,但A和B具有不同的VCS設置。那麼在結賬時應該做什麼?

例如,當構建完成的代理,並建立B上的同一代理開始,TeamCity的則要乾淨的檢出目錄下的所有來源,並再次獲取它們。構建B在構建A之後啓動時會發生同樣的情況。因此,這些乾淨的結算會導致緩慢下降。

通過自動生成的結帳目錄,服務器可以優化簽出性能以及代理上的磁盤使用情況。使用自定義結帳目錄的做法不是最佳的,並且不可擴展。如果可能的話避免它。

參見: http://confluence.jetbrains.com/display/TCD8/Build+Checkout+Directory http://confluence.jetbrains.com/display/TCD8/Clean+Checkout