#!/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