美文网首页CI/CD
Jenkins 备份回滚实现

Jenkins 备份回滚实现

作者: colbrze | 来源:发表于2018-11-05 16:07 被阅读157次

    准备

    • Jenkins 插件
      • Active choices
      • Conditional BuildStep

    实现

    参数化构建过程

    1. 添加基本参数

    参数化构建过程

    2. 添加 Active choices Reactive Parameter

    这一步,获取备份目录里的文件列表。


    Active choices Reactive Parameter

    Grovy Script:

    path="${jenkinsProject.workspace}/backup/"
    rollback=['bash', '-c', "ls -t1 ${path} "].execute().text.readLines()
    
    if (action.equals("RollBack")) {
      return rollback
    } else {
      return ["选择RollBack后显示"]
    }
    

    这里通过 jenkinsProject.workspace 获取 jenkins 的环境变量 WORKSPACE
    备份目录在 WORKSPACE 下的 backup 目录中。可以指定为其他目录。

    构建

    Conditional step 条件性步骤

    2A34FC1E-F3BE-4775-8C18-C5390037B7AC.png

    判断第一步中选择的操作类型,在回滚时跳过编译打包的步骤。

    备份和回滚

    8399FDE8-CCE4-49D9-ABA1-3731920BF883.png
    backup_path=${WORKSPACE}/backup
    if [ ! -d $backup_path ]; then
        mkdir $backup_path
    fi
    work_jar=${WORKSPACE}/${provider_name}/build/libs/${provider_name}-1.0.0-SNAPSHOT.jar
    if [ ! "$action" = "RollBack" ]; then
        cd ${WORKSPACE}
        branch=${gitbranch}
        back_jar=$backup_path/${JOB_NAME}-${branch/#"origin/"/}-${BUILD_NUMBER}.jar
        cp $work_jar $back_jar
        
        cd $backup_path
        total_file_num=`ls -l | grep -v 'total' | wc -l`
        if [ $total_file_num -gt 10 ];
        then
            num=`expr $total_file_num - 10`
            files=`ls -ltr | grep -v 'total' | awk '{print $9}' | head -n $num`
            echo $files | xargs rm -f
            echo "保留10个备份,删除早期备份: " $files
        fi
    else
        cp $backup_path/${rollback} $work_jar
    fi
    

    部署时,在构建完成以后,将jar包复制到备份目录下。
    回滚时,通过选择的文件名,获取对应jar包覆盖原本的jar包。
    注意修改 work_jar参数,这里使用的provider_name是一个自定义的环境变量,如果各个项目之间命名有一定的规律,可以使用自定义环境变量,来减少配置不同项目时修改的内容。

    效果

    665BA589-81BF-47D6-9BB6-D65A9DE68CF2.png 01090BFA-3B4F-4E48-BBE2-BA50BC3D94AE.png

    相关文章

      网友评论

        本文标题:Jenkins 备份回滚实现

        本文链接:https://www.haomeiwen.com/subject/plqgxxtx.html