1. 预操作

    • 打通jenkins、gitlab凭证, 见下面这篇文章

    https://blog.51cto.com/wzlinux/2160109

    • 然后从这里拿到凭证ID

    image-20220829183248422

    image-20220829183323638

    用以在后面的Jenkinsfile中进行配置。

    • 在阿里云,拿到镜像仓库凭证,用于自动上传镜像。

    image-20220829184951577

  2. Jenkinsfile

    • 放在项目的根目录下,原理同Dockerfile
    node  {
        def appimage
        def registry = '项目仓库相对路径'
        def registryCredential = 'aliyun-docker-image-repository'
    		// 第一步 拉取代码
        stage("Checkout"){
            checkout([$class: 'GitSCM', 
                branches: [[name: '*/'+env.BRANCH_NAME]], 
                extensions: [[$class: 'SubmoduleOption', disableSubmodules: false, parentCredentials: false, recursiveSubmodules: true, reference: '', trackingSubmodules: false]], 
                userRemoteConfigs: [[credentialsId: 'd423a59c-2f90-42d9-dd6c39f0033c', url: '项目Git地址']]])
        }
    		// 打包镜像
        stage('Build') {
            appimage = docker.build registry + ":" + env.BRANCH_NAME + "-$BUILD_NUMBER"
        }
       // 推送镜像
        stage('Publish') {
            docker.withRegistry('https://registry-vpc.cn-beijing.aliyuncs.com', registryCredential ) {
                appimage.push()
                appimage.push(env.BRANCH_NAME)
            }
        }
    		// 服务部署
        stage('Deploy') {
            def img = "镜像仓库绝对路径:" + env.BRANCH_NAME + "-$BUILD_NUMBER"
    
            def namespace
            if (env.BRANCH_NAME == 'master' ) {
                namespace = 'dev'
            } else if (env.BRANCH_NAME == 'staging' ) {
                namespace = 'staging'
            } else if (env.BRANCH_NAME == 'production' ) {
                namespace = 'production'
            }
    
            sh "kubectl set image deployment/scheduler ranking-scheduler="+img+" --record --namespace "+namespace
        }
    }
    
    
    1. jenkins设置

      • 创建新任务

      image-20220829185254226

      • 设置如下

      image-20220829185549586

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐