美文网首页
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