| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- node {
- service_name = "tzy"
- registry = "registry.azure.ipangyou.com/poyi/${service_name}"
- k3s_opts = "--kubeconfig ~/k3s-dev.yaml"
- cpu_limits = "800m"
- cpu_requests = "500m"
-
- stage('source code check out'){
- echo "1. Check out project source ..."
- dir("projdir"){
- //git branch: 'master', credentialsId: 'lingxz_git.ipangyou.com', url: 'https://git.ipangyou.com/poyi/tzy-admin.git'
- checkout([$class: 'GitSCM',
- branches: [[name: 'master']],
- doGenerateSubmoduleConfigurations: false,
- extensions: [[$class: 'CleanBeforeCheckout'], [$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true, timeout: 240]],
- submoduleCfg: [],
- userRemoteConfigs: [[credentialsId: 'lingxz_git.ipangyou.com', url: 'https://git.ipangyou.com/poyi/tzy-admin.git']]
- ])
- }
- dir("confdir") {
- git branch: 'master', credentialsId: 'lingxz_git.ipangyou.com', url: 'http://git.ipangyou.com/poyi/deployments.git'
- }
- }
- stage("maven build") {
- echo "2. Building java package ..."
- dir("projdir"){
- sh '$MAVEN_HOME/bin/mvn clean package'
- }
- }
-
- stage("docker image build") {
- echo "3. Building docker image: $registry:dev-$BUILD_NUMBER ..."
- dir("projdir"){
- sh '''cat > Dockerfile<<EOF
- FROM openjdk:8-alpine as final
- RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories &&\
- apk add --update ttf-dejavu &&\
- rm -rf /var/cache/apk/*
- ADD tzy-admin/target/tzy-admin.jar /app/tzy-admin/target/tzy-admin.jar
- #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
- 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"]
- EOF
- '''
- def image = docker.build("$registry:dev-$BUILD_NUMBER")
- image.push()
- sh "docker rmi $registry:dev-$BUILD_NUMBER"
- }
- }
-
- stage("deploy") {
-
- dir("confdir/tyz-admin/dev") {
- configmap_file = 'configmap.yaml'
- configmap_env = 'configmap-env.yaml'
- sh "kubectl ${k3s_opts} create configmap tzy-config --dry-run=client --from-file=./configmap/ -o yaml > ${configmap_file}"
- sh "kubectl ${k3s_opts} apply -f ${configmap_file}"
- sh "kubectl ${k3s_opts} create configmap tzy-environment --dry-run=client --from-env-file=./configmap-env -o yaml > ${configmap_env}"
- sh "kubectl ${k3s_opts} apply -f ${configmap_env}"
- }
-
- sh """cat > deployment.yml<<EOF
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- name: tzy-admin
- namespace: default
- spec:
- replicas: 2
- selector:
- matchLabels:
- app: tzy-admin
- release: dev
- template:
- metadata:
- labels:
- app: tzy-admin
- release: dev
- spec:
- imagePullSecrets:
- - name: regcredential
- containers:
- - name: tzy-admin
- image: ${registry}:dev-$BUILD_NUMBER
- command: ["java"]
- 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"]
- ports:
- - name: http
- containerPort: 80
- envFrom:
- - configMapRef:
- name: tzy-environment
- volumeMounts:
- - name: config-volume
- mountPath: /app/configs
- volumes:
- - name: config-volume
- configMap:
- name: tzy-config
- EOF
- """
- sh "kubectl ${k3s_opts} apply -f deployment.yml"
- sh """cat > deployment-merchant.yml<<EOF
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- name: tzy-merchant
- namespace: default
- spec:
- replicas: 2
- selector:
- matchLabels:
- app: tzy-merchant
- release: dev
- template:
- metadata:
- labels:
- app: tzy-merchant
- release: dev
- spec:
- imagePullSecrets:
- - name: regcredential
- containers:
- - name: tzy-merchant
- image: ${registry}:dev-$BUILD_NUMBER
- command: ["java"]
- 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"]
- resources:
- limits:
- cpu: $cpu_limits
- requests:
- cpu: $cpu_requests
- readinessProbe:
- httpGet:
- path: /health
- port: 80
- initialDelaySeconds: 15
- periodSeconds: 30
- failureThreshold: 3
- ports:
- - name: http
- containerPort: 80
- envFrom:
- - configMapRef:
- name: tzy-environment
- volumeMounts:
- - name: config-volume
- mountPath: /app/configs
- volumes:
- - name: config-volume
- configMap:
- name: tzy-config
- EOF
- """
- sh "kubectl ${k3s_opts} apply -f deployment-merchant.yml"
- }
- }
|