|
@@ -8,11 +8,14 @@ pipeline {
|
|
|
|
|
|
environment {
|
|
|
PROJECT_NAME = 'gateway-service'
|
|
|
+ MODULE_NAME = 'gateway-service-server'
|
|
|
MAVEN_HOME = '/usr/local/apache-maven-3.9.9/bin'
|
|
|
HARBOR_HOST = '8.130.28.21:81'
|
|
|
+ KUBECONFIG_PATH = '/root/.kube/config'
|
|
|
+ NODE1_IP = '172.27.73.147'
|
|
|
+ NODE2_IP = '172.27.73.146'
|
|
|
HARBOR_USER = 'admin'
|
|
|
HARBOR_PASSWORD = 'Hfln@1024'
|
|
|
- KUBECONFIG_PATH = '/root/.kube/config'
|
|
|
SPRING_PROFILES_ACTIVE = "${params.env}"
|
|
|
}
|
|
|
|
|
@@ -30,7 +33,7 @@ pipeline {
|
|
|
stage('📦 Maven 构建项目') {
|
|
|
steps {
|
|
|
script {
|
|
|
- echo ">>> 开始构建模块 ${PROJECT_NAME}"
|
|
|
+ echo ">>> 开始构建模块 ${MODULE_NAME}"
|
|
|
sh "${MAVEN_HOME}/mvn clean package -DskipTests"
|
|
|
echo ">>> 构建完成 ✅"
|
|
|
}
|
|
@@ -53,15 +56,15 @@ pipeline {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- stage('🔍 镜像拉取测试(可选)') {
|
|
|
+ stage('🔍 测试节点能否拉取镜像') {
|
|
|
steps {
|
|
|
script {
|
|
|
def imageTag = "${HARBOR_HOST}/${params.env}/${PROJECT_NAME}:${BUILD_NUMBER}"
|
|
|
echo ">>> 测试节点能否拉取镜像..."
|
|
|
+
|
|
|
sh """
|
|
|
- # 登录节点测试拉取镜像
|
|
|
- ssh root@node1 "docker login -u ${HARBOR_USER} -p ${HARBOR_PASSWORD} ${HARBOR_HOST} && docker pull ${imageTag} || echo '[❌ 节点 node1 拉取失败]'"
|
|
|
- ssh root@node2 "docker login -u ${HARBOR_USER} -p ${HARBOR_PASSWORD} ${HARBOR_HOST} && docker pull ${imageTag} || echo '[❌ 节点 node2 拉取失败]'"
|
|
|
+ ssh root@${NODE1_IP} docker login -u ${HARBOR_USER} -p ${HARBOR_PASSWORD} ${HARBOR_HOST} && docker pull ${imageTag} || echo '[❌ 节点 node1 拉取失败]'
|
|
|
+ ssh root@${NODE2_IP} docker login -u ${HARBOR_USER} -p ${HARBOR_PASSWORD} ${HARBOR_HOST} && docker pull ${imageTag} || echo '[❌ 节点 node2 拉取失败]'
|
|
|
"""
|
|
|
}
|
|
|
}
|
|
@@ -75,11 +78,8 @@ pipeline {
|
|
|
|
|
|
sh """
|
|
|
export KUBECONFIG=${KUBECONFIG_PATH}
|
|
|
-
|
|
|
- # 创建命名空间(如果不存在)
|
|
|
kubectl get ns ${params.NAMESPACE} || kubectl create ns ${params.NAMESPACE}
|
|
|
|
|
|
- # 应用 Deployment(2 副本)
|
|
|
kubectl apply -n ${params.NAMESPACE} -f - <<EOF
|
|
|
apiVersion: apps/v1
|
|
|
kind: Deployment
|
|
@@ -95,8 +95,6 @@ spec:
|
|
|
labels:
|
|
|
app: ${PROJECT_NAME}
|
|
|
spec:
|
|
|
- imagePullSecrets:
|
|
|
- - name: harbor-secret
|
|
|
containers:
|
|
|
- name: ${PROJECT_NAME}
|
|
|
image: ${imageTag}
|
|
@@ -107,7 +105,6 @@ spec:
|
|
|
value: "${params.env}"
|
|
|
EOF
|
|
|
|
|
|
- # 应用 NodePort Service(暴露端口为 30085)
|
|
|
kubectl apply -n ${params.NAMESPACE} -f - <<EOF
|
|
|
apiVersion: v1
|
|
|
kind: Service
|
|
@@ -123,7 +120,7 @@ spec:
|
|
|
nodePort: 30085
|
|
|
EOF
|
|
|
"""
|
|
|
- echo ">>> 部署完成 ✅,请访问:http://<任意节点IP>:30085/"
|
|
|
+ echo ">>> 部署完成 ✅,请访问:http://<任一节点IP>:30085/"
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -133,8 +130,6 @@ EOF
|
|
|
success {
|
|
|
script {
|
|
|
echo "✅ 构建 & 部署成功 🎉"
|
|
|
-
|
|
|
- // 清理本地旧镜像(仅保留最新3个)
|
|
|
sh """
|
|
|
docker images --format '{{.Repository}}:{{.Tag}} {{.CreatedAt}}' | \
|
|
|
grep '${HARBOR_HOST}/${params.env}/${PROJECT_NAME}:' | \
|