Jenkins · 2021-09-15

jenkins添加构建和代码回滚

一 创建一个项目

二 项目配置

1 选中参数化构建构建过程

① 配置Git参数(用来选择构建时的分支或版本)

②选项参数(用来区分是正常构建还是代码回滚)

③ 字符参数(代码回滚时选择恢复代码的版本ID)

三 源码管理

这里就开始配置构建时拉取的仓库地址了!

四 构建

选着执行shell命令(献上我的源码)

构建时备份和回滚需要用到的代码

##${JOB_NAME}:jenkins中项目名称变量
path_l=/var/lib/jenkins/workspace
# 定义名称
program_name=${JOB_NAME}
# 项目压缩名称
program_filename=${program_name}.tar.gz
# 项目路径 
target_path="$path_l/${JOB_NAME}/"

# 备份路径
back_path="$path_l/back/${JOB_NAME}/"

if [ -f "${back_path}${program_filename}" ];then
    rm -f ${back_path}${program_filename}
fi 

# 备份路径不存在则创建
if [ ! -d ${back_path} ]; then 
    mkdir -p $back_path
    echo "$back_path 创建成功"
fi
# 当前构建ID的路径
back_path_num="${back_path}${BUILD_NUMBER}"

# 备份路径不存在则创建
if [ ! -d ${back_path_num} ]; then 
    mkdir -p $back_path_num
    echo "$back_path_num 创建成功"
fi


case $status in 
    deploy)
         echo "开始备份项目..."
         cd $path_l
         ##存入构建的历史版本记录
         echo "${BUILD_NUMBER}" > ${JOB_NAME}/jk-version.txt
        # 压缩打包
        tar -zcf ${program_filename}  ${program_name}
        # 将压缩好的程序移动到备份文件夹里
       mv ${program_filename} ${back_path_num}
        echo "构建完成"
        echo "当前构建的版本或分支:${branch}"
        ls  back/${JOB_NAME}
    ;;

    rollback)
        echo "版本回滚.回滚至 $version 版本"
        cd $path_l
        ##判断回滚版本是否存在
        ls  back/${JOB_NAME}/${version} &> /dev/null || rm -rf ${back_path_num}
        ls  back/${JOB_NAME}/${version} &> /dev/null || echo "版本不存在"
        ls  back/${JOB_NAME}/${version} &> /dev/null || ls  back/${JOB_NAME}
        ls  back/${JOB_NAME}/${version}
        # 回滚的版本也复制到当前版本的文件夹里,方便下次回滚。
        # 压缩打包
        tar -zcf ${program_filename}  ${program_name}
        # 将压缩好的程序移动到备份文件夹里
        mv ${program_filename} ${back_path_num}
        ##清理旧文件
        rm -rf ${JOB_NAME}
        #进入旧备份版本目录下
        cd "${back_path}${version}" 
        ##将旧代码解压还原
        tar -xf ${program_name}.tar.gz  -C $path_l
        cd $path_l
        ##当前版本
        echo "${version}" > ${JOB_NAME}/jk-version.txt
    ;;
esac

备份代码管理shell

# 项目备份,保留 10 个版本的历史数据。
big_file_num=10
file_dir=/var/lib/jenkins/workspace/back/${JOB_NAME}
date=$(date "+%Y%m%d-%H%M%S")

cd $file_dir
file_num=$(ls -l | grep '^d' | wc -l)

while [ $file_num -gt $big_file_num ]
do
    old_file=$(ls -rt | head -1)
    rm -rf "${file_dir}/$old_file"
    let "file_num--"
done 
##显示已有构建的备份历史版本
echo "现有构建备份版本如下:"
ls  $file_dir

最后效果截图

Ex 2.1