[英]TFS 2008 Continuous integration MSBUILD on Branch fails on Label
我試圖在我的一個TFS項目的一個分支上使用CI。 僅當我嘗試使用分支時,MSBuild才會失敗。 我將相同的Build指向“ trunk”項目,它可以正常工作。
我從構建日志中收到的錯誤:
任務“標簽”
標簽TeamFoundationServerUrl =“ http:// TFSServer:8080 /” BuildUri =“ vstfs:/// Build / Build / 6763” Name =“ Test_SF_20090619.1” Scope =“ $ / MyProject” Recursive = True Comments =“ Label創建者團隊構建“ Version =” BuildServer3D143_66“ Child =” Replace“ Files =” $ /“ C:\\ Program Files \\ MSBuild \\ Microsoft \\ VisualStudio \\ TeamBuild \\ Microsoft.TeamFoundation.Build.targets(812,5,812,5):
錯誤:在工作空間的$ /中找不到匹配的項目。
完成執行任務“標簽”-失敗。
在項目“ TFSBuild.proj”中完成構建目標“ CoreLabel”的操作-失敗。
我認為此錯誤是由於缺少將源文件復制到Build服務器而引起的。
從構建日志中獲取任務摘錄:
任務“獲取”
獲取TeamFoundationServerUrl =“ http:// TFSServer:8080 /” BuildUri =“ vstfs:/// Build / Build / 6768” Force = True Overwrite = False PopulateOutput = False預覽= False遞歸= True Version =“ C204806” Workspace =“ BuildServer3D143_66“
完成執行任務“獲取”。
這是完整版本。 GET中應該列出大約一千個文件。
一般信息
完整構建參數
注意:我知道IncrementalBuild是多余的,但我只是想確定一下。
問題:
如果是用於CI,那么您很可能會進行增量獲取。 TFS只會費心地獲取它自上次獲取以來已更改的文件-例如,如果從服務器中刪除任何文件,它仍會認為您擁有這些文件,因此不會再次獲取它們。 在這種情況下,您需要在關閉增量屬性的情況下運行一次構建,以便強制完全獲取源代碼。 您可以通過以下方式覆蓋“隊列生成”對話框中MSBuild命令行框中的屬性:
/p:IncrementalGet=false;ForceGet=true
我想到的另一種可能性是,您的分支混淆了Label任務。 可能是您的工作區設置不正確,所以請檢查您是否映射了它需要的所有內容。
在這種情況下,我有兩個問題。
首先,分支機構安全性未授予構建服務帳戶權限。 我已將分支機構限制為我們團隊的技術主管和發布工程師。 構建服務帳戶也需要訪問權限。 同時尋找我在一個偶然的互聯網是什么放倒我是發帖人誰也犯同樣的錯誤。
第二個問題涉及更多。 在清理構建項目文件時,我刪除了以下部分。
<SolutionToBuild Include="$(BuildProjectFolderPath)/../../_stage/MyProject/MySolution.sln">
<Targets></Targets>
<Properties></Properties>
</SolutionToBuild>
在我至少已經構建過一次的項目上運行良好,但是如果這是一個新的構建,並且沒有將源文件復制到構建服務器,則將沒有文件,並且構建將失敗。
你們中的有些人可能會懷疑我的其他構建版本是否也在工作,畢竟他們沒有舊的構建文件。 是的,但是我確定了目標,該目標完成了我實際上關心的所有工作。 因此,SolutionToBuild有點誇張。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.