2

アプリケーションのビルド スクリプトを作成していますが、テスト/本番環境にデプロイ/リリースするためのベスト プラクティスは何かを考えています。

現在、私が書いているのは

  1. ssh を使用して Tomcat サーバーを停止します。
  2. Maven を使用して戦争を構築する
  3. ssh を使用して tomcat webapps dir から war を削除します
  4. ssh を使用して、ビルドされたファイルを tomcat の webapps ディレクトリに転送します。
  5. サーバーを起動する

これがアプリを展開する最善の方法ではないことは承知しており、フィードバックをお待ちしています。私が理想的にやりたいことは、

  1. prod env の Maven リリースを実行します。可能であればリビジョン番号まで。
  2. コードにタグを付けます。
  3. リリースされた戦争を、すべての戦争とその履歴を含む S3 フォルダーにアップロードします。
  4. S3 からファイルをダウンロードするサーバー/Jenkins にスクリプトを作成し (バージョンが提供されている場合はバージョン番号、それ以外の場合は最新)、Tomcat にデプロイします。

このステップ 4 を Jenkins に置くべきかサーバーに置くべきか混乱しています。Web アプリケーションをホストするために EC2 インスタンスを使用しているため、イメージにスクリプトが必要です。

4

2 に答える 2

5

まず、ビルドとデプロイを混在させていることです。Maven経由でビルドすることをお勧めします。展開は別の話です。

そのようにビルドを変更して、Jenkins で 1 回実行するか、テストおよび運用環境にデプロイできるコマンド ライン アーティファクトで生成することをお勧めします。

Maven リリース プラグインを介してリリースを作成するアーティファクトを生成することを意味します。これは、再現可能である必要があるテストおよび/または製品化するアーティファクトを提供するためです。

これらは、後でアーティファクトを生成するものであり、リポジトリ マネージャー (Artifactory、Archiva、Nexus) 内に配置します。次のステップは、テストや本番などの適切な領域にデプロイすることです。これは、 maven cargo pluginまたはtomcat pluginなど、または他のプラグインを介して Maven によって実現できます。しかし、パペット、シェフなどのさまざまなものを介してこれを行うことをお勧めします。または、自作のスクリプト/ツールを使用することもできます。スクリプトは、問題なく Jenkins 経由で実行できます (問題になることはありません)。展開自体は建物の一部であってはならず、個別に作成する必要があります。独自のツールを作成している場合は、Aether ライブラリを見て、Maven リポジトリへのアクセスをより簡単にすることができます。

于 2012-07-23T13:32:50.163 に答える
5

組織の観点からは、構築と展開、コピーなどを混在させています...

  • ソースのチェックアウトには jenkins を使用する必要があります。scm から特定のバージョンをチェックアウトするためのさまざまなプラグインがあります (デフォルトで CI が常に最新バージョンに対して実行されるようになっている場合でも): http://wiki.hudson-ci.org/display/HUDSON/Subversion+Release+Manager
  • maven は、戦争の前処理、リソースのフィルタリング、コンパイルおよびパッケージ化に使用する必要があります
  • ジェンキンスの後処理タスクを使用して、生成された戦争をコピー/アーカイブできます
  • https://wiki.jenkins-ci.org/display/JENKINS/Deploy+Plugin (カーゴに基づく)などのジェンキンス プラグインを使用して、アーカイブをデプロイできます。

jenkins が統合ツールである場合、maven はアーカイブを構築するためのツールです。

あなたがすべき :

  • コンパイルと統合の間に明確な境界を保つ
  • 設計されたものにツールを使用します。

やあ M.

于 2012-07-23T13:56:34.067 に答える