web-dev-qa-db-ja.com

ビルドスクリプトとビルドサーバーの責任

ビルドスクリプトとビルドサーバーの責任について説明が必要です。

継続的なインテグレーションとビルドに関するネット上の記事をいくつか読んだ。含む

また、私はソフトウェアのビルドプロセスについてアドバイザーと話しました。彼は非常に経験豊富なので、彼の発言を信頼していますが、私は混乱に取り残されました。

私が理解しているように、私の研究から(そして私が求めていることなので、ここで訂正してください)、理想は次のようになります。

  • すべてのプロジェクトにビルドスクリプトがあります
  • このスクリプトはプロジェクトをビルドします
  • このスクリプトは、依存関係が以前にビルドされていることを確認します

依存関係は他のプロジェクトである可能性があるため、独自のビルドスクリプトを使用すると、ツリーのような階層が発生します。すべてのプロジェクトとアプリケーションをビルドするトップビルドスクリプトがある場合があります。

ただし、ビルドサーバーの役割は次のとおりです。

  • リポジトリをチェックアウトする
  • ビルドをトリガーする
  • トリガーテストとその他のQAツール
  • アーティファクトを利用可能にする

これは、手動で、毎晩、またはリポジトリが変更されるたびにトリガーされます。


私のアドバイザーの目的は、私が理解しているように、1つのビルドスクリプトは柔軟性がなく保守できない方法であることです(レガシーコードベース用のスクリプトを作成するのに非常に時間がかかるという事実は別として)。また、ビルドサーバーは依存関係を維持する必要があります。たとえば、新しい依存関係の作成が失敗したときに古い依存関係を使用します。特にAntは具体的な主題であったため、コードベースで使用されるあらゆる種類のテクノロジーを構築できず、依存関係を維持できません。

目的を詳しく説明し、責任を明確にしていただけますか?

12
Angelo.Hannes

これらは直交しています:

ビルドスクリプトは、新しくチェックアウトされたソースツリーを呼び出すと、必要なターゲットと依存関係の完全なビルドを生成するメカニズムです。 makefileを持っているか、MSBuild、Ant、Maven、またはSconsの適切な呼び出しがある場合は、単に「すべてを作成」することができます。依存関係または関連プロジェクトの複雑な階層がある場合、「ビルドスクリプト」は、それらのそれぞれを順番に呼び出し、実行中に成功を確認するトップレベルのファイルである可能性があります。

ビルドスクリプトは、チェックアウト、ビルド、テスト、パッケージなどの多数のスクリプトの1つにすぎませんが、コマンドラインパラメータによって制御されるオールインワンメカニズムを使用することもできます。環境によって異なります。

ビルドserver、または継続的インテグレーションサーバーは、自動化メカニズムであり、チェックアウト->ビルド->テスト->パッケージ->ステージ->パイプラインをデプロイします。洗練されたものがない場合はcron /タスクスケジューラを使用できますが、現在はJenkins、Cruise Control、TeamCityなどの優れたツールが数多くあります。

それがビジー/オフライン/到達不能/その他の理由で利用できない場合は、CIサーバーを使用してビルドなしを呼び出すことができることが重要なので、ビルド/テスト/何でも取得するロジックdoneはCIシステムの外部にある必要がありますが、CIシステムから呼び出すことができ、ブランチ/ビルドタイプ/バージョン/アーキテクチャなどによってパラメーター化されます。

14
JBRWilkinson