180 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Bash
		
	
	
			
		
		
	
	
			180 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Bash
		
	
	
#!/bin/sh
 | 
						|
 | 
						|
source /etc/profile
 | 
						|
 | 
						|
## 应用名称
 | 
						|
APP_NAME=atu-data-mgr
 | 
						|
 | 
						|
## 镜像版本
 | 
						|
VERSION=3.0-SNAPSHOT
 | 
						|
 | 
						|
## 公司名称
 | 
						|
corporation=gzrdc
 | 
						|
 | 
						|
NACOS_SPACE=UI-DEV
 | 
						|
NACOS_URL=158.1.12.237:8848
 | 
						|
JVM=256M
 | 
						|
PROFILE=dev
 | 
						|
 | 
						|
## 镜像仓库配置
 | 
						|
DOCKER_REGISTRY=harbor.hzbtest:8443
 | 
						|
 | 
						|
##dockerfile 文件名配置
 | 
						|
FILE_NAME=Dockerfile
 | 
						|
while getopts "a:v:d:f:n:u:s:p:" arg
 | 
						|
do
 | 
						|
  case $arg in
 | 
						|
    a)
 | 
						|
      echo "set APP_NAME=$OPTARG"
 | 
						|
      APP_NAME=$OPTARG
 | 
						|
      ;;
 | 
						|
    v)
 | 
						|
      echo "VERSION=$OPTARG"
 | 
						|
      VERSION=$OPTARG
 | 
						|
      ;;
 | 
						|
    d)
 | 
						|
      echo "set DOCKER_REGISTRY=$OPTARG"
 | 
						|
      DOCKER_REGISTRY=$OPTARG
 | 
						|
      ;;
 | 
						|
    f)
 | 
						|
      echo "set FILE_NAME=$OPTARG"
 | 
						|
      FILE_NAME=$OPTARG
 | 
						|
      ;;
 | 
						|
    n)
 | 
						|
      echo "set NACOS_SPACE=$OPTARG"
 | 
						|
      NACOS_SPACE=$OPTARG
 | 
						|
      ;;
 | 
						|
    u)
 | 
						|
      echo "set NACOS_URL=$OPTARG"
 | 
						|
      NACOS_URL=$OPTARG
 | 
						|
      ;;
 | 
						|
    s)
 | 
						|
      echo "set JVM=$OPTARG"
 | 
						|
      JVM=$OPTARG
 | 
						|
      ;;
 | 
						|
    p)
 | 
						|
      echo "set PROFILE=$OPTARG"
 | 
						|
      PROFILE=$OPTARG
 | 
						|
      ;;
 | 
						|
    ?)
 | 
						|
      echo "unkown argument: $? $OPTARG "
 | 
						|
      exit 1
 | 
						|
      ;;
 | 
						|
  esac
 | 
						|
done
 | 
						|
 | 
						|
 | 
						|
TAG_NAME=${DOCKER_REGISTRY}/${corporation}/${APP_NAME}
 | 
						|
## deployment yaml
 | 
						|
DEPLOYMENT_YAML=${APP_NAME}.deployment.yaml
 | 
						|
 | 
						|
shift $((OPTIND-1))
 | 
						|
 | 
						|
clean_Container() {
 | 
						|
  ## 获取运行 容器ID
 | 
						|
  RUN_ID=$(docker ps |grep ${APP_NAME}|awk '{print $1}')
 | 
						|
 | 
						|
  ## 先停止容器
 | 
						|
  if [ "${RUN_ID}" = "" ]; then
 | 
						|
    echo "Container ${APP_NAME} is not starting "
 | 
						|
  else
 | 
						|
    ## 停止 docker容器
 | 
						|
    docker stop ${RUN_ID}
 | 
						|
    echo "Container ${APP_NAME} , ID: ${RUN_ID} is stopped   "
 | 
						|
  fi
 | 
						|
 | 
						|
  ## 获取已停止 容器ID
 | 
						|
  STOP_ID=$(docker ps -a |grep ${APP_NAME}|awk '{print $1}')
 | 
						|
  ## 删除容器
 | 
						|
  if [ "${STOP_ID}" = "" ]; then
 | 
						|
    echo "Container ${APP_NAME} is not exist"
 | 
						|
  else
 | 
						|
    ## 移除 docker容器
 | 
						|
    docker rm -v ${STOP_ID}
 | 
						|
    echo "Remove container ${APP_NAME} , ID: ${STOP_ID}  "
 | 
						|
  fi
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
clean_Image() {
 | 
						|
  ## 获取  镜像ID
 | 
						|
  IMG_ID=$(docker images |grep ${APP_NAME}|awk '{print $3}')
 | 
						|
 | 
						|
  if [ "${IMG_ID}" = "" ]; then
 | 
						|
    echo "Image ${TAG_NAME} is not exist "
 | 
						|
  else
 | 
						|
    ## 移除 docker镜像
 | 
						|
    docker rmi ${TAG_NAME}
 | 
						|
    echo "Remove image ${TAG_NAME} , ID: ${IMG_ID}  "
 | 
						|
  fi
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 get_agent(){
 | 
						|
  ## 获取agent 文件
 | 
						|
  mkdir -p target/dist/trace-otel/
 | 
						|
  wget -P target/dist/trace-otel/ http://devops.hzbtest:38081/repository/raw-distribution/rdc/uts/core/hzb-otel-javaagent.jar
 | 
						|
  wget -P target/dist/trace-otel/ http://158.1.0.78:8081/repository/raw-distribution/rdc/uts/core/trace-otel.properties
 | 
						|
  sed -i "s?SUBSYS_ZZZ?SUBSYS_ATU_DATAM?g" target/dist/trace-otel/trace-otel.properties
 | 
						|
  ## 添加jacoco的agent
 | 
						|
  cp -r /home/northking/agent/jacoco-0.8.7 target/dist/
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
for command in $*
 | 
						|
do
 | 
						|
  echo "execute : ${command}"
 | 
						|
 | 
						|
  case "${command}" in
 | 
						|
    clean)
 | 
						|
      clean_Container
 | 
						|
      clean_Image
 | 
						|
    ;;
 | 
						|
    build)
 | 
						|
      $0 clean
 | 
						|
      mvn --update-snapshots clean package
 | 
						|
      get_agent
 | 
						|
      ## 创建镜像
 | 
						|
      docker build --build-arg SIZE=${JVM} --build-arg PROFILE=${PROFILE} --build-arg SPACE=${NACOS_SPACE} --build-arg URL=${NACOS_URL} -f ${FILE_NAME}  -t ${TAG_NAME} target/
 | 
						|
    ;;
 | 
						|
    debug)
 | 
						|
      clean_Container
 | 
						|
 | 
						|
      docker run -itd --net=host --privileged=true --name ${APP_NAME} ${TAG_NAME}
 | 
						|
      sleep 2
 | 
						|
      ## 输出容器日志
 | 
						|
      RUN_ID=$(docker ps -a |grep ${APP_NAME}|awk '{print $1}')
 | 
						|
      docker logs -f -t ${RUN_ID}
 | 
						|
    ;;
 | 
						|
    push)
 | 
						|
      docker push ${TAG_NAME}
 | 
						|
      docker tag ${TAG_NAME} ${TAG_NAME}:${VERSION}
 | 
						|
      docker push ${TAG_NAME}:${VERSION}
 | 
						|
      docker rmi -f ${TAG_NAME}
 | 
						|
      docker rmi -f ${TAG_NAME}:${VERSION}
 | 
						|
    ;;
 | 
						|
    pull)
 | 
						|
      $0 clean
 | 
						|
      docker pull ${TAG_NAME}
 | 
						|
    ;;
 | 
						|
    deploy)
 | 
						|
      kubectl delete -f ${DEPLOYMENT_YAML}
 | 
						|
      sleep 2
 | 
						|
      kubectl apply -f ${DEPLOYMENT_YAML}
 | 
						|
      sleep 2
 | 
						|
    ;;
 | 
						|
    logs)
 | 
						|
      for pod in $(kubectl -n cctp get pod |grep ${APP_NAME}|awk '{print $1}')
 | 
						|
      do
 | 
						|
        echo "get logs by pod=${pod}"
 | 
						|
        kubectl -n cctp logs -f --tail=200 --follow=false ${pod}
 | 
						|
      done
 | 
						|
    ;;
 | 
						|
   *)
 | 
						|
   echo "Usage: $0 {clean|build|debug|push|deploy|logs}"
 | 
						|
   exit 1
 | 
						|
  esac
 | 
						|
done
 | 
						|
 | 
						|
exit 0
 |