def cfg = [
    ‘dockerRegistry’:’harbor.hengtiansoft.com/ddag’,
    ‘dockerCredential’:’harbor’
    ];
    def ecrpasswd = “eyJwYXlsb2FkIjoiYXVNMVRUVk9XQWw3OXprUjE3MHlldUZpTVI2OU1ySGVYRkM1dGY3RU81L2Y3Q2VFbUpXTGZNcWxINW50TG1Ma0YzdDFFdWpmYXFreDlzdllIUWR2aURWMUNOTGdmMjFIbEN3dldSZWhOUzBTdjJoOUhOc2NrUzF6UWlGcHA1QmJrZnZScjdpVWFmaW4yRm43cy90cmtNQlh1WlhpNDFmTVZmM3R2YzFJRnpXMzEzaTI0QjNuTHBkMExzVmFaYXd2Q2FPQWUwUDRUMFFNQjRYSXZjbWxQV05VQ04wTVVQQktSOGNFOHB0T3VLK1ZNRUpZWkZlckdEczEwQlBhMnZIQmhIdkZSc1lCZjlzdUljbWhWZWFwQ1FoYUd1aGdoeHZBK3Z1ZVN6dzZoay9EMUprWWloRzRPUmNHbW5qMC9iVHQwdVNwVkMvV1BCOXdNZVNLdlVYM0tWUmZuMEh2YTd0d3JSakdLZkpwTDZtRmlaTmwyZmRycHJDSUViS0ZYR1VBb0dyODR3ajRUdVVMYlRHb21iNFN0N2FldEZkT29PcTBscTlpU2dqcmFBcHhkTjZHMHgwZ3YyS29hMnE5RUVnUkVIVTRTTEZIRFNqTlltc0pFeUNvaC9jSE5XVjhON2VTWUdxbEhEREVqTDBwOXU0MTNicFNMODR3T0kxYlRtVERIMDFBa0lSb2JuaDdJT2dJRS9oZW03dy9ZN2JlQndVK0NMMWpzTzdxRmYrVWt2Sk1lYm96TWt1bkZ1eU1aNDg4djdRQzRDYmNFSk9NU0MxSXEwYisvNFhmeDNzcWxBdjJkVVJQNTdWRG1aNm5ZWFN6OVBoWGxHbHBtZ1JzcllFUnhJdGYwK2x4YW5ZcTc2VVdvNk1aclJ1QlltRjRSR29MMW9qZHJmT0NzdmgxVzNhcVZVY0pzZ1NRbkNITWFFcjkxVWVMWXZNRWJMVXdVdVFSMlN0TXNRMktRcHN4QktUNklLMHF3ckNwWHJnSlRIaGxWSFc3dDJwczMvUFdjUTBzemFOUG9IZmpLK3dVdXVmUTAwUEFyNDhsNDZuQ1A5UklaZUJxT3plZnZuTU1OM1lwRXIzZDhYamxaRHdvb3JZUXpTejQyRjNkcjd1c0l4bmpDZGNpQTFjUUloeFlveVd2Z1IybWExNU4zd2N3N0c4bVVKNVoyY2UwMXg4YVA4M1lTNlBNaG5SVGRGbTRsMkFLWFMvbU1QaDRINXlZdFp3UmlvU21jNjVpaG1FdXNsV3dKYTNjRllHaWQ2cTh2TnRaTHRzWjd4b3dFMGhCdHBDLzVkVlVjYnJGZGdaOElYMnlIbng1eUR2d2pCTXhoVlB5eDU4RUorQ0FJY2U2RnZZaWlQK0I3R2FUb2NyengrY1Azc3dscFlKRXA2amFqZ1Bwakg4RnhtM01TZHR2TUhSQWdlRFF3R3M9IiwiZGF0YWtleSI6IkFRRUJBSGlkRXJaQ2ZoS09lRE0wOCtjUDVmdHlqdlE5WE1NU1E0cEswRlpudkFaWEpnQUFBSDR3ZkFZSktvWklodmNOQVFjR29HOHdiUUlCQURCb0Jna3Foa2lHOXcwQkJ3RXdIZ1lKWUlaSUFXVURCQUV1TUJFRURQRys5SS9uT21VMGhFa1U2d0lCRUlBN21RajVwSkFrQzRrZ2xtbGc4VGZ0ZWd4Z05LanI2aEUwRjFFaGRlYjJGa01kM214SzZCdHl6OTY1VC9IMzFHZWh6UCtOZTlOZ0dUOXFKODQ9IiwidmVyc2lvbiI6IjIiLCJ0eXBlIjoiREFUQV9LRVkiLCJleHBpcmF0aW9uIjoxNjU2MTA3MjMwfQ==”;
    def rootgav = “”;

    podTemplate(cloud: ‘kubernetes’, label: ‘springbootPod2’, podRetention: never(),
    containers: [
    containerTemplate(name: ‘jnlp’, image: “jenkins/jnlp-slave:4.9-1-alpine”, args: ‘’, command: ‘’, workingDir: ‘/home/jenkins/agent’),
    containerTemplate(name: ‘maven1’, image: “maven:3.6.3-jdk-8”, args: ‘99d’, command: ‘sleep’, workingDir: ‘/home/jenkins/agent’, envVars: [envVar(key: ‘JAVA_HOME’, value: ‘/usr/local/openjdk-8’), envVar(key: ‘PATH’, value: ‘/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin’)]),
    containerTemplate(name: ‘docker’, image: “docker:latest”, args: ‘99d’, command: ‘sleep’, workingDir: ‘/home/jenkins/agent’)
    //containerTemplate(name: ‘awscli’, image: “amazon/aws-cli:latest”, args: ‘99d’, command: ‘sleep’, workingDir: ‘/home/jenkins/agent’)
    ],
    // 给jenkins统一分配命名空间。所有任务执行在此命名空间下
    // 每个maven版本使用一个挂载路径
    volumes: [
    //hostPathVolume(hostPath: ‘/run/docker.sock’, mountPath: ‘/run/docker.sock’),
    //hostPathVolume(hostPath: ‘/usr/bin/docker’, mountPath: ‘/usr/bin/docker’),
    // 建议每个版本的maven,都创建一个对应的k8s上指定命名空间下的pvc,用于持久化本地仓库
    persistentVolumeClaim(claimName: “maven3.6.3”, mountPath: ‘/root/.m2’, readOnly: false)
    ]
    ) {
    node(“springbootPod2”) {

    // 声明式语法中,若无特殊配置,会默认执行checkout
    // 脚本式语法中,默认不执行checkout
    stage(‘checkout’) {
    container(“maven1”) {

    checkout([$class: ‘GitSCM’, branches: [[name: ‘*/master’]], extensions: [], userRemoteConfigs: [credentialsId: ‘880329fb-8a94-45df-b27e-07e06f555cfb’, url: ‘[http:’]]]))

    1. sh "ls ./"<br /> }<br /> }<br /> stage('build code') {<br /> container("maven1") {<br /> //buildModuleDir = PathUtil.getPath(["${WORKSPACE}", cfg.rootModuleDir]);<br /> // 后端应用编译<br /> <br /> sh '''export JAVA_HOME=/usr/local/openjdk-8<br />export PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin<br />env<br />mvn clean install<br /> '''<br /> <br /> }<br /> }<br /> <br /> stage('build image') {<br /> container("docker") {<br /> <br /> rootgav = readMavenPom file: "pom.xml"<br /> sh """cd docker;sh copy.sh;cd ruoyi;<br /> cd auth;docker build -t 327483040992.dkr.ecr.ap-southeast-1.amazonaws.com/ruoyi-auth:latest .<br /> cd ..;cd gateway;docker build -t 327483040992.dkr.ecr.ap-southeast-1.amazonaws.com/ruoyi-gateway:latest .<br /> cd ..;cd modules/file;docker build -t 327483040992.dkr.ecr.ap-southeast-1.amazonaws.com/ruoyi-modules-file:latest .<br /> cd ..;cd gen;docker build -t 327483040992.dkr.ecr.ap-southeast-1.amazonaws.com/ruoyi-modules-gen:latest .<br /> cd ..;cd job;docker build -t 327483040992.dkr.ecr.ap-southeast-1.amazonaws.com/ruoyi-modules-job:latest .<br /> cd ..;cd system;docker build -t 327483040992.dkr.ecr.ap-southeast-1.amazonaws.com/ruoyi-modules-system:latest .<br /> cd ..;cd ..;cd visual/monitor;docker build -t 327483040992.dkr.ecr.ap-southeast-1.amazonaws.com/ruoyi-visual-monitor:latest .<br /> """<br />
    2. }<br /> }<br /> <br /> stage('push image') {<br /> container("docker") {<br /> <br /> rootgav = readMavenPom file: "pom.xml"<br /> <br /> ecrpasswd = sh(script:"docker run --rm -e AWS_ACCESS_KEY_ID='AKIAUYP4CUTQPOEMC5VV' -e AWS_SECRET_ACCESS_KEY='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' -i amazon/aws-cli ecr get-login-password --region ap-southeast-1", returnStdout:true).trim()
    3. sh """docker login --username AWS --password ${ecrpasswd} 327483040992.dkr.ecr.ap-southeast-1.amazonaws.com<br /> docker push 327483040992.dkr.ecr.ap-southeast-1.amazonaws.com/ruoyi-auth:latest<br /> docker push 327483040992.dkr.ecr.ap-southeast-1.amazonaws.com/ruoyi-gateway:latest<br /> docker push 327483040992.dkr.ecr.ap-southeast-1.amazonaws.com/ruoyi-modules-file:latest<br /> docker push 327483040992.dkr.ecr.ap-southeast-1.amazonaws.com/ruoyi-modules-gen:latest<br /> docker push 327483040992.dkr.ecr.ap-southeast-1.amazonaws.com/ruoyi-modules-job:latest<br /> docker push 327483040992.dkr.ecr.ap-southeast-1.amazonaws.com/ruoyi-modules-system:latest<br /> docker push 327483040992.dkr.ecr.ap-southeast-1.amazonaws.com/ruoyi-visual-monitor:latest<br /> """<br />
    4. }<br /> }
    5. }<br /> }