wildflyへのwarデプロイの自動化

更新したWebアプリをWildflyにデプロイするのが面倒なのでスクリプトを作成してみました。

前提

  • 実行環境はCentOS Linux 7です。
  • JavaEEのWebアプリの配布形式であるwarファイルをデプロイする想定です。
  • JBoss CLIを使ってWildflyにwarファイルをデプロイします。Wildflyに接続する際に認証が必要となりますが、Wildflyの既定である「ローカルホストからの接続は誰でも許可」を前提にしているため、ユーザ名やパスワードは指定していません。必要な場合は、–user, –password等のオプションを追加してください。

スクリプトの説明

  • スクリプトで指定されたwarファイルをWildflyにデプロイします。成功した場合は0、失敗した場合は1を返却します。
  • デプロイしたいディレクトリ名・ファイル名(war)をDEPLOY_DIR, DEPLOY_FILE変数に指定してください。既定ではスクリプトと同じディレクトリにwarファイルが配置される想定になっています。
  • 実行時のログはスクリプトと同じフォルダのdeploy.logに出力します。変更したい場合はLOG_DIR, LOG_FILE変数を変更してください。なお、何度も繰り返し実行するタイプのスクリプトではないので、同一のログファイルに出力する前提としています。
  • 実行に成功した場合、このスクリプトが配置されているディレクトリに、oldディレクトリを作成し、warファイルをこのディレクトリに退避(mv)します。実行に失敗した場合は、退避しません。
  • スクリプトは任意の場所に配置して実行できます。
行番号説明
22-27リダイレクトされた内容をログファイルに出力する関数です。リダイレクトされた内容はread関数でMSG変数に格納しています。もしリダイレクトされた内容が空でなければ、ログ出力します。
34-35JBOSS CLIを使ってデプロイします。このコマンドの実行結果を取得するために、$PIPESTATUSを使っています。log関数にパイプしている関係で、直前の実行結果を取得するための”$?”では常に0になってしまうため。
38-42デプロイが正常に完了し、かつwarファイルが存在している場合は、そのファイルを退避します。

使用方法

スクリプトを任意の場所に配置し、実行権限を付与します。(例: chmod a+x ./deploy.sh等)
warファイルを配置し、deploy.shを実行します。
成功した場合は終了コード0、失敗時は1を返却します。