Jenkins自动部署与回滚

Deploy发布的思路:

用户无需填写 Version  直接选择对应的项目和 Deploy 发布即可,会自动生成一个 项目名+构建时间 的备份文件

多人使用Jenkins构建的时候会不知道 Version 要填什么  而且本人不喜欢使用 Version 这个变量

Rollback回退的思路:

选择Rollback  选择对应的回退版本即可

 

安装 Active Choices Plug-in 插 件

我这是安装好的  如果没安装 会有安装选项  安装完启用即可

 

 

配置参数化构建

配置 Active Choices Parameter

 

填写名字 和参数选项 我配置的是多项目实例的

return [
  "projectName1",  #注意这里有个逗号
  "projectName2",
  "projectName3"
]

 

 

再添加一个 Active Choices Parameter 配置发布和回滚参数

return [
  "Deploy",
  "Rollback"
]

 

 

 

配置Active Choices Reactive Parameter

填写名字和指定备份脚本的存放的路径

备份是放在Jenkins服务器上的

# 指定当前job的备份文件夹 注意这里不能使用${WORKSPACE}参数 但是可以使用Active Choices Parameter定义的参数如上面的${projectName}
path="/var/jenkins_home/workspace/project/${projectName}/backup/"
tags=['bash','-c',"ls -t1 ${path}"].execute().text.readLines()
 
if (Status.equals("Rollback")) {
if (projectName.equals("projectName1")){
 return tags
}
if (projectName.equals("projectName2")){
 return tags
}
if (projectName.equals("projectName3")){
 return tags
}
} 

 指定上面Active Choices Parameter 定义的参数 多个参数中间用逗号分隔

 

编辑shell 实现发布和回滚

我的项目是java 脚本如下  并保留3个备份  超过3个会自动删除最旧的

echo "回滚"
path="${WORKSPACE}/${projectName}/back_up/${projectName}-${BUILD_TIMESTAMP}"    

case $Status in
    Deploy)
    echo "Status:$Status"

    mkdir -p  $path
    cp  -r  ${WORKSPACE}/${projectName}/target/xjar     $path/ 
    cp  -r  ${WORKSPACE}/${projectName}/target/lib     $path/ 
    cp  -r  ${WORKSPACE}/${projectName}/target/${projectName}*.jar     $path/ 

    echo "开始删除超过3个的旧文件"
    backup_path="${WORKSPACE}/${projectName}/back_up"
    backup_copies=3
    FILENUM=`ls -lrt ${WORKSPACE}/${projectName}/back_up/ | grep ${projectName}*| wc -l`
    if  [ ${FILENUM} -gt ${backup_copies} ];
    then
            OLDEST_File=`ls -lrt ${backup_path}| grep ${projectName}* |awk '{print $9}' | head -1`
            echo "最旧的文件夹: ${OLDEST_File}"
            rm -rf ${backup_path}/${OLDEST_File}
            echo "文件夹: ${OLDEST_File}已删除"
    fi
    ;;
    Rollback)
    echo "Status:$Status"
    
    cp  -rf  ${WORKSPACE}/${projectName}/back_up/${RollbackVersion}/*  ${WORKSPACE}/${projectName}/target/
    
    ;;
esac

 

 

posted @ 2023-06-06 15:58  买定灬离手  阅读(1236)  评论(0编辑  收藏  举报