這已經引起了我的Havok相當長一段時間爲好。
對於初學者來說,這個功能有一個uservoice請求。您可以添加您的投票並在此處輸入以使Microsoft允許此功能:https://visualstudio.uservoice.com/forums/330519-team-services/suggestions/14131002-allow-variables-in-repository-variables-and-trigg
其次,我們制定了一種解決方法,使我們獲得了大部分途徑。這並不完美,但如果您對這些缺點感到滿意或可以解決缺陷,它可能對您有用。
首先關閉構建的「標籤源」選項,然後將「服務器路徑」字段映射到基礎構建。您需要將自定義變量添加到構建定義中,以告知構建實例要從哪個TFS位置提取。例如,我們從項目基地項目,然後多個分支,所以我們的源構造這樣
$\Team Project\Project1
$\Team Project\Project1Branch1
$\Team Project\Project1Branch2
$\Team Project\Project1Branch3
,我們創建了一個名爲「分支」,我們可以設置爲「Branch1的」變量「,店2 「等等。
當我們要構建基礎項目時,我們在啓動構建時將Branch變量留空。對於分支構建,我們將其設置爲我們想要構建的分支的名稱。
然後我們構建步驟是這樣的
- 重映射工作區文件夾到分公司夾
- 獲取文件對指定的分支 - 我們必須 後手動執行此重新映射我們的工作區
- 編譯來源指定分支
- 從指定分支發佈構建工件
- 手動標記指定分支的代碼
重映射任務運行
tf workfold "$/Team Project/Project1$(Branch)" "$(build.sourcesDirectory)\$(Build.DefinitionName)$(Branch)"
手動獲取任務運行以下命令
get /recursive /noprompt "$/Team Project/Project1$(Branch)"
構建使用科變量指向解決方案文件的正確位置的命令對於指定分支
$(build.sourcesDirectory)\$(Build.DefinitionName)$(Branch)\SolutionFile.sln
The Publ ISH神器任務使用科變量同時在內容領域和內容的路徑字段 例
**\$(Build.DefinitionName)$(Branch)\bin
標籤代碼任務使用下面的命令
tf label "$(build.buildNumber)" "$/Team Project/Project1$(Branch)" /recursive
這種設置的缺點是,你請勿將關聯的更改和工作項目捕獲到您的子分公司,因爲「服務器路徑」字段始終設置爲主要位置。這可能不是一個問題,如果您在啓動一個旨在生產的構建之前總是從您的分支合併到您的主要位置。你可以做些什麼來彌補這一點,這取決於你的用例。
隨着一些調整,你可以使用相同的格式來指定完整路徑,如果你需要的話。
你在函數上是正確的,但是聲明路徑不應該從構建變爲構建是錯誤的。在開發過程中有多個環境是很常見的,理想情況下建立這些環境的過程應該是相同的。通過手動輸入這些單獨的子樹/分支,這成爲了失敗的一個點,同時也使得構建環境變得更加複雜,重複的條目完全相同。這無異於將重複數據輸入到數據庫中,以便處理客戶地址等問題,這是一個嚴重的設計缺陷。 – user2197169