|
@@ -3,7 +3,7 @@ pipeline {
|
|
|
|
|
|
parameters {
|
|
parameters {
|
|
choice(name: 'env', choices: ['dev', 'test', 'prod'], description: '部署环境(dev/test/prod)')
|
|
choice(name: 'env', choices: ['dev', 'test', 'prod'], description: '部署环境(dev/test/prod)')
|
|
- string(name: 'NAMESPACE', defaultValue: 'hfln-dev', description: 'Kubernetes 命名空间')
|
|
|
|
|
|
+ string(name: 'NAMESPACE', defaultValue: 'gateway', description: 'Kubernetes 命名空间')
|
|
}
|
|
}
|
|
|
|
|
|
environment {
|
|
environment {
|
|
@@ -57,11 +57,56 @@ pipeline {
|
|
script {
|
|
script {
|
|
def imageTag = "${HARBOR_HOST}/${params.env}/${PROJECT_NAME}:${BUILD_NUMBER}"
|
|
def imageTag = "${HARBOR_HOST}/${params.env}/${PROJECT_NAME}:${BUILD_NUMBER}"
|
|
echo ">>> 部署到 Kubernetes,命名空间:${params.NAMESPACE}"
|
|
echo ">>> 部署到 Kubernetes,命名空间:${params.NAMESPACE}"
|
|
|
|
+
|
|
sh """
|
|
sh """
|
|
export KUBECONFIG=${KUBECONFIG_PATH}
|
|
export KUBECONFIG=${KUBECONFIG_PATH}
|
|
- kubectl set image deployment/${PROJECT_NAME} ${PROJECT_NAME}=${imageTag} -n ${params.NAMESPACE}
|
|
|
|
|
|
+
|
|
|
|
+ # 创建命名空间(如果不存在)
|
|
|
|
+ kubectl get ns ${params.NAMESPACE} || kubectl create ns ${params.NAMESPACE}
|
|
|
|
+
|
|
|
|
+ # 应用 Deployment(2 副本)
|
|
|
|
+ kubectl apply -n ${params.NAMESPACE} -f - <<EOF
|
|
|
|
+apiVersion: apps/v1
|
|
|
|
+kind: Deployment
|
|
|
|
+metadata:
|
|
|
|
+ name: ${PROJECT_NAME}
|
|
|
|
+spec:
|
|
|
|
+ replicas: 2
|
|
|
|
+ selector:
|
|
|
|
+ matchLabels:
|
|
|
|
+ app: ${PROJECT_NAME}
|
|
|
|
+ template:
|
|
|
|
+ metadata:
|
|
|
|
+ labels:
|
|
|
|
+ app: ${PROJECT_NAME}
|
|
|
|
+ spec:
|
|
|
|
+ containers:
|
|
|
|
+ - name: ${PROJECT_NAME}
|
|
|
|
+ image: ${imageTag}
|
|
|
|
+ ports:
|
|
|
|
+ - containerPort: 8080
|
|
|
|
+ env:
|
|
|
|
+ - name: SPRING_PROFILES_ACTIVE
|
|
|
|
+ value: "${params.env}"
|
|
|
|
+EOF
|
|
|
|
+
|
|
|
|
+ # 应用 NodePort Service(暴露端口为 30082)
|
|
|
|
+ kubectl apply -n ${params.NAMESPACE} -f - <<EOF
|
|
|
|
+apiVersion: v1
|
|
|
|
+kind: Service
|
|
|
|
+metadata:
|
|
|
|
+ name: ${PROJECT_NAME}
|
|
|
|
+spec:
|
|
|
|
+ type: NodePort
|
|
|
|
+ selector:
|
|
|
|
+ app: ${PROJECT_NAME}
|
|
|
|
+ ports:
|
|
|
|
+ - port: 80
|
|
|
|
+ targetPort: 8080
|
|
|
|
+ nodePort: 30082
|
|
|
|
+EOF
|
|
"""
|
|
"""
|
|
- echo ">>> 部署完成 ✅"
|
|
|
|
|
|
+ echo ">>> 部署完成 ✅,请访问:http://8.130.28.21:30082/"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|