利用Jenkins可以自动打包接口代码生成jar包推送到目标服务器,然后通过服务器supervisor进行管理启动,自动拉起

1、设置发版操作页,选择deploy发版或者rollback回滚

2、设置仓库地址和分支

 

3、设置环境变量方便下面脚本引用

 4、执行shell构建,包含mvn打包,和备份jar包方便回滚

case ${deploy_env} in
	deploy)
		echo -e "\033[34mAction:${deploy_env}\033[0m"
		echo -e "\033[34m开始进行maven打包:\033[0m"
        mvn -Dmaven.test.skip=true clean package
		result=$?
		[ ${result} -eq 0 ] && echo -e "\033[32mmaven打包成功。\033[0m" || {
			echo -e "\033[31mmaven打包失败。\033[0m"
			exit ${result}
		}
		;;
	rollback)
		[ ${version} -eq 0 ] && {
        	echo -e "\033[31m版本号非0。\033[0m"
            exit 1
            } || echo -e "\033[34mAction:${deploy_env}\033[0m"
		echo -e "\033[34mRollback version:${version}\033[0m"
		rm -rf target
		cp -Rv ${JENKINS_HOME}/jobs/${JOB_NAME}/builds/${version}/archive/target .
		[ $? -eq 0 ] && echo -e "\033[32m指定版本号${version}的target目录复制到当前部署目录成功。\033[0m" || {
			echo -e "\033[31m指定版本号${version}的target目录复制到当前部署目录失败。\033[0m"
			exit 1
		}
		;;
	*)
		exit 1
		;;
esac

 5、首先在服务器安装supervisor

yum install python-setuptools

yum clean all
yum makecache
yum install python-pip
pip install supervisor

###创建supervisor配置文件目录/etc/supervisor/
mkdir -m 755 -p /etc/supervisor/

####创建主配文件supervisord.conf
echo_supervisord_conf > /etc/supervisor/supervisord.conf

#####把supervisors.conf中的最后两行修改一下:

;[include]
;files = relative/directory/*.ini         ;定义管理监控程序的配置文件的路径

修改为:
[include]
files = /etc/supervisor/conf.d/*.conf
#################
启动supervisord及supervisorctl一些常用命令:

supervisord -c /etc/supervisor/supervisord.conf

supervisorctl -c /etc/supervisor/supervisord.conf reload // 加载配置,重新启动supervisord

supervisorctl start all //启动所有进程
supervisorctl start redis //启动某一个进程
supervisorctl stop all //停止所有进程
supervisorctl stop redis //停止某一个进程
--------------------- 


 6、配置supervisor启动文件

注:/App/java_app/下面会统一放我们项目目录,启动用户可以自定义root也可以

cd /etc/supervisor进去supervisor目录下创建项目启动文件

vim cityhouse.ini

创建完一定要记得update一下,supervisor update cityhouse

[program:cityhouse]
;启动用户
user=work
;程序启动命令
command=/usr/local/jdk-1.8/bin/java -jar -Xmx512m -Xms512m -Dspring.profiles.active=test cityhouse.jar 
numprocs=1
;程序启动目录
directory=/App/java_app/cityhouse
;在supervisord启动时自启动
autostart=true
;程序异常退出后自动重启,可选值:[unexpected,true,false],默认为unexpected
autorestart=true
;启动10秒后没有异常退出,就表示进程正常启动了
startsecs=10
;启动失败自动重试次数
startretries=3

7、到Jenkins配置jar远程推送设置

source /etc/profile
IN_FACE=`/sbin/route -n |awk '{if($4~/UG/){print $8}}'|head -n 1`
LOCAL_IP=`/sbin/ip addr show "${IN_FACE}" | grep -w 'inet' | awk '{print $2}'`
#####jar包推送完重启项目
sudo supervisorctl restart  ${APP_NAME}

###利用url监控看下项目是否正常启动
timeout=180
echo -e "\033[34m测试程序部署是否正确\033[0m"
for (( i=1;i<=$timeout;i++ ))
do
    http_code=`curl -I -m 10 -o /dev/null -s -w %{http_code} ${MONITOR_URL}`
    if [ $http_code -eq 200 ];then
       echo -e "\033[32m${LOCAL_IP}节点程序${APP_NAME}项目发布成功\033[0m"
       exit 0
    fi
    sleep 1
done
echo -e ”\033[31m${LOCAL_IP}节点程序${APP_NAME}项目发布失败\033[0m"
exit 1

 8、设置项目发版完邮件通知

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐