ナイトリービルドとは何か?スケジュールされた終業時のパイプライン
ナイトリービルドとは、通常は夜間に実行されるスケジュールされたパイプラインで、コミットごとの高速なパイプラインより重いまたは遅いチェックを実行します。
すべてのチェックがすべてのコミットに属するわけではありません。ある種のテストスイートは1時間かかり、ある種のintegration実行はフル環境を必要とします。ナイトリービルドはそうした遅いチェックに居場所を与えます。通常は誰も待っていない夜間にスケジュールされた実行で、コミットごとの高速なパイプラインよりも徹底的にコードベースを動かします。
なぜ夜間に実行するのか
コミットごとの高速なフィードバックは開発者のブロックを防ぎますが、素早いチェックしか許容できません。ナイトリービルドは残りを捕捉します。フルのintegrationスイート、長時間実行されるテスト、パフォーマンスのベンチマーク、そしてコミットごとでは遅すぎる広範な互換性matrixです。
ナイトリービルドがよく行うこと
- フルの遅いテストスイートを実行する。
- 多くのOSと依存関係のバージョンに対してテストする。
- release candidateやプレビューパッケージをビルドする。
- セキュリティと依存関係のスキャンを実行する。
簡単な例
cron: "0 2 * * *" のようなスケジュールされたトリガーは、毎日午前2時にパイプラインを実行します。ナイトリーのworkflowはCIと同じjobを再利用できますが、より大きなmatrixとより長いテスト選択を有効にします。
ナイトリー結果への対応
ナイトリービルドは誰かが読んで初めて役立ちます。失敗をチームが毎朝チェックするチャンネルへルーティングし、夜間に捕捉されたregressionが広がる前に修正されるようにしましょう。静かに赤いままのナイトリーは無駄になった計算です。
ナイトリービルドとコスト
夜間実行は大規模になりうるため、CI支出の実質的な割合を占めます。ピーク外に効率的なランナーで実行すると役立ちます。マネージドランナー(Latchkey)は使用量を計測するので、ナイトリーmatrixが正確にいくらかかるかを見て適正にサイジングできます。
重要なポイント
- ナイトリービルドは、スケジュールされた通常は夜間の重いチェックの実行です。
- コミットごとにはコストが高すぎる遅いスイートを収容します。
- ナイトリーの失敗を人々が読む場所へルーティングしないと、実行は無駄になります。