6

vNext システムがそれらをサポートしていないため、TFS 2015 でゲート チェックイン用の XAML ビルド定義を引き続き使用すると仮定すると、複数のゲート チェックインを並行して実行することは可能ですか?

ビルド セットアップ UI に Parallel オプションがあることは知っていますが、それを XAML ビルド定義にも適用できるかどうか、および他にどのような制約があるかはわかりません。

複数のエージェントをサポートしている限り、同じボックスで並行してビルドできますか?

4

2 に答える 2

9

同じ定義の XAML ベースのゲート ビルドは、並行して実行できません。これは意図的な制限だと思います。ゲート ビルドの目的は、「壊れた」コードがリポジトリにコミットされるのを防ぐことです。

ゲート ビルドをキューに入れると、リポジトリ内のコードの最新バージョンと、コミットしたばかりの変更を含むシェルブセットが使用されます。ビルドが成功すると、シェルブセットがコミットされ、コードの最新バージョンになります。ビルドが失敗した場合、シェルブセットはリポジトリにコミットされません。

2 番目のゲート ビルドがキューに入れられ、同時に実行された場合、最初のビルドが成功するか失敗するかがわからないため、ビルドするバージョン (最新バージョンまたは現在検証中のシェルブセットを使用する必要があります) を判断できません。最初のビルドが失敗した場合、2 番目のビルドは問題ありません。ただし、最初のビルドが成功した場合、2 番目のビルドは正しいバージョンのコードに対してコンパイルされていません。さらに悪いことに、2 番目のシェルブセットには最初のシェルブセットと互換性のない変更が含まれている可能性があり、2 番目のビルドが成功すると、マージの競合やコードの破損が発生する可能性があります。これはゲート ビルドの目的に反します。

ゲーテッド チェックインはまもなく vNext を構築する予定ですが、同じ制限があると予想されます。

ゲート ビルドと「CI」ビルド。

Gated : 説明したように、gated ビルドは並行して実行できません。速度よりも正確性が重要な場合に使用する必要があります。

CI : TFS の CI ビルドは、より伝統的なトリガー ビルドです。開発者が変更をチェックインすると、これがリポジトリにコミットされ、ビルドがトリガーされます。この時点で、コードが壊れている可能性があります (コンパイルに失敗する、単体テストが失敗するなど) CI ビルドは並行して実行できますが、壊れたコードがリポジトリに入るリスクが高くなり、開発者の 1 つのミスがプロジェクトに影響を与える可能性があります。チームの残りの部分。

考え: 分岐戦略によっては、ビルド タイプを組み合わせて使用​​できます。たとえば、CI は変更の回転率が高い開発ブランチ上に構築されますが、ビルドが 1 日に数分間壊れたとしても、それは世界の終わりではありません。開発チームのみが影響を受け、問題を迅速に修正できます。回転率の低いブランチには、ゲーテッド ビルドを使用します。たとえば、スプリントの最後にのみ更新されるメインまたはリリース ブランチなどです。

意見: ゲート ビルドは原則として良いアイデアのように思えます。壊れたコードがソース管理リポジトリを汚染するのを防ぎます。これは良いことです。しかし、私にとっては迅速なフィードバックがより重要です。IMHO Gated ビルドは、コミット前にコードのコンパイルやテストのパスをチェックしない「思いやりのない」開発者を防ぐための shim です。もちろん、誰もが間違いを犯す可能性がありますが、両方の種類のビルドが存在して、それを伝え、エラーを修正する機会を与えてくれます。

本質的に、私はこれを言っていると思います。

CI : コードを信頼できますか?

Gated : 開発者を信頼できますか?

「壊れたコードは絶対にない」というポリシーがある場合は、ゲート ビルドの制限を受け入れる必要があります。もう少し柔軟性があり、チームの他のメンバーが愚かなことや思いやりのないことをしないと信頼できる場合は、CI ビルドを使用して並列ビルドの利点を得ることができます。

更新: 2020 年 9 月 vNext を作成し、Azure DevOps Pipelines と呼ばれるようになりました。ゲート チェックインは、XAML ベースのビルドと同じように機能し、並行して実行することはできません。これは TFVC ユーザー向けです。Git ユーザーは、ブランチ ポリシー (プル リクエスト) でビルド検証を使用することにより、同様の機能を使用できます。

于 2016-01-14T12:32:57.673 に答える
0

1 台のマシンに必要な数のビルド エージェントを配置できます。ビルド エージェントは並行して動作します。これは両方のビルド システムに当てはまります。

于 2016-01-14T02:21:47.087 に答える