Bläddra i källkod

修改暴露端口

yangliu 2 månader sedan
förälder
incheckning
b5e4a27369
1 ändrade filer med 30 tillägg och 24 borttagningar
  1. 30 24
      Jenkinsfile

+ 30 - 24
Jenkinsfile

@@ -11,11 +11,14 @@ pipeline {
         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 {
@@ -26,11 +29,11 @@ pipeline {
             }
         }
 
-        stage('📦 Maven 构建项目') {
+        stage('📦 Maven 构建') {
             steps {
                 script {
-                    echo ">>> 开始构建模块 ${MODULE_NAME}"
-                    sh "${MAVEN_HOME}/mvn clean package -DskipTests"
+                    echo ">>> 构建模块 ${MODULE_NAME}"
+                    sh "${MAVEN_HOME}/mvn clean package -pl ${MODULE_NAME} -am -DskipTests"
                     echo ">>> 构建完成 ✅"
                 }
             }
@@ -40,10 +43,10 @@ pipeline {
             steps {
                 script {
                     def imageTag = "${HARBOR_HOST}/${params.env}/${PROJECT_NAME}:${BUILD_NUMBER}"
-                    echo ">>> 构建 Docker 镜像: ${imageTag}"
+                    echo ">>> 构建镜像: ${imageTag}"
                     sh """
-                        docker login -u admin -p Hfln@1024 ${HARBOR_HOST}
-                        docker build --build-arg env=${params.env} -t ${imageTag} .
+                        docker login -u ${HARBOR_USERNAME} -p ${HARBOR_PASSWORD} ${HARBOR_HOST}
+                        docker build -t ${imageTag} --build-arg env=${params.env} .
                         docker push ${imageTag}
                         docker rmi ${imageTag}
                     """
@@ -56,16 +59,24 @@ pipeline {
             steps {
                 script {
                     def imageTag = "${HARBOR_HOST}/${params.env}/${PROJECT_NAME}:${BUILD_NUMBER}"
-                    echo ">>> 部署到 Kubernetes,命名空间:${params.NAMESPACE}"
+                    echo ">>> 开始部署到 Kubernetes:namespace=${params.NAMESPACE}"
 
                     sh """
                         export KUBECONFIG=${KUBECONFIG_PATH}
 
-                        # 创建命名空间(如果不存在)
+                        # 创建 namespace(如果不存在)
                         kubectl get ns ${params.NAMESPACE} || kubectl create ns ${params.NAMESPACE}
 
-                        # 应用 Deployment(2 副本)
-                        kubectl apply -n ${params.NAMESPACE} -f - <<EOF
+                        # 创建 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 -
 apiVersion: apps/v1
 kind: Deployment
 metadata:
@@ -88,25 +99,24 @@ spec:
         env:
         - name: SPRING_PROFILES_ACTIVE
           value: "${params.env}"
-EOF
-
-                        # 应用 NodePort Service(暴露端口为 30085)
-                        kubectl apply -n ${params.NAMESPACE} -f - <<EOF
+      imagePullSecrets:
+      - name: harbor-secret
+---
 apiVersion: v1
 kind: Service
 metadata:
   name: ${PROJECT_NAME}
 spec:
-  type: NodePort
   selector:
     app: ${PROJECT_NAME}
+  type: NodePort
   ports:
   - port: 80
     targetPort: 8080
     nodePort: 30085
 EOF
                     """
-                    echo ">>> 部署完成 ✅,请访问:http://47.121.135.46:30085/"
+                    echo ">>> ✅ 部署成功,服务地址:http://<任意NodeIP>:30085/"
                 }
             }
         }
@@ -114,27 +124,23 @@ EOF
 
     post {
         success {
+            echo "🎉 构建 & 部署成功 ✅"
             script {
-                echo "✅ 构建 & 部署成功 🎉"
-
-                // 清理本地旧镜像(仅保留最新3个)
+                // 清理本地旧镜像,仅保留最近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()
         }
     }