使用jenkins的SSH Publishers远程执行
配置 SSH Servers
如图,系统管理->系统设置->SSH Servers
点击
往下翻到:
远程脚本功能说明
本次远程脚本需要实现:
a.将WORKERSPACE下面的包传到远程服务器上
b.备份包
c.更新包
d.kill掉旧得进程
e.启动进程
具体操作:
-
添加git仓库登录的账户
-
配置git仓库地址:
创建一个自由风格的项目,给项目配置:
-
配置构建命令:
-
配置远程机器:
在Exec command中配置需要在远程机器上执行的脚本
这里脚本最好是在linux机器上编写好再复制过来。直接在jenkins界面上编写容易出现中文字符的空格导致执行失败且不会有报错提示
#/bin/sh
#jar包名称
JAR_NAME=voneDAO-file-service.jar
#内存参数大小
JVM_OPS="-Xmx256m -Xms256m"
#发布的环境
#ENV="--spring.profiles.active=test"
ENV='--spring.profiles.active=test --spring.cloud.consul.host=10.10.3.88'
#日志路径
LOG_HOME='/data/vonedao/log'
##项目日志名称
LOG_NAME='file'
#新包存放路径
UPDATE_JAR='/data/vonedao/jar'
#项目路径
JAR_HOME='/data/vonedao'
#包备份路径
BAK_HOME='/data/vonedao/bak'
#下面参数顺序不需要变动
sh -x /data/vonedao/jar.sh ${JAR_NAME},${ENV},${LOG_HOME},${UPDATE_JAR},${JAR_HOME},${BAK_HOME},${LOG_NAME},${JVM_OPS},${BUILD_ID}
编写在服务器10.10.3.88上的/data/vonedao/jar.sh:
#/bin/sh
string="$*"
JAR_NAME=`echo $string | awk -F ',' '{print $1}'`
ENV=`echo $string | awk -F ',' '{print $2}'`
LOG_HOME=`echo $string | awk -F ',' '{print $3}'`
UPDATE_JAR=`echo $string | awk -F ',' '{print $4}'`
JAR_HOME=`echo $string | awk -F ',' '{print $5}'`
BAK_HOME=`echo $string | awk -F ',' '{print $6}'`
NAME=`echo $string | awk -F ',' '{print $7}'`
JVM_OPS=`echo $string | awk -F ',' '{print $8}'`
BUILD_ID=`echo $string | awk -F ',' '{print $9}'`
PID=`pgrep -f "java*.*${JAR_NAME}"`
if [ -f "${JAR_HOME}/${JAR_NAME}" ];then
cp ${JAR_HOME}/${JAR_NAME} ${BAK_HOME}/${JAR_NAME}_${BUILD_ID}
fi
cp ${UPDATE_JAR}/${JAR_NAME} ${JAR_HOME} -rf
if [ -n "$PID" ]; then
kill -9 ${PID}
fi
cd ${JAR_HOME}/
nohup /data/jdk/bin/java -jar ${JVM_OPS} ./${JAR_NAME} ${ENV} >${LOG_HOME}/${NAME}.log 2>&1 &
保存后,构建:
去服务器10.10.3.88上查看: