参考: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 "::"