guizhong 6 سال پیش
کامیت
f72e66a19d
1فایلهای تغییر یافته به همراه77 افزوده شده و 0 حذف شده
  1. 77 0
      Jenkinsfile

+ 77 - 0
Jenkinsfile

@@ -0,0 +1,77 @@
+pipeline {
+    agent none
+    environment {
+        // 以下环境变量需要根据实际情况修改dev qa pro
+        JNLP_ENV                = 'op'      // 此处op表示,你需要将应用部署到k8s的op命名空间下
+        JNLP_TAG                = 'v1.0.1'  // 镜像版本号,如果是开发自己测试,可以默认;如果默认,每次更新镜像都会覆盖
+        JNLP_CONTAINER_PORT     = '8080'    // 实际服务端口,例如resin,端口就是8080
+        JNLP_WAR                = 'ums.war' // 项目编译后生成的包名
+        JNLP_INGRESS            = 'traefik' // tcp服务填写:haproxy;http服务填写:traefik
+        // 以下是Kubernetes deploy.yaml部署文件,默认情况下不作修改,保持默认值即可 !!!
+        JNLP_IMAGE              = "${JOB_BASE_NAME}"
+        JNLP_NAMESPACE          = "${JNLP_ENV}"
+        JNLP_SERVICE_HOST       = "${JNLP_ENV}-${JOB_BASE_NAME}${JNLP_DOMAIN}"
+        JNLP_CONTROL_NAME       = "${JOB_BASE_NAME}"
+        JNLP_STORAGE_CLASS      = "${JNLP_ENV}"
+        JNLP_SERVICE_PORT       = "${JNLP_CONTAINER_PORT}"
+        JNLP_HUB                = 'hub.evbj.easou.com'
+        JNLP_DOMAIN             = '.evbj.easou.com'
+        JNLP_CONTROL            = 'StatefulSet'
+        JNLP_REPLICAS           = '1'
+        JNLP_STORAGE_CAPACITY   = '20Gi'
+        JNLP_MOUNT_PATH         = '/data/log'
+        // 容器状态健康检查,默认容器启动60秒开始检查,如果检查失败会重启容器
+        // 请根据服务启动时间修改检查时间
+        // 后liveness每隔10秒检查服务是否可用,连续3次不可用,立即重启容器
+        JNLP_LIVENESS_INIT      = '60'  
+        JNLP_LIVENESS_PER       = '10'
+        // 容器服务状态健康检查,默认容器启动60秒开始检查,如果检查失败,则该pod不会被加入负载均衡器参与流量调度
+        // 请根据服务初始化时间修改检查时间
+        // 后续readiness每隔10秒检查服务是否可用,连续3次不可用,立即从负载均衡去移除
+        JNLP_READINESS_INIT     = '60' 
+        JNLP_READINESS_PER      = '10'
+    }
+    stages {
+        stage('Build') {
+            agent {
+                docker {
+                    image 'hub.evbj.easou.com/dev/jenkins-slave'
+                    args '-v /root/.m2:/root/.m2  -v /root/.docker:/root/.docker --privileged'
+                }
+            }
+            steps {
+                // sh 'printenv |grep JNLP'
+                sh 'mvn clean package -Dmaven.test.skip=true -U'
+                sh 'curl -X GET "http://10.26.32.40:8848/nacos/v1/cs/configs?dataId=Resin3.Dockerfile&group=dev" > Dockerfile '
+                sh 'curl -X GET "http://10.26.32.40:8848/nacos/v1/cs/configs?dataId=ctl.sh&group=dev" > ctl.sh '
+                sh 'sh ctl.sh Dockerfile'
+                sh 'wrapper.sh "docker build -t ${JNLP_HUB}/${JNLP_ENV}/${JNLP_IMAGE}:${JNLP_TAG} ."'
+                sh 'docker push ${JNLP_HUB}/${JNLP_ENV}/${JNLP_IMAGE}:${JNLP_TAG}'
+                sh 'docker rmi ${JNLP_HUB}/${JNLP_ENV}/${JNLP_IMAGE}:${JNLP_TAG} --force'
+            }
+        }
+        stage('Pre Deploy') {
+            steps {
+                input "Are you sure deploy to kubernetes ?" 
+            }
+        }
+        stage('Deploy') {
+            agent {
+                docker {
+                    image 'hub.evbj.easou.com/dev/kubectl:v2.0.0'
+                }
+            }
+            steps {
+                sh 'curl -X GET "http://10.26.32.40:8848/nacos/v1/cs/configs?dataId=pipelinectl.py&group=dev" > pipelinectl.py'
+                // -b 生成部署时的配置文件
+                sh 'python pipelinectl.py -b'
+                // -a 执行部署命令,部署服务到kubernetes平台
+                sh 'python pipelinectl.py -a'
+                // -c 检查服务部署状态
+                sh 'python pipelinectl.py -c'
+                // -d 执行域名解析
+                sh 'python pipelinectl.py -d'
+            }
+        }
+    }
+}