Jenkins发布api jobs,利用supervisor管理运行
利用Jenkins可以自动打包接口代码生成jar包推送到目标服务器,然后通过服务器supervisor进行管理启动,自动拉起1、设置发版操作页,选择deploy发版或者rollback回滚2、设置仓库地址和分支3、设置环境变量方便下面脚本引用4、执行shell构建,包含mvn打包,和备份jar包方便回滚case ${deploy_env} indeploy)echo -e "\033[34mAct
·
利用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、设置项目发版完邮件通知
更多推荐
已为社区贡献10条内容
所有评论(0)