datahub/gradle/docker/docker-utils.gradle

42 lines
1.5 KiB
Groovy
Raw Permalink Normal View History

ext.getDockerImages = {
docker_registry, docker_repo, docker_tag ->
def stdOut = new ByteArrayOutputStream()
exec {
commandLine "docker", "images", "-q", "${docker_registry}/${docker_repo}:${docker_tag}"
standardOutput = stdOut
}
return stdOut.toString().trim().split("\\R").findAll {!it.empty}.unique() as List
}
ext.getDockerContainers = {
docker_registry, docker_repo, docker_tag ->
def stdOut = new ByteArrayOutputStream()
exec {
commandLine "docker", "container", "ls", "-q", "--filter", "ancestor=${docker_registry}/${docker_repo}:${docker_tag}"
standardOutput = stdOut
}
return stdOut.toString().trim().split("\\R").findAll {!it.empty}.unique() as List
}
ext.cleanLocalDockerImages = {
String docker_registry, String docker_repo, String docker_tag ->
println("Docker image string: ${docker_registry}/${docker_repo}:${docker_tag}")
def containers = getDockerContainers(docker_registry, docker_repo, docker_tag)
if(!containers.isEmpty()) {
println "Stopping containers: $containers"
exec {
commandLine = ["docker", "container", "stop"] + containers
}
exec {
commandLine = ["docker", "container", "rm"] + containers
}
}
def images = getDockerImages(docker_registry, docker_repo, docker_tag)
if(!images.isEmpty()) {
println "Removing images: $images"
exec {
ignoreExitValue true // may not work if used by downstream image
commandLine = ["docker", "rmi", "-f"] + images
}
}
}