Fix Gradle 5 error (#355)
diff --git a/gradle/docker.gradle b/gradle/docker.gradle
index b06c3ba..398dd50 100644
--- a/gradle/docker.gradle
+++ b/gradle/docker.gradle
@@ -39,7 +39,7 @@
*/
ext {
- dockerRegistry = project.hasProperty('dockerRegistry') && dockerRegistry != '' ? dockerRegistry + '/' : ''
+ dockerRegistry = project.hasProperty('dockerRegistry') ? dockerRegistry + '/' : ''
dockerImageTag = project.hasProperty('dockerImageTag') ? dockerImageTag : 'latest'
dockerImagePrefix = project.hasProperty('dockerImagePrefix') ? dockerImagePrefix : 'whisk'
dockerTimeout = project.hasProperty('dockerTimeout') ? dockerTimeout.toInteger() : 840
@@ -54,32 +54,82 @@
}
if(project.hasProperty('dockerBuildArgs')) {
- dockerBuildArg += ['--build-arg', project.dockerBuildArgs]
-}
-
-task distDocker << {
- def start = new Date()
- def cmd = dockerBinary + dockerBuildArg + ['-t', dockerImageName, project.buildscript.sourceFile.getParentFile().getAbsolutePath()]
- retry(cmd, dockerRetries, dockerTimeout)
- println("Building '${dockerImageName}' took ${TimeCategory.minus(new Date(), start)}")
-}
-task tagImage << {
- def versionString = (dockerBinary + ['-v']).execute().text
- def matched = (versionString =~ /(\d+)\.(\d+)\.(\d+)/)
-
- def major = matched[0][1] as int
- def minor = matched[0][2] as int
-
- def dockerCmd = ['tag']
- if(major == 1 && minor < 12) {
- dockerCmd += ['-f']
+ dockerBuildArgs.each { arg ->
+ dockerBuildArg += ['--build-arg', arg]
}
- retry(dockerBinary + dockerCmd + [dockerImageName, dockerTaggedImageName], dockerRetries, dockerTimeout)
}
-task pushImage << {
- def cmd = dockerBinary + ['push', dockerTaggedImageName]
- retry(cmd, dockerRetries, dockerTimeout)
+task distDocker {
+ doLast {
+ def start = new Date()
+ def cmd = dockerBinary + dockerBuildArg + ['-t', dockerImageName, project.buildscript.sourceFile.getParentFile().getAbsolutePath()]
+ retry(cmd, dockerRetries, dockerTimeout)
+ println("Building '${dockerImageName}' took ${TimeCategory.minus(new Date(), start)}")
+ }
+}
+
+task distDockerCoverage() {
+ doLast {
+ def start = new Date()
+ //Copy the scoverage runtime jars
+ copy {from configurations.scoverage - configurations.compile; into "build/tmp/docker-coverage/ext-lib"}
+ //Copy the scoverage prepared jars
+ coverageDirs.each {dir ->
+ copy {from file(dir); into "build/tmp/docker-coverage/classes"}
+ }
+
+ def buildArgs = [
+ "OW_ROOT_DIR=${project.rootProject.projectDir.absolutePath}"
+ ]
+ def dockerImageNameOrig = dockerImageName
+ dockerImageName = "$dockerImageName-cov"
+
+ //Use absolute paths for dockerFile and build directory
+ String dockerFileDir = project.buildscript.sourceFile.getParentFile().getAbsolutePath()
+ String dockerFile = "$dockerFileDir/Dockerfile.cov"
+
+ def cmd = dockerBinary + prepareBuildArgs(buildArgs) + ['-f', dockerFile, '-t', dockerImageName, dockerFileDir]
+ retry(cmd, dockerRetries, dockerTimeout)
+ println("Building '${dockerImageName}' took ${TimeCategory.minus(new Date(), start)}")
+
+ //Replace the original image with coverage one
+ project.ext.dockerTaggedImageName = dockerImagePrefix + '/' + dockerImageNameOrig + ':' + "cov"
+ }
+ finalizedBy('tagImage')
+}
+
+def prepareBuildArgs(List buildArgs) {
+ def result = ['build']
+ if(project.hasProperty('dockerBuildArgs')) {
+ buildArgs.addAll(dockerBuildArgs)
+ }
+ buildArgs.each {arg ->
+ result += ['--build-arg', arg]
+ }
+ result
+}
+
+task tagImage {
+ doLast {
+ def versionString = (dockerBinary + ['-v']).execute().text
+ def matched = (versionString =~ /(\d+)\.(\d+)\.(\d+)/)
+
+ def major = matched[0][1] as int
+ def minor = matched[0][2] as int
+
+ def dockerCmd = ['tag']
+ if(major == 1 && minor < 12) {
+ dockerCmd += ['-f']
+ }
+ retry(dockerBinary + dockerCmd + [dockerImageName, dockerTaggedImageName], dockerRetries, dockerTimeout)
+ }
+}
+
+task pushImage {
+ doLast {
+ def cmd = dockerBinary + ['push', dockerTaggedImageName]
+ retry(cmd, dockerRetries, dockerTimeout)
+ }
}
pushImage.dependsOn tagImage
pushImage.onlyIf { dockerRegistry != '' }