デプロイなどでGradleからSSHアクセスするためのプラグインGradle SSH Pluginのバージョン0.4.4をリリースしました。
build.gradleでプラグインを読み込めばすぐに使えます。以下はreloading Tomcatのサンプルです。
plugins {
id 'org.hidetake.ssh' version '0.4.4'
}
remotes {
webServer {
host = '192.168.1.101'
user = 'jenkins'
identity = file('id_rsa')
}
}
task deploy << {
ssh.run {
session(remotes.webServer) {
put 'example.war', '/webapps'
execute 'sudo service tomcat restart'
}
}
}
0.4.4では、SFTPでディレクトリを上書きする時のエラーを直しました。Issue reportをいただいたので対応しました。
詳しい使い方は下記をご覧ください。
Gradle SSH Plugin · Deploy your App from Gradle
振り返り
- Keep
- 自動化されたテストがあると安心してリリースできる。今後もメンテしていく。
- リリースは早い方がいい。今回はBugに気づいてからリリースまで5日。まあまあかな。
- Problem
- JSchのエラーメッセージが分かりにくい。Issueでも文句が出てる。
- リリースプロセスが煩雑でめんどくさい。
- Try
- JSch例外をラップして分かりやすいメッセージをつけたい。
- リリースプロセスを定型化して書いておく。
リリースプロセス
gradle-ssh-pluginは自前でSSH処理を持たず、groovy-sshという単体実行可能なライブラリにSSH処理を切り出している。そのため、SSH処理に対して機能追加やバグ修正を行った場合は、まずgroovy-sshをリリースした後にgradle-ssh-pluginをリリースするという手順を踏む必要がある。
前提条件:
- リリース対象のPull Requestがすべてmerge済みであること
手順:
- groovy-sshのリリース
- gradle-ssh-pluginのリリース
- 関連するIssueにコメントを書く
自動化できそうなところ: