// 获取镜像URL generateFullImageUri = {Map DOCKER, String base_branch, String BUILD_NUMBER -> return "${DOCKER.registry}/${DOCKER.image}:${base_branch}-${BUILD_NUMBER}" } // 获取镜像名 generateImageName = {Map DOCKER, String base_branch, String BUILD_NUMBER -> return "${DOCKER.image}:${base_branch}-${BUILD_NUMBER}" } def generateDockerfile(String JAR, String module, String pathOfDockerfile='projdir') { module = module == null ? '' : (module[-1] == '/' ? module : module + '/') sh """cat > ${pathOfDockerfile}/Dockerfile< return 'projdir' } // Maven工程生成.jar def buildJar(String path='projdir') { echo "-----> Building java package ..." dir(path){ sh '$MAVEN_HOME/bin/mvn clean package -Dmaven.test.skip=true' } return path } def cleanJar(String path='projdir') { echo "-----> Clean java package ..." dir(path){ sh '$MAVEN_HOME/bin/mvn clean' } return path } // 构建Docker镜像 def buildDockerImage(Object SERVICE, Object DOCKER, String base_branch, Closure dockerfile=null, String filter2Remove=null) { def imageUri = generateFullImageUri(DOCKER, base_branch, BUILD_NUMBER) echo "-----> Building docker image: ${imageUri} ..." def projDir = 'projdir' if (dockerfile != null) projDir = dockerfile(SERVICE.jar, SERVICE.module) else projDir = generateDockerfile(SERVICE.jar, SERVICE.module) dir(projDir) { docker.withRegistry("http://${DOCKER.registry}", "${DOCKER.push_credentialId}") { def imageName = generateImageName(DOCKER, base_branch, BUILD_NUMBER) def image = docker.build(imageName) image.push() sh "docker rmi ${imageName}" sh "docker rmi ${imageUri}" if(filter2Remove != null) sh "docker image prune --filter label=${filter2Remove} -f" } } return imageUri } return this