Jelajahi Sumber

修改jenkinsfile

yangliu 2 bulan lalu
induk
melakukan
349091b12f
2 mengubah file dengan 49 tambahan dan 5 penghapusan
  1. 8 0
      .idea/.gitignore
  2. 41 5
      Jenkinsfile

+ 8 - 0
.idea/.gitignore

@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 41 - 5
Jenkinsfile

@@ -28,6 +28,7 @@ pipeline {
                     echo ">>> 环境:${params.env}, Harbor项目:${env.HARBOR_PROJECT}, K8s命名空间:${params.NAMESPACE}"
                     if (params.DOMAIN?.trim()) {
                         echo ">>> 域名:${params.DOMAIN}, TLS Secret:${params.TLS_SECRET}"
+                        echo ">>> 注意:TLS Secret 应该已经存在,请确保命名空间一致"
                     }
                 }
             }
@@ -64,7 +65,30 @@ pipeline {
             }
         }
 
-        stage('   Kubernetes 部署') {
+        stage('�� 验证 TLS Secret') {
+            when {
+                expression { params.DOMAIN?.trim() }
+            }
+            steps {
+                script {
+                    sh """
+                        export KUBECONFIG=${KUBECONFIG_PATH}
+
+                        # 验证 TLS Secret 是否存在
+                        if ! kubectl get secret ${params.TLS_SECRET} -n ${params.NAMESPACE} >/dev/null 2>&1; then
+                            echo "❌ TLS Secret '${params.TLS_SECRET}' 在命名空间 '${params.NAMESPACE}' 中不存在!"
+                            echo "请先创建 TLS Secret:"
+                            echo "kubectl create secret tls ${params.TLS_SECRET} --cert=fullchain.pem --key=privkey.pem -n ${params.NAMESPACE}"
+                            exit 1
+                        fi
+
+                        echo "✅ TLS Secret '${params.TLS_SECRET}' 验证成功"
+                    """
+                }
+            }
+        }
+
+        stage('�� Kubernetes 部署') {
             steps {
                 script {
                     def domain = params.DOMAIN?.trim()
@@ -82,6 +106,7 @@ pipeline {
 
                             # 更新 Ingress(如果提供了域名)
                             if [ -n "${domain}" ]; then
+                                echo ">>> 更新 Ingress 配置..."
                                 kubectl apply -n ${params.NAMESPACE} -f - <<EOF
 apiVersion: networking.k8s.io/v1
 kind: Ingress
@@ -115,6 +140,7 @@ EOF
                             fi
                         else
                             # 创建新的 Deployment 和 Service
+                            echo ">>> 创建新的 Deployment 和 Service..."
                             kubectl apply -n ${params.NAMESPACE} -f - <<EOF
 apiVersion: apps/v1
 kind: Deployment
@@ -151,6 +177,7 @@ EOF
 
                             # 创建 Ingress(如果提供了域名)
                             if [ -n "${domain}" ]; then
+                                echo ">>> 创建新的 Ingress..."
                                 kubectl apply -n ${params.NAMESPACE} -f - <<EOF
 apiVersion: networking.k8s.io/v1
 kind: Ingress
@@ -184,6 +211,10 @@ EOF
                             fi
                         fi
 
+                        # 等待部署完成
+                        echo ">>> 等待部署完成..."
+                        kubectl wait --for=condition=available --timeout=300s deployment/${PROJECT_NAME} -n ${params.NAMESPACE}
+
                         # 显示部署状态
                         echo ">>> 部署状态:"
                         kubectl get all -n ${params.NAMESPACE}
@@ -193,7 +224,7 @@ EOF
                         if [ -n "${domain}" ]; then
                             echo ">>> 应用部署完成!"
                             echo ">>> 访问地址:https://${domain}"
-                            echo ">>> 注意:确保域名 ${domain} 已正确解析到集群"
+                            echo ">>> 注意:确保域名 ${domain} 已正确解析到集群公网IP"
                         else
                             echo ">>> 应用部署完成!"
                             echo ">>> 注意:未配置域名,请手动配置 Ingress 或使用 NodePort 访问"
@@ -219,7 +250,7 @@ EOF
             }
         }
 
-        stage('   清理悬空镜像 <none>') {
+        stage(' 清理悬空镜像 <none>') {
             steps {
                 script {
                     sh """
@@ -230,7 +261,7 @@ EOF
             }
         }
 
-        stage('   触发 Harbor 镜像保留策略') {
+        stage(' 触发 Harbor 镜像保留策略') {
             steps {
                 script {
                     sh """
@@ -245,7 +276,12 @@ EOF
 
     post {
         success {
-            echo "✅ 构建 & 部署成功   "
+            echo "✅ 构建 & 部署成功!"
+            script {
+                if (params.DOMAIN?.trim()) {
+                    echo "🌐 应用可通过 https://${params.DOMAIN} 访问"
+                }
+            }
         }
         failure {
             echo "❌ 构建或部署失败,请检查日志"