yangliu 2 місяців тому
батько
коміт
3c59a726ec
1 змінених файлів з 26 додано та 33 видалено
  1. 26 33
      Jenkinsfile

+ 26 - 33
Jenkinsfile

@@ -8,17 +8,13 @@ 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'
-        HARBOR_USERNAME    = 'admin'
-        HARBOR_PASSWORD    = 'Hfln@1024'
         KUBECONFIG_PATH    = '/root/.kube/config'
         SPRING_PROFILES_ACTIVE = "${params.env}"
     }
 
     stages {
-
         stage('🧬 拉取 Git 代码') {
             steps {
                 script {
@@ -29,11 +25,11 @@ pipeline {
             }
         }
 
-        stage('📦 Maven 构建') {
+        stage('📦 Maven 构建项目') {
             steps {
                 script {
-                    echo ">>> 构建模块 ${MODULE_NAME}"
-                    sh "${MAVEN_HOME}/mvn clean package -pl ${MODULE_NAME} -am -DskipTests"
+                    echo ">>> 开始构建模块 ${PROJECT_NAME}"
+                    sh "${MAVEN_HOME}/mvn clean package -DskipTests"
                     echo ">>> 构建完成 ✅"
                 }
             }
@@ -43,10 +39,10 @@ pipeline {
             steps {
                 script {
                     def imageTag = "${HARBOR_HOST}/${params.env}/${PROJECT_NAME}:${BUILD_NUMBER}"
-                    echo ">>> 构建镜像: ${imageTag}"
+                    echo ">>> 构建 Docker 镜像: ${imageTag}"
                     sh """
-                        docker login -u ${HARBOR_USERNAME} -p ${HARBOR_PASSWORD} ${HARBOR_HOST}
-                        docker build -t ${imageTag} --build-arg env=${params.env} .
+                        docker login -u admin -p Hfln@1024 ${HARBOR_HOST}
+                        docker build --build-arg env=${params.env} -t ${imageTag} .
                         docker push ${imageTag}
                         docker rmi ${imageTag}
                     """
@@ -59,24 +55,16 @@ pipeline {
             steps {
                 script {
                     def imageTag = "${HARBOR_HOST}/${params.env}/${PROJECT_NAME}:${BUILD_NUMBER}"
-                    echo ">>> 开始部署到 Kubernetes:namespace=${params.NAMESPACE}"
+                    echo ">>> 部署到 Kubernetes,命名空间:${params.NAMESPACE}"
 
                     sh """
                         export KUBECONFIG=${KUBECONFIG_PATH}
 
-                        # 创建 namespace(如果不存在)
+                        # 创建命名空间(如果不存在)
                         kubectl get ns ${params.NAMESPACE} || kubectl create ns ${params.NAMESPACE}
 
-                        # 创建 Harbor 镜像拉取密钥(如果不存在)
-                        kubectl get secret harbor-secret -n ${params.NAMESPACE} || kubectl create secret docker-registry harbor-secret \
-                          --docker-server=${HARBOR_HOST} \
-                          --docker-username=${HARBOR_USERNAME} \
-                          --docker-password=${HARBOR_PASSWORD} \
-                          --docker-email=admin@hfln.local \
-                          -n ${params.NAMESPACE}
-
-                        # 应用 Deployment + Service
-                        cat <<EOF | kubectl apply -n ${params.NAMESPACE} -f -
+                        # 应用 Deployment(2 副本)
+                        kubectl apply -n ${params.NAMESPACE} -f - <<EOF
 apiVersion: apps/v1
 kind: Deployment
 metadata:
@@ -95,28 +83,29 @@ spec:
       - name: ${PROJECT_NAME}
         image: ${imageTag}
         ports:
-        - containerPort: 8080
+        - containerPort: 8090
         env:
         - name: SPRING_PROFILES_ACTIVE
           value: "${params.env}"
-      imagePullSecrets:
-      - name: harbor-secret
----
+EOF
+
+                        # 应用 NodePort Service(暴露端口为 30085)
+                        kubectl apply -n ${params.NAMESPACE} -f - <<EOF
 apiVersion: v1
 kind: Service
 metadata:
   name: ${PROJECT_NAME}
 spec:
+  type: NodePort
   selector:
     app: ${PROJECT_NAME}
-  type: NodePort
   ports:
   - port: 80
-    targetPort: 8080
+    targetPort: 8090
     nodePort: 30085
 EOF
                     """
-                    echo ">>> ✅ 部署成功,服务地址:http://<任意NodeIP>:30085/"
+                    echo ">>> 部署完成 ✅,请访问:http://<任意节点IP>:30085/"
                 }
             }
         }
@@ -124,23 +113,27 @@ EOF
 
     post {
         success {
-            echo "🎉 构建 & 部署成功 ✅"
             script {
-                // 清理本地旧镜像,仅保留最近3个
+                echo "✅ 构建 & 部署成功 🎉"
+
+                // 清理本地旧镜像(仅保留最新3个)
                 sh """
                     docker images --format '{{.Repository}}:{{.Tag}} {{.CreatedAt}}' | \
                     grep '${HARBOR_HOST}/${params.env}/${PROJECT_NAME}:' | \
                     sort -rk2 | \
                     tail -n +4 | \
-                    awk '{print \$1}' | xargs -r docker rmi || true
+                    awk '{print \$1}' | \
+                    xargs -r docker rmi || true
                 """
             }
         }
+
         failure {
             echo "❌ 构建或部署失败,请检查日志。"
         }
+
         always {
-            echo "🧼 清理 Jenkins 工作..."
+            echo "🧼 清理 Jenkins 工作目录..."
             cleanWs()
         }
     }