Jenkinsfile 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. pipeline {
  2. agent none
  3. environment {
  4. // 以下环境变量需要根据实际情况修改dev qa pro
  5. JNLP_ENV = 'op' // 此处op表示,你需要将应用部署到k8s的op命名空间下
  6. JNLP_TAG = 'v1.0.1' // 镜像版本号,如果是开发自己测试,可以默认;如果默认,每次更新镜像都会覆盖
  7. JNLP_CONTAINER_PORT = '8080' // 实际服务端口,例如resin,端口就是8080
  8. JNLP_WAR = 'ums.war' // 项目编译后生成的包名
  9. JNLP_INGRESS = 'traefik' // tcp服务填写:haproxy;http服务填写:traefik
  10. // 以下是Kubernetes deploy.yaml部署文件,默认情况下不作修改,保持默认值即可 !!!
  11. JNLP_IMAGE = "${JOB_BASE_NAME}"
  12. JNLP_NAMESPACE = "${JNLP_ENV}"
  13. JNLP_SERVICE_HOST = "${JNLP_ENV}-${JOB_BASE_NAME}${JNLP_DOMAIN}"
  14. JNLP_CONTROL_NAME = "${JOB_BASE_NAME}"
  15. JNLP_STORAGE_CLASS = "${JNLP_ENV}"
  16. JNLP_SERVICE_PORT = "${JNLP_CONTAINER_PORT}"
  17. JNLP_HUB = 'hub.evbj.easou.com'
  18. JNLP_DOMAIN = '.evbj.easou.com'
  19. JNLP_CONTROL = 'StatefulSet'
  20. JNLP_REPLICAS = '1'
  21. JNLP_STORAGE_CAPACITY = '20Gi'
  22. JNLP_MOUNT_PATH = '/data/log'
  23. // 容器状态健康检查,默认容器启动60秒开始检查,如果检查失败会重启容器
  24. // 请根据服务启动时间修改检查时间
  25. // 后liveness每隔10秒检查服务是否可用,连续3次不可用,立即重启容器
  26. JNLP_LIVENESS_INIT = '60'
  27. JNLP_LIVENESS_PER = '10'
  28. // 容器服务状态健康检查,默认容器启动60秒开始检查,如果检查失败,则该pod不会被加入负载均衡器参与流量调度
  29. // 请根据服务初始化时间修改检查时间
  30. // 后续readiness每隔10秒检查服务是否可用,连续3次不可用,立即从负载均衡去移除
  31. JNLP_READINESS_INIT = '60'
  32. JNLP_READINESS_PER = '10'
  33. }
  34. stages {
  35. stage('Build') {
  36. agent {
  37. docker {
  38. image 'hub.evbj.easou.com/dev/jenkins-slave'
  39. args '-v /root/.m2:/root/.m2 -v /root/.docker:/root/.docker --privileged'
  40. }
  41. }
  42. steps {
  43. // sh 'printenv |grep JNLP'
  44. sh 'mvn clean package -Dmaven.test.skip=true -U'
  45. sh 'curl -X GET "http://10.26.32.40:8848/nacos/v1/cs/configs?dataId=Resin3.Dockerfile&group=dev" > Dockerfile '
  46. sh 'curl -X GET "http://10.26.32.40:8848/nacos/v1/cs/configs?dataId=ctl.sh&group=dev" > ctl.sh '
  47. sh 'sh ctl.sh Dockerfile'
  48. sh 'wrapper.sh "docker build -t ${JNLP_HUB}/${JNLP_ENV}/${JNLP_IMAGE}:${JNLP_TAG} ."'
  49. sh 'docker push ${JNLP_HUB}/${JNLP_ENV}/${JNLP_IMAGE}:${JNLP_TAG}'
  50. sh 'docker rmi ${JNLP_HUB}/${JNLP_ENV}/${JNLP_IMAGE}:${JNLP_TAG} --force'
  51. }
  52. }
  53. stage('Pre Deploy') {
  54. steps {
  55. input "Are you sure deploy to kubernetes ?"
  56. }
  57. }
  58. stage('Deploy') {
  59. agent {
  60. docker {
  61. image 'hub.evbj.easou.com/dev/kubectl:v2.0.0'
  62. }
  63. }
  64. steps {
  65. sh 'curl -X GET "http://10.26.32.40:8848/nacos/v1/cs/configs?dataId=pipelinectl.py&group=dev" > pipelinectl.py'
  66. // -b 生成部署时的配置文件
  67. sh 'python pipelinectl.py -b'
  68. // -a 执行部署命令,部署服务到kubernetes平台
  69. sh 'python pipelinectl.py -a'
  70. // -c 检查服务部署状态
  71. sh 'python pipelinectl.py -c'
  72. // -d 执行域名解析
  73. sh 'python pipelinectl.py -d'
  74. }
  75. }
  76. }
  77. }