ウィキペディアは、これらの用語のほとんどのかなり良い要約を提供します。ここに私の見解があります:
ビルド自動化とは、コンパイラーを手動で呼び出す代わりに、ソフトウェアのビルド方法を自動化することです。これは、MakeやAntなどのツールを介して実現されます。
展開の自動化とは、ビルドされたソフトウェアを取得し、テストシステムまたは運用システムに展開またはインストールすることです。
継続的インテグレーションとは、開発者がコードをチェックインするときに自動化プロセスでソフトウェアを継続的にビルドし、ユニットテストを実行してコードが引き続き機能することを確認することです。たとえば、15〜30分ごとにサーバーが起動し、VCSで新しいチェックインをスキャンし、変更があった場合はプロジェクトを更新してビルドします。コンパイル手順の実行に加えて、これは自動化された単体テストとコード品質チェックを実行する絶好の機会です。
継続的デリバリは、ソフトウェアビルドもテストシステムに展開され、必要に応じてテストを実行し、レポートを生成する、以前のすべての概念の組み合わせです。
少なくとも、ビルドの自動化、つまり何らかのビルドスクリプトが必要です。これにより、1つのボタンをクリックするか、1つのコマンドを発行してプロジェクトをビルドできます。これの利点は、ステップを手動で実行することによるエラーを減らすことです。複雑なビルド環境には、コードの生成(構成からDAOを考える、JAXBなどのインターフェイスコード)、コードのコンパイル、パッケージ化、メタデータのカスタマイズなどが含まれる場合があります。ビルドスクリプト、およびツールを使用して実行しますか?エラーを減らし、一貫性を提供します。
次はCIです。これは本当に便利ですが、必須ではありません。ビルドの問題を早期に特定するのに役立ちます。複数の開発者が1日を通してコードをチェックインし、おそらく自分のワークスペースを常に同期していない場合、変更が相互に干渉するリスクがあります。バージョン管理の競合ではなく、静的なコードエラーを具体的に参照しています。CIビルドサーバーは、このリスクを軽減します。
最後に、展開手順があります。ここでのアイデアは、時間を節約し、ソフトウェアを手動で展開することによるエラーを減らすことです。ビルドの自動化と同様に、ソフトウェアの展開を台無しにする方法は100あります。私は、明日現場に来る顧客のために機能するシステムを必要とする多くの場面で、手動での展開の問題を修正するために個人的にオフィスに遅く滞在しました。複数のシステムの紹介に多くのリスクを自動化:代わりに、一つのシステムは、おそらくクラッシュしたり奇妙なエラーを有するので、私たちが今持っている複数の失敗する可能性のあるシステム。ただし、そのリスクは、誰かがチェックリストのステップを逃したり、間違ったコマンドを発行して展開を台無しにしたりするよりもはるかに低くなります。運がよければ、DBバックアップを復元して最初からやり直すことができます。運が悪ければ、エラーが発生してシステムが正しく機能しなくなる可能性があります。ソフトウェアの欠陥ですか?技術者は構成を正しく設定しませんでしたか?これには、診断に時間がかかりますが、プロセスを自動化する場合は、必要のない時間と費やす必要のない時間がかかります。