imageBuilder.groovy 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. generateFullImageUri = {Map DOCKER, String base_branch, String BUILD_NUMBER ->
  2. return "${DOCKER.registry}/${DOCKER.image}:${base_branch}-${BUILD_NUMBER}"
  3. }
  4. generateImageName = {Map DOCKER, String base_branch, String BUILD_NUMBER ->
  5. return "${DOCKER.image}:${base_branch}-${BUILD_NUMBER}"
  6. }
  7. def generateDockerfile(String JAR, String module, String pathOfDockerfile='projdir') {
  8. module = module == null ? '' : (module[-1] == '/' ? module : module + '/')
  9. sh """cat > ${pathOfDockerfile}/Dockerfile<<EOF
  10. FROM openjdk:8-alpine as final
  11. ADD ${module}target/${JAR} /app/target/${JAR}
  12. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Xmx1024m","-Dserver.port=80","-jar","/app/target/${JAR}", "--spring.config.location=file:/app/configs/application.yml"]
  13. EOF
  14. """
  15. return pathOfDockerfile
  16. }
  17. generateNodeJsDockerFile = { ... args ->
  18. return 'projdir'
  19. }
  20. def buildJar(String path='projdir') {
  21. echo "-----> Building java package ..."
  22. dir(path){
  23. sh '$MAVEN_HOME/bin/mvn clean package -Dmaven.test.skip=true'
  24. }
  25. return path
  26. }
  27. def cleanJar(String path='projdir') {
  28. echo "-----> Clean java package ..."
  29. dir(path){
  30. sh '$MAVEN_HOME/bin/mvn clean'
  31. }
  32. return path
  33. }
  34. def buildDockerImage(Object SERVICE, Object DOCKER, String base_branch, Closure dockerfile=null, String filter2Remove=null) {
  35. def imageUri = generateFullImageUri(DOCKER, base_branch, BUILD_NUMBER)
  36. echo "-----> Building docker image: ${imageUri} ..."
  37. def projDir = 'projdir'
  38. if (dockerfile != null)
  39. projDir = dockerfile(SERVICE.jar, SERVICE.module)
  40. else
  41. projDir = generateDockerfile(SERVICE.jar, SERVICE.module)
  42. dir(projDir) {
  43. docker.withRegistry("http://${DOCKER.registry}", "${DOCKER.push_credentialId}") {
  44. def imageName = generateImageName(DOCKER, base_branch, BUILD_NUMBER)
  45. def image = docker.build(imageName)
  46. image.push()
  47. sh "docker rmi ${imageName}"
  48. sh "docker rmi ${imageUri}"
  49. if(filter2Remove != null)
  50. sh "docker image prune --filter label=${filter2Remove} -f"
  51. }
  52. }
  53. return imageUri
  54. }
  55. return this