1、配置免密登录authorized_keys
ssh-rsa token jenkins主机
2、编写构建脚本
export JAVA_HOME=/opt/jdk-11
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
echo "export success"
mvn clean install -DskipTests -s settings.xml -U -DSPRING_PROFILES_ACTIVE=dev -DskipSwaggerUI=true
echo "mvn success"
3、ansible批量部署脚本
cat > hosts <<EOF
10.249.106.204
EOF
DOMAIN="web";
echo "开始拷贝${DOMAIN}.jar..."
ansible -i hosts all -v -m copy -a "src=${DOMAIN}/target/${DOMAIN}.jar dest=/home/q/www/api/${DOMAIN}/jar/${DOMAIN}.jar" -u bsafe
echo "开始启动服务..."
ansible -i hosts all -v -m shell -a "sh -x /home/q/www/shell/${DOMAIN}/start.sh" -u bsafe
4、启动脚本
#!/usr/bin/env bash
counter=1
counter_limit=20
projName=admin
port=8081
sdDir=/home/q/www/sd
baseDir=${sdDir}/api/${projName}
projDir=${baseDir}/jar
active=dev
cd ${baseDir}
DATE=`date +%Y-%m-%d`
logPath=${baseDir}/logs/nohup-${DATE}.log
echo $logPath
echo "****************开始构建${projName}任务****************"
pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');
echo "by netstat port then get pid: $pid"
if [ -n "$pid" ]; then
echo '当前进程存在pid=' $pid;
kill -9 $pid;
else
echo '进程不存在'
fi
echo "开始启动${projName}.jar"
JAVA_OPT="-Xms1g -Xmx1g"
JSP_AGENT="-javaagent:${sdDir}/jspAgent/JSPAgent.jar"
echo $JAVA_OPT
nohup /home/s/apps/jdk-11.0.10/bin/java $JAVA_OPT -jar ${projDir}/${projName}.jar -DSPRING_PROFILES_ACTIVE=dev --spring.profiles.active=${active} --jas
ypt.encryptor.password=y7wKU7wzAeT9DCwq --server.port=${port} > ${logPath} 2>&1 &
7wzAeT9DCwq --server.port=${port} >${logPath} 2>&1 &
while true; do
if [ -n "$(sed -n "/Undertow started on port(s) ${port}/p" ${logPath})" ]; then
cat ${logPath}
echo "SUCCESS"
exit
else
counter=`expr ${counter} + 1`
fi
sleep 3
echo "当前:${counter}, 共计:${counter_limit}"
if [ ${counter} -gt ${counter_limit} ]; then
echo "FAILURE" >&2
exit 1
fi
done