jenkinsfile_mock 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. node {
  2. service_name = "tzy"
  3. registry = "registry.azure.ipangyou.com/poyi/${service_name}"
  4. k3s_opts = "--kubeconfig ~/k3s-prod.yaml"
  5. try{
  6. stage('source code check out'){
  7. echo "1. Check out project source ..."
  8. dir("projdir"){
  9. //git branch: 'master', credentialsId: 'lingxz_git.ipangyou.com', url: 'https://git.ipangyou.com/poyi/tzy-admin.git'
  10. checkout([$class: 'GitSCM',
  11. branches: [[name: 'master']],
  12. doGenerateSubmoduleConfigurations: false,
  13. extensions: [[$class: 'CleanBeforeCheckout'], [$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true, timeout: 240]],
  14. submoduleCfg: [],
  15. userRemoteConfigs: [[credentialsId: 'lingxz_git.ipangyou.com', url: 'https://git.ipangyou.com/poyi/tzy-admin.git']]
  16. ])
  17. }
  18. dir("confdir") {
  19. git branch: 'master', credentialsId: 'lingxz_git.ipangyou.com', url: 'http://git.ipangyou.com/poyi/deployments.git'
  20. }
  21. }
  22. stage("maven build") {
  23. echo "2. Building java package ..."
  24. dir("projdir"){
  25. sh '$MAVEN_HOME/bin/mvn clean package'
  26. }
  27. }
  28. stage("docker image build") {
  29. echo "3. Building docker image: $registry:$BUILD_NUMBER ..."
  30. dir("projdir"){
  31. sh '''cat > Dockerfile<<EOF
  32. FROM openjdk:8-alpine as final
  33. ADD tzy-admin/target/tzy-admin.jar /app/tzy-admin/target/tzy-admin.jar
  34. #Minimum heap size set to 128mb as Xms128m, and maximum is set to 512 as Xmx512m - to be configured depending on individual needs of the app
  35. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Xmx4096m","-Dserver.port=80","-jar","/app/tzy-admin/target/tzy-admin.jar", "--spring.config.location=file:/app/configs/application.yml,file:/app/configs/application-druid.yml"]
  36. EOF
  37. '''
  38. def image = docker.build("$registry:$BUILD_NUMBER")
  39. image.push()
  40. sh "docker rmi $registry:$BUILD_NUMBER"
  41. }
  42. }
  43. stage("deploy") {
  44. dir("confdir/tyz-admin/mock") {
  45. configmap_file = 'configmap.yaml'
  46. configmap_env = 'configmap-env.yaml'
  47. sh "kubectl ${k3s_opts} create configmap tzy-mock-config --dry-run=client --from-file=./configmap/ -o yaml > ${configmap_file}"
  48. sh "kubectl ${k3s_opts} apply -f ${configmap_file}"
  49. sh "kubectl ${k3s_opts} create configmap tzy-mock-environment --dry-run=client --from-env-file=./configmap-env -o yaml > ${configmap_env}"
  50. sh "kubectl ${k3s_opts} apply -f ${configmap_env}"
  51. }
  52. sh """cat > deployment.yml<<EOF
  53. apiVersion: apps/v1
  54. kind: Deployment
  55. metadata:
  56. name: tzy-admin-mock
  57. namespace: default
  58. spec:
  59. replicas: 1
  60. selector:
  61. matchLabels:
  62. app: tzy-admin
  63. release: mock
  64. template:
  65. metadata:
  66. labels:
  67. app: tzy-admin
  68. release: mock
  69. spec:
  70. imagePullSecrets:
  71. - name: regcredential
  72. containers:
  73. - name: tzy-admin
  74. image: ${registry}:$BUILD_NUMBER
  75. command: ["java"]
  76. args: ["-Djava.security.egd=file:/dev/./urandom","-Xmx2048m","-Dserver.port=80","-jar","/app/tzy-admin/target/tzy-admin.jar", "--spring.config.location=file:/app/configs/application.yml,file:/app/configs/application-druid.yml"]
  77. ports:
  78. - name: http
  79. containerPort: 80
  80. envFrom:
  81. - configMapRef:
  82. name: tzy-mock-environment
  83. volumeMounts:
  84. - name: config-volume
  85. mountPath: /app/configs
  86. - name: nfs-volume
  87. mountPath: /app/data
  88. volumes:
  89. - name: config-volume
  90. configMap:
  91. name: tzy-mock-config
  92. - name: nfs-volume
  93. persistentVolumeClaim:
  94. claimName: tzy-data
  95. EOF
  96. """
  97. sh "kubectl ${k3s_opts} apply -f deployment.yml"
  98. }
  99. } catch (e) {
  100. mail to: '81554636@qq.com,xiaozhou.ling@hobbystock.cn,1169705999@qq.com', body: "${e}", subject: "[MOCK]error occurs in building tzy-admin:$BUILD_NUMBER"
  101. throw e
  102. } finally {
  103. }
  104. mail to: '81554636@qq.com,xiaozhou.ling@hobbystock.cn,1169705999@qq.com', body: "Building success", subject: "[MOCK]succeed building tzy-admin:$BUILD_NUMBER"
  105. }