jenkins 发布flask 与自动回滚
下载安装jenkins(需要java环境)
新建项目
1.进入Jenkins管理首页,点击“新建Item”,输入项目名称,并选择 Freestyle project,点击确定按钮,进入项目配置界面。如下图所示
2.配置丢弃历史构建
3.配置根据tag发布
4.配置代码仓
5.触发构建配置
6.构建后的操作(传代码到服务器部署)
执行脚本可参考下边重启脚本与回滚
7.发布
配置完上面内容之后,点击保存。返回到自己的项目中,点击根据参数构建,选择自己要发布的版本进行发布。
添加ssh server
1.在首页点击 "系统管理"–>“系统配置”
2.添加服务器信息
滑倒最下边,找到Publish over SSH,添加信息。如果已有服务器项目,点击新增添加自己的服务器信息,然后点高级,
配置gitlab凭据
1. 点击上边第4步配置代码仓中的添加
2. 按下边图片操作
重启脚本与回滚
#!bin/bash
#服务使用包路径
package='/home/st_bigdata/StereoDataServer'
#备份包路径(需要跟jenkins中的备份路径保持一致)
package_bak='/home/st_bigdata/StereoDataServer.bak'
cd ${package}
#删掉备份包
function del_bak(){
rm -r ${package_bak}
}
#安装依赖包与重启
function install_and_restart(){
/home/st_bigdata/software/miniconda3/envs/stereo-dataserver-new/bin/python -m pip install -r requirements.txt #安装依赖包
echo '--------------restart-----------------'
#重启服务,(根据自己服务重启命令修改)
/home/st_bigdata/software/miniconda3/envs/stereo-dataserver-new/bin/supervisorctl -c /home/st_bigdata/software/miniconda3/envs/stereo-dataserver-new/etc/supervisor/supervisord.conf restart stereo_dataserver_new
}
#检查服务是否启动成功
function check_server(){
status=`curl -I -m 10 -o /dev/null -s -w %{http_code} 'http://localhost:5000/test'`
echo "status:${status}"
if [ $status -eq 200 ];then #如果测试接口/test的状态为200,说明服务启动成功,否则失败
echo 'success'
return 0
else
echo 'fail'
return 1
fi
}
function main(){
#在jenkins中,push前进行备份
#cp -r ${package} ${package_bak}
install_and_restart
echo '-----------------------------------------'
#如果服务重启不成功,恢复到发布前的版本
check_server
if [ $? -eq 0 ];then #检查check_server的执行结果,如果为0说明服务启动成功,不为0为失败,需要回滚
del_bak
exit 0
else
echo '--------------rollback----------------'
cp -r ${package_bak}/* ${package} #用备份的包覆盖当前包,然后执行重启操作
install_and_restart
check_server
del_bak
exit -1
fi
}
#执行main函数
main
【注意】
-
如果使用uwsgi直接重启,在检查服务状态的时候要延时一下,否则检查不到
-
需要在jenkins中增加构建步骤,进行包备份。
效果展示
jenkins状态不是成功,点进去查看执行日志。如下: