1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
| pipeline { agent any parameters { string defaultValue: '', description: 'Image的版本号', name: 'dockerVersion', trim: true string defaultValue: '', description: 'teamfort_checkpoint的版本号', name: 'teamfortCheckpointVersion', trim: true booleanParam defaultValue: true, description: '编译teamfort_checkpoint', name: 'teamfortCheckpointBol' booleanParam defaultValue: true, description: 'docker上传私有库', name: 'dockerUpload' } environment{ //maven安装定义的maven名称 mvnHome = tool 'maven3.5.4' // 清除本地images imageRm = '''docker rmi -f $(docker images | grep dgemc.asuscomm.com:9293/checkpoint/teamfort_checkpoint_first | awk '{print $3}')''' // docker的编译名称和版本号 dockerImage = "dgemc.asuscomm.com:9293/checkpoint/teamfort_checkpoint_first:${dockerVersion}" // dockerFile目录位置 dockerFilePath = "/home/dockerSH/otherTeamfort_checkpoint"
// 编译teamfort_checkpoint dockerBuild = "cd ${dockerFilePath} \n"+ "docker build -t teamfort_checkpoint:${teamfortCheckpointVersion} . \n"
} stages{ stage('Checkout'){ steps{ script{ if("${dockerUpload}" == 'false'){ echo '跳过拉取代码' return } echo '拉取代码' checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[cancelProcessOnExternalsFail: true, credentialsId: '192.168.18.241', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: 'http://192.168.18.241/svn/dev/teamfort_checkpoint_First']], quietOperation: true, workspaceUpdater: [$class: 'CheckoutUpdater']]) } } } stage('Maven-Build'){ steps{ script{ if("${dockerUpload}" == 'false'){ echo '跳过Maven打包 ' return } echo '编译' sh "${mvnHome}/bin/mvn clean package -DskipTests" } } } stage('Docker-push'){ steps{ script{ if("${dockerUpload}" == 'false'){ echo '跳过上传私有库' return } echo '上传到docker私有库' sh "docker build -t ${dockerImage} ." // 上传到镜像仓库 sh "docker push ${dockerImage}" // 删除本地teamfort_checkpoint_first镜像 sh "${imageRm}" } } } stage('Ssh-docker-Build'){ steps{ echo '服务器docker编译' script { if("$teamfortCheckpointBol" == 'false'){ echo '跳过docker-build' return } sh ''' echo \'FROM dockerImage ENV configureBol=false ENV wechat-redirectUri=serv.thenewway.cn ENV db-ip=120.79.114.225 ENV auth-Url= EXPOSE 8383 \' >Dockerfile ''' //替换字符 sh "sed -i 's#dockerImage#${dockerImage}#' Dockerfile " sshPublisher(publishers: [sshPublisherDesc(configName: '芦苇', transfers: [sshTransfer(excludes: '', execCommand: "${dockerBuild}" , execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: "${dockerFilePath}", remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'Dockerfile')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) sh ''' echo \'FROM dockerImage ENV configureBol=false ENV wechat-redirectUri=serv.teamfort.cn ENV db-ip=120.79.114.225 ENV auth-Url= EXPOSE 8383 \' >Dockerfile ''' //替换字符(#号避免地址/问题) sh "sed -i 's#dockerImage#${dockerImage}#' Dockerfile " sshPublisher(publishers: [sshPublisherDesc(configName: '120.79.114.225', transfers: [sshTransfer(excludes: '', execCommand: "${dockerBuild}" , execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: "${dockerFilePath}", remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'Dockerfile')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) sh ''' echo \'FROM dockerImage ENV configureBol=true ENV wechat-redirectUri=serv.teamfort.cn ENV db-ip=120.79.114.225 ENV auth-Url= EXPOSE 8383 \' >Dockerfile ''' //替换字符(#号避免地址/问题) sh "sed -i 's#dockerImage#${dockerImage}#' Dockerfile " sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.18.211', transfers: [sshTransfer(excludes: '', execCommand: "${dockerBuild}" , execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: "${dockerFilePath}", remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'Dockerfile')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
} } } } }
|