回答:
一部のテクノロジでは、コンパイル手順が不要であることに注意してください。ただし、「ビルド自動化」という用語を解釈するときは、より広い視野をとることをお勧めします。次の2つの主要コンポーネントを含む「ビルド」について考えてください。
自動化とは、これらの操作のすべて(すべてではないにしても)を自動化すること(つまり、手動による介入を必要としないこと)を指します。これには、テクノロジに応じて、非常にさまざまな手順が含まれる場合があります。
変換手順:
品質保証手順:
最近では、優れたCIツールを使用して、これらすべての懸念に対処できます。当初、ほとんどのショップはコードのコンパイルの自動化に関心があります。これは、従来のソフトウェア開発における最初の、そして最も目に見える問題の原因であるためです。
自動ビルドは、次の基本事項をカバーするプロセスの説明です。
これは、手動の介入なしで実行する必要のある、人手を介さないプロセスです。
私の考えでは、自動ビルドとは
目的は、繰り返すことができる-読む:テストする-展開プロセスを持つことです。これにより、実稼働環境に展開するまでに、物事がうまくいかないことがかなり確実になります。ビルドプロセスと展開プロセスでの人間のやり取りが少ないほど、リリースの安全性が高まります。
コンパイルされていない言語を使用している場合でも、サイトを構築し、それを圧縮して単一のアーティファクトを作成できます。
優れたCIツールを使用すると、ユニットテストの実行など、多くのタスクをビルドプロセスにスクリプト化できます。また、成功したビルドと失敗したビルド、テストカバレッジなどの記録も保持されます。しかし、それらのどれも、自動ビルドとして定義するものの一部ではありません。(つまり、優れた自動ビルドプロセスにはこれらの機能がありますが、貧弱なプロセスにはこれらの機能がないため、「自動ビルド」と呼ばれることは間違いありません。)
統合/回帰テストは、ビルドプロセスではなく、展開プロセスの一部として実行することをお勧めします(ただし、便利な環境があれば、すべてのビルドで展開できます)。
a project using an interpreted language, such as Python or Perl?
インタプリタ言語の場合、物事はヒットまたはミスする可能性があります。一部の相互侵入言語にはコンパイラがありますが、多くの場合、コンパイラを使用する必要はほとんどありません。その場合、私は通常、コンパイルの代わりに構文と構文解析エラーのコードをスキャンするか、コードのテストの実行に直接スキップします。
エンドユーザーのマシンのソースからビルドしますか?
私にとってこれは、エンドユーザーがプログラムの最新バージョンを取得し、それをコンパイルし、必要に応じて構成およびデプロイするために実行できる単一のコマンドを提供できることを意味します。
ユーザーのマシンにローカルなRDBMS内のデータベースなど、単純にプリコンパイルおよび配布できない依存関係を持つアプリケーションですか?
これらは、データベースが自動的に破棄および再構築され、スクリプトが正しいこと、およびプログラムが正しくテストすることを確認できるため、継続的インテグレーションのテスト部分に該当します。
あなたの質問で議論しているのは、実際には3つの異なる概念です。
コアでの継続的インテグレーションは、小さな変更を行い、それらの変更を「グローバルな真実」と頻繁に同期させることです。開発者は、チェックアウトを行って1週間待つのではなく、1日以内に完了できるタスクに取り組み、コードがメインリポジトリとあまり同期しないようにする必要があります。
チームに苦痛を与えることなくこれを達成するために(つまり、既存の機能を構築しない、または破壊するソースをチェックインする)。開発者は、自分のコードが「ビルドを壊さない」ことを確認する必要があります。手動で行う場合、これは開発プロセスに追加のオーバーヘッドを追加します(ビルドに時間がかかる、および/またはコードの1行の変更が予期しない方法でアプリケーションに影響を与える可能性のある多くの相互依存関係があるプロジェクトを考えてください)。
この状況を緩和するために、他の手法を使用してこのオーバーヘッドを削除します。
自動ビルドを使用してソースをチェックアウトし、必要に応じてアプリケーションが正常に動作することを確認する自動テストを実行してビルドします(この手順はテストスイートと同じくらい便利です)。
さらなるステップの継続的デリバリーは、データベースおよびその他の懸念事項に関する問題に対処します。ここでの考え方は、データベースや環境のその他の要因にある程度のバージョン管理を提供し、アプリケーションが可能な限り本番に近い環境で動作することをできる限り迅速に確認できるようにすることです。
「自動ビルド」とは、1つの(スケジュール可能な)アクション(通常はシェルスクリプトまたはバッチファイル)を使用して、ソース管理から出荷可能なパッケージに移動できることを意味します。
このコンテキストでビルドを正確に構成するものは、出荷する内容、配信方法、および開発スタックのさまざまな部分に必要な手順に大きく依存しますが、いずれにしても、ソース管理に含まれるもの、そして最終的に出荷可能な製品(またはエラーメッセージと怒っているプロジェクトマネージャー)になります。
単純なPythonプロジェクトの場合、自動ビルドは2つのステップだけで構成されます-ソースをチェックアウトし、関連するファイルを正しいディレクトリにコピーします。より複雑なプロジェクトの場合、次のようなものが含まれます。
builds
でタグ付けしましたが、どちらbuild
を使用するかわからなかったためです。