対応するフォルダに2つのソリューションがあります。
SolutionA\SolutionsA.sln
SolutionB\SolutionB.sln
各ソリューションには、ゲートチェックインビルドが構成されています。つまり、2つのビルド定義GatedSolutionAとGatedSolutionBです。
現在、両方のフォルダーの変更を一緒にチェックインすると、TFSは、変更セットに対して実行するビルド(GatedSolutionA、GatedSolutionBでドロップダウン)を選択するためのダイアログボックスを表示します。私のチェンジセットには、ソリューションBに重大な変更があり、ソリューションAに重大でない変更があります。つまり、Build GatedSolutionBは失敗しますが、GatedSolutionAは合格します。
チェンジセットに対してビルドするためにGatedSolutionAを選択すると、TFSがそれをチェックインします。これにより、ソリューションBが壊れた状態のままになり、ソリューションBのゲートチェックインの目的が無効になります。
ビルド定義のトリガーをCIに変更すると、TFSは両方のビルドをキューに入れます。
私が探しているのは同じ動作です。つまり、すべてのゲートビルドがキューに入れられ、そのうちの1つが失敗した場合、チェンジセットは拒否されます。
注:両方のソリューションに対して単一のビルド定義を作成したくありません。また、2つの別々のチェンジセットを作成することでこの問題の発生を回避できることはわかっていますが、これは通常、開発者が作業中以外のソリューションのためにチェックインされているファイルがあることに気付いていない場合に発生します。
2019年の更新
TFSとAzureDevOpsがGITとプルリクエストの使用を開始したため(マスターブランチで)ブランチポリシーを使用して、パスの変更など、複数のビルドチェックを追加SolutionA\*
できます。BuildAは、キューに入れてチェックするように構成できます。同様に、パスSolutionB\*
、BuildBはキューに入れてチェックするように構成できます。その結果、両方のパスに変更があるコミットの場合、チェックのために両方のビルドがキューに入れられます。GITを使用するのを待つ価値はありました。
注:ドキュメントはパスフィルターを表示するように更新されておらず、ここhttps://github.com/MicrosoftDocs/vsts-docs/issues/3235でgithubに欠陥が発生しています。そのため、フィルターはAzureDevOpsおよびServerで使用できます。