一 创建一个项目

二 项目配置
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
最后效果截图

近期评论