2009-06-19 8 views
0

私のTFSプロジェクトのブランチでCIを使用しようとしています。 MSBuildは、分岐を使用しようとすると失敗します。私はそれがうまく動作する "トランク"プロジェクトで同じビルドを指しています。TFS 2008継続的インテグレーションブランチのMSBUILDがラベルで失敗する

私は、ビルドログからの受信エラー: BuildUri = "vstfs:///ビルド

ラベルTeamFoundationServerUrl = ":// TFSServer 8080/HTTP"

タスク "ラベル" を/ビルドのチームによって作成された/ 6763" 名= "Test_SF_20090619.1" 範囲= "$/MyProjectと" 再帰= Trueの コメント= "ラベルを構築する" バージョンは、= "BuildServer3D143_66" 子= "置き換え" ファイル= "$/"C:\ Program Files \ MSBuild \ Microsoft \ VisualStudio \ Tea mBuild \ Microsoft.TeamFoundation.Build.targets:

エラー:ワークスペースに$/ の一致する項目が見つかりませんでした。

タスク "ラベル"を実行しました - FAILED。

プロジェクトの完了対象 "CoreLabel" "TFSBuild.proj" - FAILED。

このエラーは、ソースファイルの不足が原因でビルドサーバーにコピーされていると考えられます。ビルドログから

のGetタスクの抜粋:

タスク

取得TeamFoundationServerUrl = "のhttp:// TFSServer:8080 /" "ゲット" BuildUri = "vstfsを:///のビルド/ビルド/ 6768" フォース= Trueの上書き= Falseの PopulateOutput = Falseのプレビュー= Falseの 再帰= Trueのバージョン= "C204806" ワークスペース= "BuildServer3D143_66 "ゲット" タスクの実行完了

"。

これは完全なビルドです。 GETには約1000件のファイルがリストされています。

一般情報

  • TFS 2008
  • のVisual Studio 2008の
  • 設立ビルドサーバー
  • プロジェクト分岐されている(されて ランニングは昨年のためのビルド)であるASP.NET web stie(2.0フレームワーク)。

フル構築のparams

  • /P:SkipClean = falseを
  • /P:SkipInitializeWorkspace = falseを
  • /P:ForceGet =真
  • /P:IncrementalBuild =偽
  • /p:IncrementalGet = false

注:私はIncrementalBuildが冗長であることを知っていますが、私は確信しています。

質問:

  • 枝を構築する上での制限はありますか?
  • MSBuildがブランチワークスペースからファイルをプルするのに失敗した理由は何ですか?

答えて

0

この場合、2つの問題がありました。

最初に、支店セキュリティはビルドサービスアカウントに対して権利を与えませんでした。私は、私たちのチームのTech Leads and Release Engineersにブランチを限定しました。ビルドサービスアカウントにもアクセスが必要でした。私を指摘したのは、インターネットを検索しているときに、私は同じ실수をした人がpostingを見つけたのでした。

2番目の問題はもう少し複雑でした。ビルドプロジェクトファイルをクリーンアップしている間、私は次のセクションを削除しました。

私はすでに少なくとも一度は作っていたプロジェクトにうまくいきましたが、これはビルドサーバーにソースファイルをコピーしていなかった新しいビルドであった場合、そこには、ファイルないだろうとビルドが失敗する
<SolutionToBuild Include="$(BuildProjectFolderPath)/../../_stage/MyProject/MySolution.sln"> 
     <Targets></Targets> 
     <Properties></Properties> 
</SolutionToBuild> 

私の他のビルドが動作していても、古いビルドファイルがないのではないかと疑問に思う人もいます。はい、私は実際に気にかけたすべての仕事をした目標を定義しました。だから、SolutionToBuildは少し狂っています。

1

CIの場合は、インクリメンタル・ゲットを行う可能性が最も高いです。 TFSは、最後に取得した後に変更されたと思われるファイルを取得するだけです。サーバーからファイルを削除しても、それらのファイルがあると考えられますので、再度ファイルを取得することはありません。この場合は、インクリメンタルプロパティをオフにしてビルドを一度実行する必要があります。これにより、ソースを完全に取得させることができます。あなたはとの対話を構築するキュー内のMSBuildのコマンドライン]ボックスでプロパティをオーバーライドすることによってこれを行うことができます。

/p:IncrementalGet=false;ForceGet=true 

を念頭にスプリング別の可能性は、ラベルのタスクは、あなたのブランチで混乱しているということです。ワークスペースが正しく設定されていない可能性がありますので、必要なものすべてにマッピングしていることを確認してください。

+0

ビルドパラメータは上記のとおりです。/pを追加した後:IncrementalGet = false、運はありません。それは非常によくマッピングかもしれません。もしそうなら、私は理由が不明です。そのTFSProjectに割り当てられているワークスペースは1つだけです。これはルート$/MyProjectにあります。トランクとブランチの両方がそのプロジェクトのサブフォルダです。私はブランチに特別にワークスペースマッピングを追加しようとしましたが、TFSはそれを重複マッピングとして削除します。 –

+0

私はそれが支店が設置されている方法について何かの疑いがありますが、私はMSBuildについて、私が恐れていることを示唆するような状況では十分に知りません。 –

+0

Cool。試してくれてありがとう。 –

関連する問題