gradle配置
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.hidetake:gradle-ssh-plugin:2.10.1'
classpath 'org.codehaus.groovy:groovy-backports-compat23:2.4.6'
}
}
plugins {
id "org.hidetake.ssh" version "2.10.1"
}
jar {
rootProject.version = getNewVersionValue()
}
//获取新的版本号
def getNewVersionValue() {
//用日期作为版本号
return new Date().format("yyyyMMdd-HHmm", TimeZone.getTimeZone("GMT+08:00"))
}
//远程服务信息
remotes {
webServer {
host = '192.168.1.218'
port = 22
user = 'root'
password = 'root'
}
}
task deploy(dependsOn: bootJar) {
doLast {
ssh.run {
session(remotes.webServer) {
//服务器存放jar的路径
def path = "/usr/local/test"
//复制jar到服务器上 打包的jar: ammeter-20210915-1126.jar
put from: bootJar {}.getArchiveFile().get().toString(), into: path
// 通过正则查找 "ammeter-[0-9]{8}-[0-9]{4}.jar"
//删除多余的jar
executeScript """
#!/bin/sh
echo "删除多余的jar"
jarName=`ls -t $path | grep -E "ammeter-[0-9]{8}-[0-9]{4}.jar" | sed -n '3,\$p'`
if [ "\$jarName" ]
then
echo "正在删除文件 \$jarName"
rm -rf $path/\$jarName
else
echo "没有要删除的"
fi
"""
// 关闭进程
executeScript """
#!/bin/sh
echo "关闭进程"
PID=`ps -aux | grep -E "ammeter-[0-9]{8}-[0-9]{4}.jar" | grep -v grep | awk '{print \$2}'`
if [ "\$PID" ]
then
echo "正在kill进程"
kill -9 \$PID
else
echo "没有进程需要kill"
fi
"""
//执行jar
execute """java -jar $path/${bootJar.archiveName} --spring.profiles.active=pro"""
}
}
}
}