#はじめに
せっかくgradleちゃんを使っているので、ワンクリックでデプロイまでやっていきたいよねってことでbuild.gradleをちょっと手を加えます
#プラグインの設定
準備としてdependencies にorg.hidetake:gradle-ssh-pluginと
apply pluginにはorg.hidetake.sshを追加してください
① dependencies {
//リモートサーバ操作
classpath('org.hidetake:gradle-ssh-plugin:0.4.5')
}
② apply plugin: 'org.hidetake.ssh' //リモートサーバ操作
#リモート接続方法
ほとんどの場合、デプロイ先はどっかのAPサーバだと思うのでSSHでのログインの設定。
// Deploy to web server
remotes {
web01 {
host = 'XX.XXX.XXX.XX'
user = 'ec2-user'
knownHosts = allowAnyHosts
identity = file('src/main/resources/jointv-dev.pem')
}
}
今回はec2上に置いたのでfileにpemさんを指定しておきます。
knownHosts は コンソールで初めてログインするときに聞かれるあれ。今回はなんでもありにします。
#デプロイタスク
SSHでログイン後、
1.WARをアップロードして
2.tomcatを停止して
3.元のファイルファイルを消して
4.アップロードしたファイルを移動させて
5.tomcatをスタートして
6.履歴管理
task deployWar(dependsOn: 'war')<<{
def tomcatHome = '/var/lib/tomcat8/webapps'
def localHome = '/home/ec2-user'
def warName = 'ROOT'
def historyDeloyName ="${localHome}/${warName}.war"+getDate()
ssh.run {
settings {
pty = true
}
session(remotes.web01) {
//アップロード
println "Uploading ${localHome}/${warName}.war"
//日付で履歴管理
put(war.archivePath.absolutePath,"${localHome}/${warName}.war")
//所有者の変更
println "chenge ownner"
executeSudo("chown tomcat:tomcat ${localHome}/${warName}.war")
println "tomcat service stop"
executeSudo("sudo service tomcat8 stop")
println "delete deployed war"
executeSudo("rm -fr ${tomcatHome}/${warName}")
executeSudo("rm -fr ${tomcatHome}/${warName}.war")
//転送したwarをコピーする
executeSudo("cp ${localHome}/${warName}.war ${tomcatHome}/")
println "tomcat service start"
executeSudo("sudo service tomcat8 start")
//履歴を作成
executeSudo("mv ${localHome}/${warName}.war ${historyDeloyName}")
}
}
}
#履歴管理
ただ日付を付けているだけです。S3におくのはまた今度
//date
def getDate() {
def date = new Date()
def formattedDate = date.format('yyyyMMddHHmmss')
return formattedDate
}
#今日のひとこと
gradle。。なんでいままで使わなかったのだろ。