evaluationDependsOn(":node:capsule") buildscript { repositories { mavenLocal() mavenCentral() jcenter() } dependencies { classpath 'com.bmuschko:gradle-docker-plugin:3.4.4' } } import com.bmuschko.gradle.docker.DockerRemoteApiPlugin import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage import com.bmuschko.gradle.docker.tasks.image.DockerPushImage import java.time.LocalDateTime import java.time.format.DateTimeFormatter apply plugin: 'kotlin' apply plugin: DockerRemoteApiPlugin apply plugin: 'application' // We need to set mainClassName before applying the shadow plugin. mainClassName = 'net.corda.core.ConfigExporterMain' apply plugin: 'com.github.johnrengelman.shadow' dependencies{ compile project(':node') } shadowJar { baseName = 'config-exporter' classifier = null version = null zip64 true } docker{ registryCredentials { url = System.env.DOCKER_URL username = System.env.DOCKER_USERNAME password = System.env.DOCKER_PASSWORD } } task buildDockerFolder(dependsOn: [":node:capsule:buildCordaJAR", shadowJar]) { doLast { def cordaJar = project(":node:capsule").buildCordaJAR.archivePath project.copy { into new File(project.buildDir, "docker-temp") from "src/bash/run-corda.sh" from cordaJar from shadowJar.archivePath from "src/config/starting-node.conf" from "src/bash/generate-config.sh" from "src/docker/Dockerfile" rename(cordaJar.name, "corda.jar") rename(shadowJar.archivePath.name, "config-exporter.jar") } } } final String runTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) final String suffix = project.version.toString().toLowerCase().contains("snapshot") ? runTime : "RELEASE" final buildTags = ["corda/corda-${project.version.toString().toLowerCase()}:${suffix}", "corda/corda-${project.version.toString().toLowerCase()}:latest"] task buildOfficialDockerImage(type: DockerBuildImage, dependsOn: [buildDockerFolder]) { //if we are a snapshot, append a timestamp //if we are a release, append RELEASE inputDir = new File(project.buildDir, "docker-temp") tags = buildTags } task pushTimeStampedTag('type': DockerPushImage, dependsOn: [buildOfficialDockerImage]){ imageName = buildTags[0] } task pushLatestTag('type': DockerPushImage, dependsOn: [buildOfficialDockerImage]){ imageName = buildTags[1] } task pushOfficialImages(dependsOn: [pushTimeStampedTag, pushLatestTag]){ }