String dockerSquashImage()

in jenkins-pipeline-shared-libraries/vars/cloud.groovy [169:182]


String dockerSquashImage(String baseImage, String squashMessage = "${baseImage} squashed", boolean replaceCurrentImage = true) {
    String squashedPlatformImage = replaceCurrentImage ? "${baseImage}" : "${baseImage}-squashed"

    // Squash images
    def nbLayers = Integer.parseInt(sh(returnStdout: true, script: "docker history ${baseImage} | grep buildkit.dockerfile | wc -l").trim())
    nbLayers++ // Get the next layer not done by buildkit
    echo "Got ${nbLayers} layers to squash"
    // Use message option in docker-squash due to https://github.com/goldmann/docker-squash/issues/220
    def dockerSquashShellCmd = "docker-squash -v -m '${squashMessage}' -f ${nbLayers} -t ${squashedPlatformImage} ${baseImage}"
    sh dockerSquashShellCmd
    sh "docker push ${squashedPlatformImage}"

    return squashedPlatformImage
}