参考脚本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 --------------------"
©2019 Somore 豫ICP备19009951号 sqlixiaoli@163.com