由于开发项目代码时间太久远,太老旧,有的是以前的项目,开发直接用直接的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创建备份目录,然后将文件拷到备份目录,回滚就从备份目录拷回到项目目录