リモートからのwarデプロイの自動化

JavaEEベースのツールを公開しているが、デプロイの都度、warファイルをサーバにコピーしてwildflyにデプロイするのが面倒なので、mavenで自動化しました。

前提

  • mavenのプラグインと後述のwarデプロイスクリプトで実現します。
  • 使用するmavenプラグインはmaven-antrun-pluginです。maven-antrun-pluginでリモートコピー、リモート実行するために、jschとant-jschを使用します。
  • リモートのLinux上のwildflyにデプロイするために、warデプロイスクリプトが配置されているものとします。配置場所は、”~someuser/deploying/deploy.sh”を前提としています。
  • リモートサーバへのファイルコピーやスクリプト実行のため、リモートサーバにsshで接続します。この際の認証は、パスワード認証ではなく、公開鍵認証を使う前提です。

mavenの構成

開発環境であるローカルで作成したwafファイルを、リモートのLinuxサーバで稼働するwildflyにデプロイします。
コマンドラインやeclipse上からmavenのdeployフェーズを実行した際にこの処理を実行できるようpom.xmlを構成します。
環境に依存する可能性のある変数群はprofile要素で別途定義します。

行番号説明
9-18deployフェーズに対応する既定のmavenプラグインが実行されるとエラーになってしまうので、これを抑制(skip)する。
29-30deployフェーズ実行時にmaven-antrun-pluginのgoalを実行(ant実行)する。
36-41scpコマンドでリモートサーバにwarファイルをコピーする。
42-46ssh経由でリモートのスクリプトを実行する。
52-68上記のsshやsshexecの実行に必要なライブラリの宣言。
74-86上記で参照しているプロパティの定義。

実行方法

eclipseから実行すること場合、プロジェクトを選択し、[実行] – [実行の構成]を選択します。
構成の作成、管理、および実行ウインドウで、[mavenビルド]を選択し、deployを実行します。

実行結果の例は次の通りです。