jenkins 发布flask 与自动回滚

下载安装jenkins(需要java环境)

新建项目

1.进入Jenkins管理首页,点击“新建Item”,输入项目名称,并选择 Freestyle project,点击确定按钮,进入项目配置界面。如下图所示

image

2.配置丢弃历史构建

image

3.配置根据tag发布

image

4.配置代码仓

image

5.触发构建配置

image
image

6.构建后的操作(传代码到服务器部署)

image
执行脚本可参考下边重启脚本与回滚

7.发布

配置完上面内容之后,点击保存。返回到自己的项目中,点击根据参数构建,选择自己要发布的版本进行发布。
image


添加ssh server

1.在首页点击 "系统管理"–>“系统配置”

image

2.添加服务器信息

滑倒最下边,找到Publish over SSH,添加信息。如果已有服务器项目,点击新增添加自己的服务器信息,然后点高级,
image
image


配置gitlab凭据

1. 点击上边第4步配置代码仓中的添加

image

2. 按下边图片操作

image



重启脚本与回滚

#!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直接重启,在检查服务状态的时候要延时一下,否则检查不到
    image

  • 需要在jenkins中增加构建步骤,进行包备份。
    image
    效果展示
    image
    jenkins状态不是成功,点进去查看执行日志。如下:
    image

posted @ 2022-06-24 09:38  一枚码农  阅读(115)  评论(0编辑  收藏  举报