背景:测试环境最小化,docker一键打包部署已不适用,需要在服务器git clone代码,mvn package打包;
把所有零散命令封装在shell脚本使用,通过参数传递,就不要一个一个名字输入来执行所有步骤(适合初学)
#!/bin/bash
#定义log输出路径
#logdir="/var/log/pack"
#logfile="$logdir/$makepath.log"
#修改为自己常用的打包路径
workspace="/data1/gitwar"
#git下载参数录入
read -p "请依次输入clone路径 git地址 git分支 war包名称 编译路径(git项目名称) 空格隔开:" workspace gitaddr branch appname makepath
#定义log输出路径
logdir="/var/log/pack"
logfile="$logdir/$makepath.log"
mkdir -p $workspace $logdir
cd $workspace
folder=`find . -name $makepath | head -1`
if [ -z $folder ]
then
echo -e "\n$makepath项目不存在 \n"
echo -e "开始git clone下载$makepath \n"
git clone -b $branch $gitaddr &>> $logfile
else
echo -e "\n删除已存在的$makepath项目 \n"
rm -rf $workspace/$makepath
echo -e "开始git clone下载$makepath \n"
git clone -b $branch $gitaddr &>> $logfile
fi
folder2=`find . -name $makepath |head -1`
if [ -z $folder2 ]
then
echo -e "$makepath git clone 失败!\n" && tail -50f $logfile
exit 0
else
echo -e "$makepath项目 git clone 成功!\n"
cd $workspace/$makepath/
echo -e "开始构建$appname包 \n"
starttime=`date +'%Y-%m-%d %H:%M:%S'`
/usr/local/maven/bin/mvn clean package -U -P product -Dmaven.test.skip=true &>> $logfile
endtime=`date +'%Y-%m-%d %H:%M:%S'`
start_seconds=$(date --date="$starttime" +%s);
end_seconds=$(date --date="$endtime" +%s);
echo -e "本次运行时间: "$((end_seconds-start_seconds))"s \n"
fi
war=`find $workspace -name $appname`
if [[ $war =~ $appname ]]
then
echo -e "war包构建成功! \n"
tail -n 16 $logfile
if [ $1 ]
then
echo -e "\n打包上预发布\n"
find $workspace/$makepath -name '*.war' -ok cp {} /data/deploy \;
exit 0
fi
else
echo -e "war包构建失败! \n" && tail -n 50 $logfile
exit 0
fi
示例:
[root@centos130 data]# package 请依次输入clone路径 git地址 git分支 war包路径 编译路径(git项目名称) 空格隔开:/data1/gitwar [email protected]:base-dev/account.git dev-delay2 account-service.war account 删除已存在的account项目文件夹 开始git clone下载account/account-service.war... account git clone 成功! 开始构建account-service.war包 war包构建成功! [root@centos130 data]# |