安装在Windows上的Jenkins实现任务发布的回滚

参考:https://www.jianshu.com/p/af5fecaa8357windows

惋惜个人Jenkins是安装在windows上面的,没法直接使用bash脚本,只能用Windows的批处理指令dos指令bash

1)参数化构建过程:.net

2)配置备份脚本:code

要实现回滚,核心是要实现jar包的备份。在bash脚本中,这部分的逻辑是这么写的:blog

case $Status  in
  Deploy)
    echo "Status:$Status"
    path="${WORKSPACE}/bak/${BUILD_NUMBER}"      #建立每次要备份的目录
    if [ -d $path ];
    then
        echo "The files is already  exists "
    else
        mkdir -p  $path
    fi
    \cp -f ${WORKSPACE}/target/*.war $path        #将打包好的war包备份到相应目录,覆盖已存在的目标
    echo "Completing!"
    ;;
  Rollback)
      echo "Status:$Status"
      echo "Version:$Version"
      cd ${WORKSPACE}/bak/$Version            #进入备份目录
      \cp -f *.war ${WORKSPACE}/target/       #将备份拷贝到程序打包目录中,并覆盖以前的war包
      ;;
  *)
  exit
      ;;
esac

用Windows的批处理指令:get

set bakpath=D:\jenkinsbak\hangzhou
echo %bakpath%
if "%Status%" == "Deploy" goto deploy
if "%Status%" == "Rollback" goto rollback
:deploy
echo "Status:%Status%"
set path=%bakpath%\%BUILD_NUMBER% 
echo "the path is %path%"
if exist %path% (
echo "%path% exists"
) else (
cd %bakpath%
mkdir %BUILD_NUMBER%
echo "%path% created"
)
copy %WORKSPACE%\target\*.jar %path%
echo "Completing!"
exit
:rollback
echo "Status:%Status%"
echo "Version:%Version%"
cd %bakpath%\%Version%
copy *.jar %WORKSPACE%\target\
exit

dos指令要比bash麻烦得多,删除多余备份那部分我就懒得写了,手工删除吧。jenkins

PS:dos指令查询某个文件夹下面的文件数量:it

dir /b . | find /v /c "::"
相关文章
相关标签/搜索