GradleでSSHを使ってサーバへデプロイだとかサーバの再起動をするのに、これまでAntのsshexecを使っていた。
最近、gradle-ssh-pluginを知ったので、使い方をメモ。
ユースケースとしてはこんな形。
- jarをビルドした後に、jarをVagrantで動いてるVMにコピー
- VMにコピーしたファイルをTomcat向けの場所に移動
- VMのTomcatを再起動
// gradle-ssh-pluginを使うための設定
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.hidetake:gradle-ssh-plugin:0.2.7'
}
}
apply plugin: 'ssh'
// SSH先のサーバ情報
remotes {
vagrant {
host = '192.168.33.10'
user = 'vagrant'
password = 'vagrant'
}
}
// アップロード→Tomcat再起動タスク
task uploadAndRestartTomcat(type: SshTask) {
// サーバ側のアップロード先ディレクトリ
def uploadDir = '/home/vagrant/'
// jarを作ったローカルのファイルパス
def localFile = file("${project.buildDir.name}/libs/${project.jarName}").path
// Tomcat上のjar置き場
def tomcatLibDir = '/usr/local/tomcat/webapps/hoge-web/WEB-INF/lib'
// SSHでやること
session(remotes.vagrant) {
// ファイルを置く
put(localFile, uploadDir)
// サーバ上でファイルを移動する
execute("sudo cp ${uploadDir}/${project.jarName} ${tomcatLibDir}")
// Tomcatを再起動
execute("sudo service jsvc restart")
}
}