#!/bin/bash echo "--------------------------------------" #export MODULE_VERSION=$(xmllint --xpath "/*[local-name()='project']/*[local-name()='version']/text()" pom.xml) export MODULE_VERSION=$(xmllint --xpath "/*[local-name()='project']/*[local-name()='properties']/*[local-name()='revision']/text()" pom.xml) #export SPRING_BOOT_VERSION=3.2.5 export HUB_PROJECT=qdxwl export MODULE_START=. export NAMESPACE=qdxwl #export MODULE_NAME=$(xmllint --xpath "/*[local-name()='project']/*[local-name()='artifactId']/text()" pom.xml) export MODULE_NAME=middleware-agent export TRIMMED_MESSAGE="" export GIT_VERSION="" export DIR_DEPLOY="deploy" init() { echo "设置项目基本信息" # export JAVA_HOME=/nasdata/jenkins/tools/jdk-17.0.6 echo "-------------JDK 环境变量 JAVA_HOME: ${JAVA_HOME}" docker login -u cmaqb -p "${cmaqb}" hub.komect.com:10443 echo "-------------登陆 harbub" LATEST_COMMIT_MESSAGE=$(git log -1 --pretty=%B) TRIMMED_MESSAGE=$(echo "${LATEST_COMMIT_MESSAGE}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') echo "-------------获取 git message ${TRIMMED_MESSAGE}" GIT_VERSION=$(git describe --abbrev=8 --tags --always) echo "-------------获取 git abbrev ${GIT_VERSION}" } download_kubernetes_config() { # svn export --force http://svn.komect.net/aqb/YJSP/docs/工程/能力平台/4实现文档/cicd/kube/kube-config.yml ./ --username cmaqb --password ${cmaqb} --no-auth-cache echo "-------------获取 kube-config.yml" } deploy(){ echo "mvn -v" mvn -v echo "部署 ${MODULE_NAME}" mvn clean install -Dmaven.test.skip # 检查Maven命令的退出状态 if [ $? -eq 0 ]; then echo "Maven build succeeded." else echo "Maven build failed." exit 1 fi # mvn spring-boot:build-image -f ${MODULE_START}/pom.xml mvn -f "${MODULE_START}/pom.xml" clean -Dmaven.test.skip=true org.springframework.boot:spring-boot-maven-plugin:build-image # mvn -f "${MODULE_START}/pom.xml" clean -Dmaven.test.skip=true org.springframework.boot:spring-boot-maven-plugin:"${SPRING_BOOT_VERSION}":build-image export IMAGE=hub.komect.com:10443/"${HUB_PROJECT}/${MODULE_NAME}:${MODULE_VERSION}-${GIT_VERSION}" echo "模块名称 ${MODULE_NAME}, 镜像名称 ${IMAGE}" docker push "${IMAGE}" # 如果存在application.properties,潜在的密文内容,做base64编码 # export SECRET_BASE64_DATA="" # if [ -e "./src/main/resources/application-dev.properties" ]; then # export SECRET_BASE64_DATA=$(base64 -w 0 ./src/main/resources/application-dev.properties) # fi # 存在configmap.yml,则执行configmap部署 if [ -e "k8s/${DIR_DEPLOY}/configmap.yml" ]; then envsubst < k8s/${DIR_DEPLOY}/configmap.yml | kubectl apply --kubeconfig=k8s/kube/kube-config.yml -f - fi # 存在secret.yml,则执行secret部署 if [ -e "k8s/${DIR_DEPLOY}/secret.yml" ]; then envsubst < k8s/${DIR_DEPLOY}/secret.yml | kubectl apply --kubeconfig=k8s/kube/kube-config.yml -f - fi envsubst < k8s/${DIR_DEPLOY}/deployment.yml | kubectl apply --kubeconfig=k8s/kube/kube-config.yml -f - # envsubst < k8s/${DIR_DEPLOY}/service.yml | kubectl apply --kubeconfig=k8s/kube/kube-config.yml -f - } init download_kubernetes_config if [[ "${TRIMMED_MESSAGE}" != *-A* ]] && [[ "${TRIMMED_MESSAGE}" == *-d* ]]; then echo "包含 -d 执行部署" deploy fi