美文网首页
Jenkins-Pipeline使用示例

Jenkins-Pipeline使用示例

作者: SparkOnly | 来源:发表于2021-10-26 11:10 被阅读0次

示例说明

  1. 选择分支或者Tag,拉取代码进行构建
  2. 打包镜像(使用maven-dockerfile-plugin)
  3. 推送镜像
    其中maven-and-docker为Jenkins-系统管理-ConfigureClouds里面定义的Pod模板。
    maven-and-docker的父Pod模板为maven-3.6
    Pod Template
pipeline {
    environment {
        appName = "c8-server"
        CREDS = credentials('xxx-test-swr')
    }
    agent {
        kubernetes {
            inheritFrom 'maven-and-docker'
        }
    }
    parameters {
        choice(name: 'BranchOrTag', choices: ['Branch','Tag'],description: 'Select branch type.')   
        gitParameter name: 'BRANCH', 
                     type: 'PT_BRANCH',
                     branchFilter: 'origin/(.*)',
                     defaultValue: 'master',
                     selectedValue: 'DEFAULT',
                     sortMode: 'DESCENDING_SMART',
                     description: 'Select your branch.'
        gitParameter name: 'TAG', 
                     type: 'PT_TAG',
                     branchFilter: 'origin/(.*)',
                     defaultValue: 'master',
                     selectedValue: 'DEFAULT',
                     sortMode: 'DESCENDING_SMART',
                     description: 'Select your tag.'
    }
    stages {
        stage ('Choice BranchOrTag'){
            steps {
                script {
                    if("${params.BranchOrTag}"=='Branch'){
                        BRANCH_TAG = "${params.BRANCH}"
                    }else{
                        BRANCH_TAG = "${params.TAG}"
                    }
                }
            }
        }
        stage ('Source'){
            steps {
                checkout([$class: 'GitSCM', 
                          branches: [[name: "${BRANCH_TAG}"]], 
                          doGenerateSubmoduleConfigurations: false, 
                          extensions: [], 
                          gitTool: 'Default', 
                          submoduleCfg: [], 
                          userRemoteConfigs: [[url: 'https://gitlab.xxx.com/xxx/plm-c8.git',credentialsId: 'xxx_gitlab',]]
                        ])
            }
        } 
        stage ('Build') {
            steps {
                container ('maven') {
                    sh 'mvn clean package dockerfile:build -U -Ptest -pl ${appName}'
                }
            }
        }
       stage ('Push Image') {
            steps {
                container ('maven') {
                    sh 'mvn dockerfile:push -P test -Ddockerfile.username=${CREDS_USR} -Ddockerfile.password=${CREDS_PSW}'
                }
            }
        }
        stage ('Deploy') {
            agent {label 'kubectl'}
            steps {
                container('kubectl'){
                    withKubeConfig([credentialsId:'rancher-xxx-test-kubefile']){
                        sh '''
                        kubectl set image deployment/c8-server c8-server=xxx.com/xx-plm/c8-server:test -n plm-sit
                        kubectl rollout restart deployment/c8-server -n plm-sit
                        '''
                    }
                }
            }
        }
    }
}

注:如果需要构建的时候根据git的tag指定镜像的tag,可以直接在dockerfile:build和dockerfile:push后面跟上 -DdockerTag=${TAG}
附:
dockerfile插件:
https://github.com/spotify/dockerfile-maven
https://gitee.com/mirrors_spotify/dockerfile-maven

相关文章

网友评论

      本文标题:Jenkins-Pipeline使用示例

      本文链接:https://www.haomeiwen.com/subject/knbealtx.html