def label = "jenkins-agent" podTemplate(name: label , cloud: 'kubernetes', namespace: 'cicd', label: label, serviceAccount: 'default', envVars: [ // JNLP_ENV环境变量需要根据实际情况修改,例如:qa pro op // 此处op表示,你需要将应用部署到k8s的op命名空间下 envVar(key: "JNLP_ENV", value: "pro"), // 镜像版本号,如果是开发自己测试,可以默认;如果默认,每次更新镜像都会覆盖 // 实际服务端口,例如resin,端口就是8080 envVar(key: "JNLP_TAG", value: "v1.0.36"), envVar(key: "JNLP_CONTAINER_PORT", value: "80"), // 项目编译后生成的包名 envVar(key: "JNLP_WAR", value: "ROOT.war"), envVar(key: "JNLP_INGRESS", value: "nginx"), // tcp服务填写: tcp; http服务填写: http(默认) envVar(key: "JNLP_SVC_MODE", value: "http"), // 以下是Kubernetes deploy.yaml部署文件,默认情况下不作修改,保持默认值即可 !!! envVar(key: "JNLP_IMAGE", value: "${JOB_BASE_NAME}"), envVar(key: "JNLP_CONTROL_NAME", value: "${JOB_BASE_NAME}"), envVar(key: "JNLP_STORAGE_CLASS", value: "ceph"), envVar(key: "JNLP_HUB", value: "hub.evbj.easou.com"), envVar(key: "JNLP_DOMAIN", value: ".evbj.easou.com"), envVar(key: "JNLP_CONTROL", value: "StatefulSet"), envVar(key: "JNLP_REPLICAS", value: "3"), envVar(key: "JNLP_STORAGE_CAPACITY", value: "100Gi"), envVar(key: "JNLP_MOUNT_PATH", value: "/data/logs"), // 容器状态健康检查,默认容器启动60秒开始检查,如果检查失败会重启容器 // 请根据服务启动时间修改检查时间 // 后liveness每隔10秒检查服务是否可用,连续3次不可用,立即重启容器 envVar(key: "JNLP_LIVENESS_INIT", value: "60"), envVar(key: "JNLP_LIVENESS_PER", value: "10"), // 容器服务状态健康检查,默认容器启动60秒开始检查,如果检查失败,则该pod不会被加入负载均衡器参与流量调度 // 请根据服务初始化时间修改检查时间 // 后续readiness每隔10秒检查服务是否可用,连续3次不可用,立即从负载均衡去移除 envVar(key: "JNLP_READINESS_INIT", value: "60"), envVar(key: "JNLP_READINESS_PER", value: "10") ], containers: [ containerTemplate( name: 'jnlp', image: 'hub.evbj.easou.com/dev/jnlp-slave:v2.0.0', ttyEnabled: true, privileged: true, alwaysPullImage: true), containerTemplate( name: 'jnlp-slave', image: 'hub.evbj.easou.com/dev/jenkins-slave:v3.0.0', command: 'wrapper.sh /bin/sh', ttyEnabled: true, privileged: true, alwaysPullImage: true), containerTemplate( name: 'kubectl', image: 'hub.evbj.easou.com/dev/kubectl:v3.0.0', command: '/bin/sh', ttyEnabled: true, privileged: true, alwaysPullImage: true) ], ) { node(label) { stage('Build') { container('jnlp-slave') { deleteDir() checkout scm sh 'printenv|grep JNLP' sh 'docker --config /etc/docker build -t ${JNLP_HUB}/${JNLP_ENV}/${JNLP_IMAGE}:${JNLP_TAG} . -f Dockerfile' sh 'docker --config /etc/docker push ${JNLP_HUB}/${JNLP_ENV}/${JNLP_IMAGE}:${JNLP_TAG}' sh 'docker --config /etc/docker rmi ${JNLP_HUB}/${JNLP_ENV}/${JNLP_IMAGE}:${JNLP_TAG} --force' } } stage('Deploy') { container('kubectl') { // -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' } } } }