私はしばらくの間オープンソースプロジェクトを使用しており、オープンソースアプリケーションを開発しています。「ナイトリービルド」という言葉に出くわすことが多く、実際にそれが何を意味するのか常に知りたいと思っています。それは文字通り、プロジェクトが純粋にサイドプロジェクトとして行われ(通常は全員が1日の仕事を終えた後の夜)、真の貢献者/専用の開発チームがいないか、それよりも複雑ですか?
いいえ、それは毎晩、ソース管理にチェックインされたすべてが構築されることを意味します。そのビルドは「毎晩のビルド」です。
通常、これは 自動ビルド を意味します。これは、ほとんどの開発者にとって1日1回、通常は1日の終わりに行われます。複数のタイムゾーンの開発者がいるプロジェクトの場合、通常は妥協の時間です。 「今日」のコードをチェックインしようとするすべての人がそうしたという考えです。自動ビルドは、すべてがコンパイルされていることを確認し、うまくいけば、存在する単体テストやその他の自動テストなどを実行してから、最終的なインストーラーを作成します/実行可能など.
これは、開発の各日の終わりに実行されるビルドを意味します。継続的インテグレーションサーバーを使用する場合、通常はコードをビルドし、チェックインごとにユニットテストを実行するように構成されます。毎日の終わりに、より広範なテスト、回帰テスト、統合テストなどを実行することができます。各チェックインで実行するには時間がかかりすぎ、これらは毎晩のビルド後にトリガーされます。完全な継続的デリバリーパイプラインがある場合、ナイトリービルドを使用して、ビルドされたコードをユーザーテスト用の環境にデプロイすることもできます。
この用語は、完成した製品をソースから完全に再構築するのに時間がかかりすぎて、個々の開発者が通常の開発サイクルの一環としてこれを行うことができないような大規模なプロジェクトでよく使用されます。
代わりに、完全な再ビルドが夜間に自動的に行われるため、ビルドコンピューターは8〜10〜12時間でビルドを実行でき、翌朝の開発者の準備ができるので、個々の小さな作業を続行できます。新しいバージョンの。
最近では、プロジェクトにコードの正しい動作を保証する多くのテストが含まれているだけでなく、ソース(javadocなど)からドキュメントを生成して公開していることがよくあります。
ナイトリービルドは良いことです。ビルドが壊れた場合、開発者に即座にフィードバックを提供します。毎晩ビルドすることは、ソフトウェアが安定していて、新しいユーザーのためにビルドする可能性が高いことを意味します。定期的に構築されていないソフトウェアはリリースが難しい。