0

私たちのプロジェクトの 1 つで、チェックイン時に単純な CI ビルドを作成し、CI ビルドが正常に完了したときに「Finish Build」トリガーを使用してセットアップ キットの作成をテストする別のビルドを作成しました。

複数の開発者が同時にチェックインすると、1. 2 つの連続する CI ビルド、2.両方のチェックインを含む 1 つのセットアップ キット ビルド、3. 変更をまったく含まない別のセットアップ キット ビルドを取得できます。以前のセットアップ キット ビルド。したがって、このビルドは必要ありません。

明らかに、これは 2 番目に成功した CI ビルドによって開始されましたが、変更が含まれていない場合に終了ビルド トリガーが発生しないようにする方法はありますか?

2 つを 1 つのビルドに結合することもできますが、その場合、CI ビルドにかかる時間が長くなり (現在は 2 分)、単純な CI ビルドが壊れていることを知るのにかかる時間が (11 分) 長くなります。

4

1 に答える 1

1

セットアップ キットのビルドには次の構成があると想定しています。

  • CI ビルドに設定された「Finish Build Trigger」。CI ビルドが正常に完了するたびに、セットアップ キット ビルドが実行されます。
  • セットアップ キットが実行されるたびに、VCS から独自のソースを取得するための VCS ルート。

問題は、CI ビルドに 2 分かかり、そのビルド中にさらに CI の変更がある場合、セットアップ キット ビルドは、トリガーする CI ビルドのソースではなく、開始時のソースを使用することです。ビルドをトリガーするのは VCS の変更ではなく、CI プロジェクトであるため、VCS の変更の有無とは関係ありません。

スナップショットの依存関係
欠けているのはスナップショットの依存関係です。これは、「依存関係」の構成手順 (#6) で利用できます。これでもプロジェクト トリガーは実行されますが、CI ビルドとセットアップ キット ビルドが同じタイムスタンプのまったく同じソース コードを使用するようになります。引き続き 2 つのセットアップ キット ビルドを取得しますが、それぞれが CI ビルドに直接関連付けられます。

休止期間
CI ビルドが成功するたびにセットアップ キット ビルドがトリガーされるため、CI ビルドの数を減らすという別のオプションがあります。CI ビルドで休止期間を有効にすることで、CI は変更があり、X 時間内に新しいコミットがない場合にのみ開始されます。「何かが変わった。30 秒待って、さらに変更があるかどうかを確認しましょう。新しいものがない場合は、ビルドをトリガーします。」これにより、2 つのコミットが 1 つの CI ビルドに配置され、結果として 1 つのセットアップ キット ビルドが作成されます。

同様に、セットアップ キットの Finish Build トリガーを削除して、休止期間のある VCS トリガーに変更できます。静止期間を CI プロジェクトの実行にかかる時間よりも少し長く設定します。これにより、コミットごとに CI ビルドを作成できますが、クイック コミットが多数ある場合はセットアップ キット ビルドがグループ化されます。欠点は、成功した CI ビルドと関連付けられなくなることです。そのため、CI ビルドが失敗した状態であっても、2 分間 (休止期間に関係なく) 新しい変更がない場合は、セットアップ キットが起動します。

于 2013-09-05T14:54:47.373 に答える