middleware_agent/k8s/autodeploy.sh

82 lines
3.3 KiB
Bash

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