• jenkin如何实现web版本控制&回退


    jenkins本身作为一款运维利器,具备

    1. 持续集成 (Continuous integration) 
    2. 持续交付(Continuous delivery) 
    3. 持续部署(continuous deployment)

    的强大能力, 对于生产的版本部署, 有时候会遇到新发的版本出现严重BUG等问题, 急需进行版本回退,为了解决这种应急问题, 特地介绍下如何使用jenkins做web版本控制,在不同版本之间可以快速切换。

    1. jenkins的“构建”tab中增加构建步骤: Execute shell

    shell脚本讲解:

    # 设置部署的项目名称
    PROJECT_NAME="optimus-mobile"
    # 清理掉上次部署遗留下的项目压缩包
    rm -rfv /data/work/.jenkins/jobs/${JOB_NAME}/workspace/*.tar.gz;
    # 切换到jenkins部署后打包tar.gz存放的目录空间
    cd /data/work/.jenkins/jobs/${JOB_NAME}/workspace;
    # 重点!! 创建版本文件 命名规则: rev. + 项目名
    touch rev.${PROJECT_NAME}
    # 把job的构建编码作为版本号存放到rev文件中(对于SVN代码管理的,可以使用SVN的提交ID作为版本号)
    echo $BUILD_NUMBER > rev.${PROJECT_NAME}
    # 对workspace空间中的所有文件打包成tar.gz
    tar zcvf ${JOB_NAME}.tar.gz  *;
    

      

    2. jenkins的“构建后操作”tab中增加构建步骤: Send build artifacts over SSH (通过SSH通道发送构建好的文件)

    在Exec command框中插入如下脚本:

    #定义当前最新版本的tomcat目录(里面是apache tomcat解压文件)

    PROJECT_DEPLOY_HOME="/data/work/optimus-mobile"

    # 定义版本的存放目录(里面存储了该项目的所有的版本)
    PROJECT_RELEASE_HOME="/data/work/release/optimus-mobile"

    #定义项目名称
    PROJECT_NAME="optimus-mobile"

    #定义版本号所在的文件名称
    PROJECT_CHECKOUT_REV_FILE="rev.${PROJECT_NAME}"

    #定义最新的版本存放的文件夹上级目录(tomcat中docs是配置指向这里)

    PROJECT_WEB_HOME="/data/work/web"

    # 设置CATALINA_BASE(用于后面的tomcat启动)
    CATALINA_BASE="/data/work/optimus-mobile"

    #定义当前构建的版本文件所在的文件夹
    WORK_FOLD="/data/work/jenkins-deployer-upload/${JOB_NAME}/${BUILD_ID}/"

    #进入当前构建的版本文件夹
    cd ${WORK_FOLD}

    #解压tar
    tar zxvf *.tar.gz

    #删除tar
    rm *.tar.gz

    #获取版本号存储文件中存储的版本号值

    REV=`cat ${WORK_FOLD}/${PROJECT_CHECKOUT_REV_FILE}`

    #定义新版本的文件夹名称(带上.版本号)
    REV_PROJECT="${PROJECT_NAME}.${REV}"

    #删除同版本号的文件夹(如果有)
    rm -rf "${PROJECT_RELEASE_HOME}/${REV_PROJECT}"

    #新建新版本对应的文件夹
    mkdir "${PROJECT_RELEASE_HOME}/${REV_PROJECT}"

    #把tar解压后的文件全部移动到新建的版本文件夹
    mv * "${PROJECT_RELEASE_HOME}/${REV_PROJECT}"

    #进入tomcat中当前指向的文件夹目录的上级

    cd ${PROJECT_WEB_HOME}

    # 删除该目录(这是个软链接)
    rm ${PROJECT_NAME}

    # 重新创建软链接, 指向最新的版本号
    ln -s "${PROJECT_RELEASE_HOME}/${REV_PROJECT}" ${PROJECT_NAME}

    # 关闭tomcat

    sh ${CATALINA_BASE}/bin/shutdown.sh -force;
    sleep 10;

    # 删除tomcat中的日志
    rm -f ${CATALINA_BASE}/logs/*;

    #重启tomcat
    sh ${CATALINA_BASE}/bin/startup.sh

    3. 配置完毕后,保存jenkins, 立即构建实例

     蓝色球表示构建成功, BUILD_ID= 27

    4. 此时文件已经上传生产服务器.

    看下 /data/work/release/optimus-mobile目录下的文件:

    看到里面存了两个版本。

    5. 查看最新版本文件夹

    cd /data/work/web/
    ll

    看到当前optimus-mobile软链接指向了BUILD_ID=27的版本文件夹, 这个版本是最新的

    6. 查看tomcat的conf/server.xml文件配置:

    可见tomcat的部署目录指向的是 

    /data/work/web/optimus-mobile

    路径, /data/work/web/optimus-mobile 路径真实是软链接指向最新的

    /data/work/release/optimus-mobile/optimus-mobile.27

    7. 如果27版本刚发完生产,测试发现问题,需要马上回退,回退方法只需要修改软链接指向:

    # 进入optimus-mobile正式版本目录文件夹上级
    cd /data/work/web/
    # 删除软链接
    rm optimus-mobile
    # 新建软链接,指向上一个版本号25
    ln -s /data/work/release/optimus-mobile/optimus-mobile.25 optimus-mobile

    完毕~~~~~~~~~~~~~~~~~~~~~~~~

  • 相关阅读:
    httpclient + TestNG 接口自动测试 第二章
    httpclient + TestNG 接口自动测试 第一章
    Kafka-manager启动命令
    多台服务器搭建Spark集群
    Scala学习 -- 基础语法
    Spark学习 -- RDD
    Spark 学习
    Angular constructor和OnInit的区别和适用场景
    TypeScript基础学习 —— 变量声明
    TypeScript基础学习 —— 基础类型
  • 原文地址:https://www.cnblogs.com/mhl1003/p/9492966.html
Copyright © 2020-2023  润新知