jenkinsfile_k3s 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. node {
  2. service_name = "tzy"
  3. registry = "registry.azure.ipangyou.com/poyi/${service_name}"
  4. stage('source code check out'){
  5. echo "1. Check out project source ..."
  6. dir("projdir"){
  7. git branch: 'master', credentialsId: 'lingxz_git.ipangyou.com', url: 'https://git.ipangyou.com/poyi/tzy-admin.git'
  8. }
  9. dir("confdir") {
  10. git branch: 'master', credentialsId: 'lingxz_git.ipangyou.com', url: 'http://git.ipangyou.com/poyi/deployments.git'
  11. }
  12. }
  13. stage("maven build") {
  14. echo "2. Building java package ..."
  15. dir("projdir"){
  16. sh '$MAVEN_HOME/bin/mvn clean package'
  17. }
  18. }
  19. stage("docker image build") {
  20. echo "3. Building docker image: $registry:$BUILD_NUMBER ..."
  21. dir("projdir"){
  22. sh '''cat > Dockerfile<<EOF
  23. FROM openjdk:8-alpine as final
  24. ADD tzy-admin/target/tzy-admin.jar /app/tzy-admin/target/tzy-admin.jar
  25. #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
  26. 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"]
  27. EOF
  28. '''
  29. def image = docker.build("$registry:$BUILD_NUMBER")
  30. image.push()
  31. sh "docker rmi $registry:$BUILD_NUMBER"
  32. }
  33. }
  34. stage("deploy") {
  35. dir("confdir") {
  36. configmap_file = 'tzy-admin-configmap.yaml'
  37. configmap_env = 'tzy-admin-configmap-env.yaml'
  38. sh "kubectl create configmap tzy-config --dry-run=client --from-file=./tyz-admin/configmap/ -o yaml > ${configmap_file}"
  39. sh "kubectl apply -f ${configmap_file}"
  40. sh "kubectl create configmap tzy-environment --dry-run=client --from-env-file=./tyz-admin/configmap-env -o yaml > ${configmap_env}"
  41. sh "kubectl apply -f ${configmap_env}"
  42. }
  43. sh """cat > deployment.yml<<EOF
  44. apiVersion: apps/v1
  45. kind: Deployment
  46. metadata:
  47. name: tzy-admin
  48. namespace: default
  49. spec:
  50. replicas: 1
  51. selector:
  52. matchLabels:
  53. app: tzy-admin
  54. release: dev
  55. template:
  56. metadata:
  57. labels:
  58. app: tzy-admin
  59. release: dev
  60. spec:
  61. imagePullSecrets:
  62. - name: regcredential
  63. containers:
  64. - name: tzy-admin
  65. image: ${registry}:$BUILD_NUMBER
  66. command: ["java"]
  67. args: ["-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"]
  68. ports:
  69. - name: http
  70. containerPort: 80
  71. envFrom:
  72. - configMapRef:
  73. name: tzy-environment
  74. volumeMounts:
  75. - name: config-volume
  76. mountPath: /app/configs
  77. - name: nfs-volume
  78. mountPath: /app/data
  79. volumes:
  80. - name: config-volume
  81. configMap:
  82. name: tzy-config
  83. - name: nfs-volume
  84. persistentVolumeClaim:
  85. claimName: tzy-data
  86. EOF
  87. """
  88. sh 'kubectl apply -f deployment.yml'
  89. }
  90. }