Gradleを使ってTomcatサーバーへのデプロイ作業を自動化
AntやMavenを使い倒した人には何でもないことなんだろうけれども便利だと思ったのでメモ。Tomcat7を使用。
事前準備
$TOMCAT_HOME/conf/tomcat-users.xml
を編集して、適当な ロール と ユーザー を追加する。
以下のような設定を追記した。
- ロール:
manager
- ユーザー名・パスワード:
manager-script
tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager"/>
<user username="manager-script" password="manager-script" roles="manager"/>
</tomcat-users>
設定後、Tomcatサーバーを起動(すでに起動していた場合は再起動)して以下のURLでログインできることを確認する。
(Tomcatサーバーのホスト名は "testserver" とする。)
http://testserver:8080/manager
Gradleのビルドファイルを作成
次にbuild.gradleを作成する。
以下のような設定を追記する。 xxxxxxの部分には、デプロイ対象のアプリケーション名を指定する。
build.gradle
apply plugin: "groovy"
apply plugin: "war"
version = "1.0.0"
configurations {
catalinaAnt
}
dependencies {
catalinaAnt "org.apache.tomcat:tomcat-catalina-ant:7.0.0"
// 以下省略
}
// 先程ログインの動作確認をしたサーバのURL
def url = "http://testserver:8080/manager"
// デプロイ対象のアプリケーション名
def path = "/xxxxxx"
def user = project.properties['user']
def password = project.properties['password']
task tomcatStop << {
ant.taskdef(
'name':"stop", 'classname':"org.apache.catalina.ant.StopTask", 'classpath':configurations.catalinaAnt.asPath
)
ant.stop( 'username':user, 'path':path, 'password':password, 'url':url )
}
task tomcatStart << {
ant.taskdef(
'name':"start", 'classname':"org.apache.catalina.ant.StartTask", 'classpath':configurations.catalinaAnt.asPath
)
ant.start( 'username':user, 'path':path, 'password':password, 'url':url )
}
task tomcatReload(dependsOn:[clean, war]) << {
ant.taskdef(
'name':"reload", 'classname':"org.apache.catalina.ant.ReloadTask", 'classpath':configurations.catalinaAnt.asPath
)
ant.reload( 'username':user, 'path':path, 'password':password, 'url':url )
}
task tomcatList << {
ant.taskdef(
'name':"list", 'classname':"org.apache.catalina.ant.ListTask", 'classpath':configurations.catalinaAnt.asPath
)
ant.list( 'username':user, 'password':password, 'url':url )
}
task tomcatDeploy(dependsOn:[clean, war]) << {
ant.taskdef(
'name':"deploy", 'classname':"org.apache.catalina.ant.DeployTask", 'classpath':configurations.catalinaAnt.asPath
)
ant.deploy( 'username':user, 'path':path, 'password':password, 'url':url, 'war':"$rootDir/build/libs/xxxxxx-1.0.0.war" )
}
task tomcatUndeploy << {
ant.taskdef(
'name':"undeploy", 'classname':"org.apache.catalina.ant.UndeployTask", 'classpath':configurations.catalinaAnt.asPath
)
ant.undeploy( 'username':user, 'path':path, 'password':password, 'url':url )
}
デプロイのテスト
build.gradleが用意できたらデプロイを試してみる。
$ gradle war
これで xxxxxx-1.0.0.war がbild/libsフォルダ以下に作成される。その後以下のコマンドを実行すれば、Tomcatサーバーにwarファイルがデプロイされる。user、passwordプロパティにはtomcat-users.xmlに設定したユーザー名、パスワードを入力する。
$ gradle -Puser=manager-script -Ppassword=manager-script tomcatDeploy
上記コマンドを一度で実行してもいける。
$ gradle -Puser=manager-script -Ppassword=manager-script war tomcatDeploy
以下のURLにアクセスし、正しくデプロイされていることを確認する。
http://testserver/xxxxxx/
ひとこと
xxxxxxの部分は、Gradle実行中のプロジェクト名と同じため、Gradleのプロパティから取得できそう。
1.0.0 というバージョン部分もbuild.gradleの上部に記述しているのでこれを参照するようにしたい。
ディスカッション
コメント一覧
まだ、コメントがありません