Jenkins-Pipeline使用示例

示例说明 1. 选择分支或者Tag,拉取代码进行构建 2. 打包镜像(使用maven-dockerfile-plugin) 3. 推送镜像 其中**maven-and-docker**为Jenkins-系统管理-ConfigureClouds里面定义的Pod模板。 maven-and-docker的父Pod模板为maven-3.6 ![Pod Template](https://upload-images.jianshu.io/upload_images/24252589-f949029df080d0cc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ``` 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使用示例)