前置条件可参考

Jenkins Pipeline 流水线 – 拉代码(SVN) + Maven 编译打包
Jenkins Pipeline 流水线 – 添加节点 使用代理
Jenkins Pipeline 流水线 – withCredentials 使用
Jenkins Pipeline 流水线 – 上传文件 Publish over SSH 执行命令
Jenkins Pipeline 流水线 – 上传文件 Publish over SSH + Docker 编译 + 上传到阿里仓库
Jenkins Pipeline 流水线 – 使用代理节点,Remote SSH 对 K8S 进行升级

完整的 Pipeline Script

pipeline {
    agent any

    tools {
        maven 'Maven36'  //添加 Maven 工具
    }
    stages {
        stage('拉取SVN代码') {
            steps {
                checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[cancelProcessOnExternalsFail: true, credentialsId: 'c3b4ef0e-b414-4376-8a21-2e08e1c84dfb', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: 'https://172.16.3.94:8443/svn/SourceCode/Demo/Java/jenkins']], quietOperation: true, workspaceUpdater: [$class: 'UpdateUpdater']])  //该脚本由流水线语法自动生成
                echo '拉取成功'
            }
        }
 
        stage('Maven 编译打包') {
            steps {
                //bat 'mvn --version'
                bat 'mvn clean package -Dmaven.test.skip=true'
                echo 'Maven 编译打包 完成'
            }
        }

        stage('上传文件到 Docker 服务器、编译、上传阿里仓库') {
            steps {
               sshPublisher(publishers: [sshPublisherDesc(configName: 'DockerPublishSSH', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'PipelineDemo', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'target/demojenkins.jar'), sshTransfer(cleanRemote: false, excludes: '', execCommand: '''
               cd /opt/jenkins/PipelineDemo
               docker build -t registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:4.0 .
               docker login -u hi帐号ID@aliyun.com -p 密码 registry.cn-shanghai.aliyuncs.com
               docker push registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:4.0''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'PipelineDemo', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'Dockerfile')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])

               echo '上传文件 SUCCESS'
            }
        }

        stage('K8S 升级') {
            agent { label 'K8SAgent' }  //代理节点的方式比远程 ssh 要简单些
            steps {
                sh 'kubectl set image deployment/javademo1 vipsoft=registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:4.0' 
                echo 'K8S 升级成功'
            }
        } 
    }
} 

原文地址:http://www.cnblogs.com/vipsoft/p/16851802.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性