由于开发项目代码时间太久远,太老旧,有的是以前的项目,开发直接用直接的idea编译的,要做成maven格式或者ant格式的太麻烦,我这边直接就让开发自己把编译过的文件直接上传到我指定的路径,这里我直接把jenkins的工作目录设置为共享目录,让开发自行将文件上传到工作目录,我这边再从目录直接发布到远程主机。具体操作如下: 1、安装samba-server服务,将jenkins主机配置成共享服务主机 2、新建自由风格项目 3、参数化构建,将项目名,主机等配置为变量 4、配置在jenkins执行脚本

update_path=$WORKSPACE/$project/Onlyadd
back_path=/opt/backup/$project/${BUILD_NUMBER}

update(){
echo "Status:$Status"           
if [ -d $back_path ];
  then
    echo "The files is already  exists "
else
    mkdir -p  $back_path
fi
for k in `cat $update_path/path.txt`
  do 
    ssh $host [ -f /home/$tomcat_name/webapps/$project/$k -o -d /home/$tomcat_name/webapps/$project/$k ] && scp $host:/home/$tomcat_name/webapps/$project/$k $back_path/
done

for k in `cat $update_path/path.txt`
do scp  $update_path/`basename $k` $host:/home/$tomcat_name/webapps/$project/$k
done 

if [ $Reboot == "Yes" ];
then 
  PID=`ssh $host ps -wauxw|grep $tomcat_name|grep -v grep|awk '{print $2}'`
#  echo $PID
  NUM=`ssh $host ps -wauxw|grep $tomcat_name|grep -v grep|awk '{print $2}'|wc -l`
  if [ $NUM -gt 0 ];then
  ssh $host kill -9 $PID
  ssh $host sh /home/$tomcat_name/bin/startup.sh
  fi
fi
}

rollback(){

echo "Status:$Status"
echo "Version:$Version"
cd /opt/backup/$project/$Version
for k in `cat $update_path/path.txt`
do
scp `basename $k`  $host:/home/$tomcat_name/webapps/$project/$k
done
if [ $Reboot == "Yes" ];
then 
  PID=`ssh $host ps -wauxw|grep $tomcat_name|grep -v grep|awk '{print $2}'`
#  echo $PID
  NUM=`ssh $host ps -wauxw|grep $tomcat_name|grep -v grep|awk '{print $2}'|wc -l`
  if [ $NUM -gt 0 ];then
  ssh $host kill -9 $PID
  ssh $host sh /home/$tomcat_name/bin/startup.sh
  fi
fi
}

case $Status  in
  Deploy)
    update
    ;;
  Rollback)
    rollback
      ;;
  *)
  exit
      ;;
esac

配置都很简单,主要就是jenkins的参数引用,然后就是写脚本,脚本里面引用参数变量,思路就是更新前先备份文件,引用按jenkins系统变量BUILD_ID创建备份目录,然后将文件拷到备份目录,回滚就从备份目录拷回到项目目录