使用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上查看: