Jenkins一键部署,前期准备工作,安装jdk,maven,jenkins,git;
在Jenkins上新建任务并配置
填写git地址,用户,选择分支
填写maven配置信息
填写要执行的脚本
bash /opt/movejars/zk_test_movejars.sh 是 执行Jenkins所在的服务器的脚本,让我们来康康这个脚本里具体是什么
#! /bin/bash
#项目构建名,即Jenkins项目名称
JOB_NAME=test_web_combine_zk
#jenkins_home的位置,这个路径下存放的,是我们从git上拉下来的项目
BASE_PATH=/var/lib/jenkins/workspace/$JOB_NAME
#jar运行路径
JAR_HOME=/opt/web_combine_test_zk
#各个服务的jar,为了方便,我将变量写死了
API_JAR=admin/admin-api/target/admin-api.jar
GATE_JAR=admin/gateway/target/admin-gateway.jar
OPE_JAR=service/operation/operation-server/target/operation-server.jar
SYS_JAR=service/sys/sys-server/target/sys-server.jar
#这当然是服务器的IP啦
IP4=192.168.XX.XX
#然后呢,我们就来执行其他脚本,如果是在本机上的脚本,就用bash $JAR_HOME/mkdir.sh,如果是在其他服务器上,就用ssh root@$IP1 "bash $JAR_HOME/mkdir.sh"
#bash $JAR_HOME/mkdir.sh
#ssh root@$IP1 "bash $JAR_HOME/mkdir.sh"
ssh root@$IP4 "bash $JAR_HOME/mkdir.sh"
#同理,本机用cp $BASE_PATH/$OPE_JAR $JAR_HOME/tmp/,远程拷贝用scp $BASE_PATH/$GATE_JAR root@$IP4:$JAR_HOME/tmp/
#cp $BASE_PATH/$OPE_JAR $JAR_HOME/tmp/
scp $BASE_PATH/$OPE_JAR root@$IP4:$JAR_HOME/tmp/
scp $BASE_PATH/$API_JAR root@$IP4:$JAR_HOME/tmp/
scp $BASE_PATH/$GATE_JAR root@$IP4:$JAR_HOME/tmp/
scp $BASE_PATH/$SYS_JAR root@$IP4:$JAR_HOME/tmp/
那么,mkdir.sh这个脚本里有什么玩意呢
#! /bin/bash
#文件路径
BASE_PATH=/opt/web_combine_test_zk/tmp
#文件夹不存在则创建
if [ ! -d $BASE_PATH ];then
mkdir $BASE_PATH
else
rm -rf $BASE_PATH/*
fi
没错,就是在文件夹下创建tmp文件
接下来就是
cleanStart.sh这个脚本了
#! /bin/bash
#进入到脚本所在文件夹
cd /opt/web_combine_test_zk
#执行killAll.sh脚本
bash ./killAll.sh
#删除原来的running
rm -rf ./running
#将新的tmp改为running
mv ./tmp ./running
sleep 5
#执行start脚本
bash ./start.sh
killAll.sh
#! /bin/bash
#杀死所有的进程 kill -9
LIST="admin-api.jar admin-gateway.jar operation-server.jar sys-server.jar"
for jar in $LIST;
do
ID=`ps -ef | grep "$jar" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
if [[ $ID >0 ]];then
echo $jar $ID ;
kill -9 $ID
fi
done
最后,最麻烦,也是最重要的就是start.sh脚本
#! /bin/bash
#进入到脚本所在文件夹
BASE_PATH="/opt/web_combine_test_zk"
JAVA_HOME="/usr/local/java/jdk1.8.0_191/bin"
#这里nohup需要注意,在执行java命令时,需要绝对路径的Java,之前因为在环境变量中配置过JAVA_HOME,所以想直接写java,但总是不能启动,坑的一批,而且要用双引号。。。
COMMON_TOP_NOPP="nohup $JAVA_HOME/java -server -XX:NewSize=1g -XX:MaxNewSize=2g -XX:SurvivorRatio=8 -Xmx2g -Xms1g -XX:+UseG1GC -XX:MaxTenuringThreshold=0 -jar "
#-Dspring.profiles.active=test,test开发环境的profile
#-Dspring.cloud.nacos.discovery.namespace=ZK_TEST,ZK_TEST是指在nacos中的命名空间
COMMON=" -Dspring.profiles.active=test -Dspring.cloud.nacos.discovery.namespace=ZK_TEST "
#admin-api
$COMMON_TOP_NOPP $COMMON -Dserver.port=30301 $BASE_PATH/running/admin-api.jar >> admin-api.out 2>&1 &
#gateway
$COMMON_TOP_NOPP $COMMON -Dserver.port=30304 $BASE_PATH/running/admin-gateway.jar >> gateway.out 2>&1 &
#operation
$COMMON_TOP_NOPP $COMMON -Dserver.port=30212 $BASE_PATH/running/operation-server.jar >> operation-server.log 2>&1 &
#sys
$COMMON_TOP_NOPP $COMMON -Dserver.port=30218 $BASE_PATH/running/sys-server.jar >>sys-server.out 2>&1 &
最后,我们只需要在Jenkins中点击立即构建,便可一键部署