2012-03-27 2 views
6

TFS 2010の連続自動ビルドを使用して、すべてのチェックイン時にキックオフされます。私は最近、プロセステンプレートを変更して、同じエージェント上でシーケンシャルにではなく、異なるビルドエージェントで並列にDebugとReleaseをビルドしました。異なるフレーバーを並列に構築すると、CreateLabelの失敗によりビルドの失敗が断続的に発生する

これ以降、次のエラーが原因でビルドの失敗が確認されています。それは受け入れられないほど頻繁に起こります(5番目〜10番目のビルドごとに)。

「TF203059は:ラベルはすでに存在している別のラベル名を指定してコマンドを再試行してください。」私はこれが起こることを原因となる特定のパターンを把握することができていない

。誰もこれを前にして来たのですか?ビルドプロセスでラベル作成アクティビティに変更を加える必要はありますか?

+0

これは、ビルドプロセステンプレートのカスタマイズ方法によって大きく異なります。これを設定した方法をもう少し詳しく説明できますか? – pantelif

+0

こんにちはpantelif、ありがとうございました。ここで共有しているビルドプロセステンプレートを例として使用しました:http://blogs.msdn.com/b/jimlamb/archive/2010/09/14/parallelized-builds-with-tfs2010.aspx – LiliaP

+0

さらに詳しい情報:私は追加しましたParallelForEachコントロールがビルドプロセスシーケンスに流れ込み、その内部にRunOnAgentブロック全体が配置されます。 CreateLabelアクティビティはRunOnAgentブロックの一部であったため、ビルドフレーバごとに実行されます。ラベルは$(Date:yyyy.MM.dd)$(Rev:.rr)という形式のビルド番号に設定されます。その結果、デバッグとリリースの両方で同じラベルが使用されます。これはほとんどの場合問題を引き起こすことはありませんが、断続的なビルドの失敗が発生します – LiliaP

答えて

1

並列化にはいくつか問題があります。ラベルは1つで、修正作業項目が2番目です。より多くのことがあるかもしれませんが、それは私が実行したものです。両方をシングルスレッド部分に移動すると、問題が解決するはずです。しかし、それはしばしばそれ自体の問題のホストで来る。 IIRCを使用すると、ラベルを付けるには作業領域をマップしてラベルを作成する必要があります。そのため、ファイルが多い場合は、並列処理のパフォーマンス上のメリットが軽減されます。作業項目では、別のブランチが読み取った後に1つのプロセスが作業項目を変更し、TFSが変更されたために更新できないように修正するため、問題が発生する可能性があります。

+0

Rob - あなたのご返信ありがとうございました!私は国外にいて、今すぐこのプロジェクトに戻っています。私たちのソリューションはそれほど大きくはないので、最新版を入手するのはそれほど長くはかかりません。 – LiliaP

+0

Rob - この問題に対するあなたの解決策に関する質問:どのようにして単一のスレッド部分にラベルを移動しましたか? Visual Studioビルドプロセスの編集UIでテンプレートを編集するか、カスタムソリューションを実装する必要がありましたか? – LiliaP

+0

これはしばらくしていますが、私はワークフローを編集することでシングルスレッド部分に戻したと思います –

0

コンフィギュレーション "Debug"と "Release"の並列ビルドの場合。同じラベルを2回挿入しようとすると、問題が発生する可能性があります。 特に、そのラベルは一度だけ提供する必要があります。 この場合、このような問題を避けるために、どちらの設定でもラベルを貼り付ける条件を設定し、2番目の設定にラベルを付けることはできません。

使用この状態の場合:

(設定=「リリース」) 場合、 (とcreateLabel)他 [あなたは私たちが "に対して一度そのラベルをすでに提供してきたように、デバッグのためにこの空白のままにする必要がありますリリース "条件

このようにして、重複したラベルの問題に関する私の問題を解決しました。

「TF203059:ラベルが既に存在する別のラベル名を指定してコマンドを再試行してください」

私はそれはまた、並列ビルドのためにあなたが完璧に罰金のために働くことを願っています。

関連する問題