次の機能を備えた、JVM プロジェクト (Java、Spring、Grails など) 用の非常にシンプルなデプロイ ツールを探しています。
- 専用のサーバー/エージェント/などは必要ありません。単純なコンソール コマンドとして、1 つの開発者マシン (または CI サーバー) からデプロイを実行したい
- 特別なサーバー構成を必要とせず、サーバー構成を作成することは想定されていません
- SCPを使用して、または理想的にはrsyncを使用してWARをアップロードするだけです(変更されたファイルのみを更新します)
- (理想的には) s3/cloudfront への静的ファイルのアップロード
- リモートサーバーでコマンドを実行できます (Tomcat サービスの再起動)
- サーバーにいくつかの最新バージョンを保存し、それらのいずれかにロールバックする機能(基本的にはシンボリックリンクの更新である必要があります)
- 異なるサーバー (テスト、ステージング、本番) を使用するように構成できます
- (理想的には) Maven プラグインまたは Grails プラグインを持っている
- 少数のサーバーへの並行アップロードをサポート
次のようになります。
$ deploytool staging deploy
$ deploytool staging rollback
また
$ mvn deploytool:deploy -P staging
$ mvn deploytool:rollback -P staging
基本的には次のとおりです。
- コンパイル + テスト + ビルド アーカイブ
- サーバー上に「日付」ディレクトリを作成します (
/.../application/version-%date%/
) - WAR コンテンツをローカル マシンからこのディレクトリにアップロードします
- 以前のシンボリックリンクを更新 (
/.../application/current/
->/.../application/version-%date%/
- Tomcat を再起動します (
sudo service tomcat7 restart
) - 最も古いバージョンのディレクトリを削除します (最新の 5 つのバージョンのみ、または過去 45 日間のバージョンを保持します)
- 何か問題がある場合 - シンボリックリンクを以前のバージョンに更新します (そして tomcat を再起動します)
私は Puppet と JClouds を見てきましたが、展開ではなく、クラスター構成についての別のことのようです。現在、あるプロジェクトでは Ruby Capistrano を使用し、別のプロジェクトでは bash スクリプトを使用しています。Capistrano は優れていますが、rvm、ruby、gem などのインストールが必要です。Ruby 以外のチームではうまく機能せず、Java プロジェクトの多くのカスタマイズが必要です。
Java/JVM プロジェクト用の Capistrano のようなツールはありますか?