pipeline { agent none environment { // 以下环境变量需要根据实际情况修改dev qa pro JNLP_ENV = 'op' // 此处t1表示,你需要将应用部署到k8s的t1命名空间下 JNLP_TAG = 'v1.0.0' // 镜像版本号,如果是开发自己测试,可以默认;如果默认,每次更新镜像都会覆盖 JNLP_CONTAINER_PORT = '8080' // 实际服务端口,例如resin,端口就是8080 JNLP_WAR = 'ROOT.war' // 项目编译后生成的包名 JNLP_INGRESS = 'nginx' JNLP_SVC_MODE = 'http' // tcp服务填写: tcp; http服务填写: http(默认) // 以下是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' //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('Deploy') { agent { docker { image 'hub.evbj.easou.com/dev/kubectl:v3.0.0' } } steps { sh 'curl -X GET "http://10.26.32.40:8848/nacos/v1/cs/configs?dataId=kubetools&group=dev" > ppctl.py' // -b 生成部署时的配置文件 sh 'python ppctl.py -b' // -a 部署服务到kubernetes平台 sh 'python ppctl.py -a' // -c 检查服务部署状态 sh 'python ppctl.py -c' // -d 执行域名解析 sh 'python ppctl.py -d' } } } }