Gradle から Cargo を使用して Wildfly への Java EE アプリケーションのデプロイを自動化する
目的
前に書いた記事とかぶってるけど、プラグインのバージョンが上がっていたのもあってもう一度。
Jenkins を使って継続的ビルドを行うのはいいけど、ビルドだけでは物足りない。やはりビルドしたからにはデプロイまで行いたい。Jenkins には Deploy Plugin があるけれど、WildFly には対応していない。というわけで、Deploy Plugin のベースともなっている Cargo を使用してデプロイの自動化を行おうと思う。
まあ、継続的インテグレーションとか考えないまでも、コマンド一発でデプロイが行えるのは魅力的なはず。
動作環境
- Windows 8.1
- WildFly 8.2
- Gradle 2.1
- Gradle Cargo plugin 2.0.2
ビルドスクリプト
build.gradle
apply plugin: war apply { from 'gradle/cargo.gradle' } def javaVersion = 1.8 def defaultEncoding = 'UTF-8' sourceCompatibility = javaVersion targetCompatibility = javaVersion tasks.withType(AbstractCompile) each { it.options.encoding = defaultEncoding } webAppDirName = 'WebContent' repositories { mavenCentral() } dependencies { providedCompile 'javax:javaee-api:7.0' } buildscript { repositories { jcenter() } dependencies { classpath 'com.bmuschko:gradle-cargo-plugin:2.0.3' } }
- これ自体は割と最小限な設定。一応、cargo の設定は別ファイルに分けてみた。
- buildscript に gradle-cargo-plugin を指定しておく。
gradle/caro.gradle
apply plugin: 'com.bmuschko.cargo-base' dependencies { def cargoVersion = '1.4.5' cargo "org.codehaus.cargo:cargo-core-uberjar:$cargoVersion", "org.codehaus.cargo:cargo-ant:$cargoVersion" cargo "org.wildfly:wildfly-controller-client:8.2.0.Final" } cargo { containerId = 'wildfly8x' remote { hostname = 'localhost' username = 'admin' password = 'password' } }
- 今回は既に起動済みのリモートの WildFly にデプロイする設定を行った。
- 理由はわからないけれど、Cargo のバージョンを指定する必要あり。外すとエラーになってしまった。
- リモートで接続するには wildfly-controller-client を依存性に追加する必要あり。
Jenkins
あとは Gradle Cargo plugin で規定されたタスクを呼び出すだけ。
remote で設定を行ったので使えるのは以下の 3 つ。
- cargoDeployRemote : デプロイする。
- cargoUndeployRemote : デプロイやめる。
- cargoRedeployRemote : 再デプロイする。
※画像は Gradle plugin を使用。