| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // 获取镜像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<<EOF
- FROM openjdk:8-alpine as final
- ADD ${module}target/${JAR} /app/target/${JAR}
- ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Xmx1024m","-Dserver.port=80","-jar","/app/target/${JAR}", "--spring.config.location=file:/app/configs/application.yml"]
- EOF
- """
- return pathOfDockerfile
- }
- // 项目自带Dockerfile的时候,只需返回项目路径
- generateNodeJsDockerFile = { ... args ->
- 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
|