1. 参数化构建
2. Jenkins script
podTemplate(name: 'jenkins-slave-4000', cloud: 'kubernetes',namespace: 'default', label: 'jenkins-slave-4000',containers: [containerTemplate(name: 'jnlp',image: "${HARBOR_URL}/ops/jenkins-slave:v2.2.2",alwaysPullImage: true),],volumes: [hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'),hostPathVolume(mountPath: '/usr/bin/docker', hostPath: '/usr/bin/docker'),hostPathVolume(mountPath: '/usr/local/java', hostPath: '/usr/local/jdk1.8.0_181'),hostPathVolume(mountPath: '/usr/local/maven', hostPath: '/usr/local/maven'),],imagePullSecrets: ['harbor-pull-secret'] ) {node('jenkins-slave-4000'){stage('Git Checkout'){checkout([$class: 'GitSCM', branches: [[name: "origin/${branch}"]], doGenerateSubmoduleConfigurations: false, submoduleCfg: [], userRemoteConfigs: [[credentialsId: "fd788290-8ae0-4207-9e68-e17fcc562275", url: "http://172.16.5.234/standardcmp/java-demo.git"]]])}stage('Build') {sh ''' ls -lacd java-demo2mvn clean -Dmaven.test.skip=true packagecp -f java-demo-gateway/target/java-demo-gateway-0.0.1-SNAPSHOT.jar CICD/mno.jar''' }stage('Build and Push Image'){withCredentials([usernamePassword(credentialsId: 'ecd8b664-a4bb-4269-847f-cf1bb96b8006', passwordVariable: 'password', usernameVariable: 'username')]) {sh ''' ls -lacd java-demo2/CICDdocker login -u $username -p $password ${HARBOR_URL}docker build --build-arg HARBOR_URL=$HARBOR_URL --build-arg MEM_REQUEST=${MEM_REQUEST} -t ${HARBOR_URL}/java-demo/java-demo:${BUILD_TIMESTAMP} .docker push ${HARBOR_URL}/java-demo/java-demo:${BUILD_TIMESTAMP}docker tag ${HARBOR_URL}/java-demo/java-demo:${BUILD_TIMESTAMP} ${HARBOR_URL}/java-demo/java-demo:${K8S_ENV}docker push ${HARBOR_URL}/java-demo/java-demo:${K8S_ENV}''' }}stage('Deploy to k8s'){sh ''' cd java-demo2/CICDls -lased -i "s/:latest/:${BUILD_TIMESTAMP}/;s/HARBOR_URL/${HARBOR_URL}/;s/SERVICE_PORT/${SERVICE_PORT}/;s/K8S_ENV/${K8S_ENV}/;s/MEM_REQUEST/${MEM_REQUEST}/" deploy.yaml''' kubernetesDeploy configs: 'java-demo2/CICD/deploy.yaml',kubeConfig: [path: ''], kubeconfigId: "4557ba41-47b1-4f64-b5da-40fe95bb07ce", secretName: '', ssh: [sshCredentialsId: '*', sshServer: ''],textCredentials: [certificateAuthorityData: '', clientCertificateData: '', clientKeyData: '', serverUrl: 'https://']}} }