2015-10-20 100 views
1

我們使用私有GitHub組織作爲版本控制。將任務分配給開發人員時,他們分叉主要存儲庫,更改其代碼,並提交拉取請求以將更改合併到主要存儲庫的主分支中。TeamCity多個VCS根目錄

我們也在使用TeamCity for CI。它目前被配置爲啓動VCS提交的構建,該構建在內部構建,測試和部署工件到工件存儲庫。爲了實現這一點,Team City構建配置安裝了多個VCS根目錄;一個用於小學,另一個用於每個開發者的分支。

問題在於,在提交進行時假設它們都是構建所需的,而不是隻允許您從觸發構建的單個存儲庫中提取,Team City會從其中提取所有這些提交。關於如何在不需要在Team City中爲每個項目創建n個構建配置(其中n ==正在開發項目的開發人員)的情況下如何完成此任務?

回答

0

在JetBrains論壇發帖之後,我被指向blog that answers my question

TL; DR:我的使用功能分支的方法不適用於GitHub的工作流程。相反,應該使用Forks和Pull Requests。引用的博客顯示瞭如何使用團隊城市來觸發合併請求。只需將+:refs/pull/*/head添加到您的VCS根目錄中的「分支規範」,並將所有對源存儲庫的請求拉出就會觸發您的構建配置。

2

我看到的方式與保持當前工作流來做到這一點是關閉自動結帳(VCS Checkout Mode),並且在附加的命令行生成步驟中手動檢查出代碼,具有參數%teamcity.build.branch%(logical branch name) 。 即:

是否有開發商的VCS根變化
git clone ... 
git checkout %teamcity.build.branch% 

觸發器會剛開始工作,履行分公司環境變量;沒有自動結賬會發生,然後構建步驟將僅檢出所需的分支。只適用於一個git網址。

+0

感謝您的回覆......問題:如果我擁有多個團隊,團隊知道如何克隆哪個VCS根目錄?是否有一個變量捕獲觸發構建的根?換句話說,上面的'git clone ...'需要知道克隆的回購...對不對? – lamarvannoy

+0

似乎觸發器構建的根的URL變量是%vcsroot.url%,您可以看到它是否存在於TC中,在命令行作業設置中鍵入它。讓我知道它是否會起作用,所以我會編輯答案。 – m1848

+0

如果您定義單個根,則其通用形式的%vcsroot.url%只會顯示出來。否則,它顯示爲%vcsroot。{vcsroot-name} .url%併爲每個vcs根目錄定義一個,因此無法知道哪一個實際觸發了構建。 – lamarvannoy