blob: 12150510e769372606a84195d68f91bdf55cdafd [file] [log] [blame]
import com.bmuschko.gradle.docker.tasks.image.*
plugins {
id 'com.bmuschko.docker-remote-api'
id "de.undercouch.download" version "4.1.0"
}
docker {
registryCredentials {
url = "${-> configureKubernetes.ext.dockerRegistry.toString()}/v2/"
}
}
class BuildDockerConfig extends Copy {
}
tasks.register("download40", Download) {
src "https://downloads.apache.org/cassandra/${project.cassandra40Version}/apache-cassandra-${project.cassandra40Version}-bin.tar.gz"
dest "$buildDir/cassandra40/apache-cassandra-${project.cassandra40Version}-bin.tar.gz"
overwrite false
}
tasks.register("cassandra40", BuildDockerConfig) {
from("src/Cassandra40") {
}
from("src") {
include "docker-entrypoint.sh"
include "optimize-memory.sh"
}
into "$buildDir/cassandra40/"
dependsOn download40
}
tasks.register("generateDockerConfigs") {
doFirst {
mkdir "build"
}
dependsOn tasks.withType(BuildDockerConfig)
}
def getRemoteTag(name) {
return "${configureKubernetes.ext.dockerRegistryWithoutProtocol}/${configureKubernetes.ext.dockerGroup}/${name}:${configureKubernetes.ext.dockerTag}".toString()
}
tasks.register("buildImageCassandra40", DockerBuildImage) {
// the toString is required here, otherwise we get org.codehaus.groovy.runtime.GStringImpl cannot be cast to java.lang.String
def name = "cassandra40"
def localTag = "${name}:${configureKubernetes.ext.dockerTag}".toString()
// there might not be a group
def remoteTag = getRemoteTag(name)
// tag the private repo
tags = [localTag, remoteTag]
inputDir = file("$buildDir/${name}")
buildArgs = ["CASSANDRA_40_VERSION" : "$project.cassandra40Version"]
dependsOn "cassandra40"
}
tasks.register("publishCassandra40", DockerPushImage) {
def name = "cassandra40"
imageName = "${configureKubernetes.ext.dockerRegistryWithoutProtocol}/${configureKubernetes.ext.dockerGroup}/${name}"
dependsOn buildImageCassandra40
}
tasks.register("buildAll") {
dependsOn tasks.withType(DockerBuildImage)
}
tasks.register("pushAll") {
dependsOn tasks.withType(DockerPushImage)
dependsOn "buildAll"
}