参考脚本1
#!/bin/bash
path=`pwd $0`
par=$1
echo "------------------ START -------------------"
echo "pars -->$par"
pars=(${par//,/ })
gitdir=${pars[0]}
branch=${pars[1]}
workdir=${pars[2]}
mkdir -p $path/_docker/
mkdir -p $path/_publish/
echo "gitdir -->$gitdir"
echo "branch -->$branch"
echo "workdir -->$workdir"
echo "进入Git目录"
cd $path/$gitdir
echo `pwd`
echo "切换分支"
git checkout $branch
echo "拉取代码"
git pull
askstr="/$gitid/"
gitid=$(git branch -v | awk '$askstr{ print $3 }')
gitid=${gitid:0:7}
echo "获取版本ID:$branch -> $gitid"
status="publish"
cd $path/_publish
files=$(ls)
echo "$gitdir$gitid"
if [[ "$files" =~ "$gitdir$gitid" ]] ;then
status="none"
fi
if [[ "$status" == "none" ]] ;then
echo "项目无更新,不需要发布"
exit
fi
echo "进入工作目录"
cd $path/$gitdir/$workdir
files=$(ls)
type=""
if [[ "$files" =~ "pom.xml" ]] ;then
type="java"
fi
if [[ "$files" =~ "vue.config.js" ]] ;then
type="vue"
fi
echo "项目类型:$type"
vuepublish(){
staticdir=${pars[3]}
pathdir=`pwd $0`
echo " >> VUE"
echo " >> $pathdir"
echo " >> npm install"
npm i node-sass@4.14.1 --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
npm install
echo " >> 打包"
npm run build:h5
echo " >> 同步"
cmd="-auzrv $pathdir/dist/build/h5/ $staticdir/"
rsync $cmd
publishdir="$path/_publish/$gitdir$gitid"
echo " >> $publishdir"
mkdir -p "$publishdir"
exit
}
javapublish(){
imagename=${pars[3]}
podnsp=${pars[4]}
podname=${pars[5]}
echo "imagename -->$imagename"
echo "podnsp -->$podnsp"
echo "podname -->$podname"
echo " >> JAVA"
find /root/.m2/repository/com/zxdz/park/ -name "maven-metadata-rdc-releases.xml" -type f -print -exec rm -rf {} \;
find /root/.m2/repository/com/zxdz/park/ -name "maven-metadata-rdc-releases.xml.sha1" -type f -print -exec rm -rf {} \;
find /root/.m2/repository/com/zxdz/park/ -name "resolver-status.properties" -type f -print -exec rm -rf {} \;
echo " >> 项目打包"
mvn clean package
sleep 3
echo " >> 文件处理"
rm -rf "$path/_docker/$gitdir/*.jar"
cpfile="$path/$gitdir/$workdir/target/*.jar $path/_docker/$gitdir/app.jar"
echo " >> $cpfile"
cp $cpfile
cmd="-rf $path/$gitdir/$workdir/target/*.jar"
rm $cmd
echo " >> docker 打包"
cd "$path/_docker/$gitdir/"
cmd="build -t 5000/$imagename ."
docker $cmd
echo " >> 发布到仓库"
cmd="push 5000/$imagename"
docker $cmd
sleep 3
echo " >> 删除文件"
docker rmi `docker images | awk '/park-/{ print $3 }'`
sleep 3
echo " >> 重启服务"
cmd="rollout restart deployment $podname -n $podnsp"
kubectl $cmd
publishdir="$path/_publish/$gitdir$gitid"
echo " >> $publishdir"
mkdir -p "$publishdir"
exit
}
if [ "$type" == "vue" ] ;then
vuepublish
exit
fi
if [ "$type" == "java" ] ;then
javapublish
exit
fi
echo "------------------- END --------------------"