gradle-docker
gradle-docker copied to clipboard
Gradle 7.0 `dockerRun{}` Illegal null value provided in this collection
What happened?
Using:
Gradle v7.0
com.palantir.docker v0.26.0
com.palantir.docker-run v0.26.0
In the build.gradle, I have the following dockerRun task:
dockerRun {
name "spectral${port}"
image 'stoplight/spectral:latest'
volumes 'public': '/tmp'
daemonize false
ports "${port}:5000"
clean true
command 'lint', '-F', '"hint"', '-v', '/tmp/output.yaml'
}
When the build attempts to run this, I get the following error:
Illegal null value provided in this collection: [inspect, --format={{.State.Running}}, null]
I suspect this may have something to do with Gradle 7.0, since I did not encounter this issue using Gradle 6.5.
What did you want to happen?
dockerRun task executes successfully.
Edit: Added an alternate solution in a comment below.
Same problem on Both 7.0 and 6.8.1
Also ran into this issue
For anyone who still wants to be able to lint OAS files without waiting for this plugin to be updated, I ended up changing out this Docker task for an NpxTask instead:
plugins {
id "com.github.node-gradle.node" version "3.0.1"
}
...
task('yamlLint', type: NpxTask) {
command = '@stoplight/spectral'
args = ['lint', '-F', '"hint"', '-v', "${rootDir}/someSpecFile.yaml"]
}
I did notice it's a bit slower than the Docker lint, but it actually works on Gradle 7.0, which was good enough for me.
Any update on issue ? Got same on my side.
Any one who was able to get a solution for this? Which version works with gradle 6.8+?
@asood15 Are you using Kotlin DSL? Because got the same problem and now i am switching back to groovy...the project is new so this should be ok
Hi @Dylar. I am using groovy. I was running gradle v6.5.1, palantir.docker v0.25.0, palantir.docker-run v0.25.0. Now i want to upgrade gradle to v 7.0+ but i get this problem. Were you able to run it using groovy?
@asood15 Hey :)
I am using gradle 7.4.2 and this is my build.gradle But dont know if everything is correct (but now its working)
plugins {
id 'application'
id "org.jetbrains.kotlin.jvm" version "1.6.20"
id 'io.spring.dependency-management' version "1.0.11.RELEASE"
id 'org.springframework.boot' version '2.6.1'
id 'com.palantir.docker' version '0.31.0'
id 'com.palantir.docker-run' version '0.31.0'
}
apply plugin: "kotlin"
apply plugin: "application"
version = "0.0.1"
mainClassName = 'de.TestSpringApi'
repositories {
mavenCentral()
}
dependencies {
implementation "org.springframework.boot:spring-boot-starter-web:2.5.5"
implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.13.+"
implementation "org.jetbrains.kotlin:kotlin-reflect"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
testImplementation "org.springframework.boot:spring-boot-starter-test:2.5.5"
testImplementation "io.mockk:mockk:1.12.0"
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
jvmTarget = "1.8"
}
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
test {
useJUnitPlatform()
}
String dockerHubUsernameProperty = findProperty('dockerHubUsername') ?: 'Dylar'
String imageName = "${dockerHubUsernameProperty}/testSpringApi:$version$version"
docker {
name imageName
files "build/libs/${bootJar.archiveFileName.get()}"
buildArgs([JAR_FILE: bootJar.archiveFileName.get()])
}
dockerRun {
name project.name
image imageName
ports '8080:8080'
clean true
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
I think in my case i need to upgrade the versions and try. Thanks a lot @Dylar
Hi, guys. I still face the issue with Gradle Kotlin DSL configuration. Tried with Gradle 7.5.1 and 7.4.2
plugins {
id("com.palantir.docker") version "0.34.0"
id("com.palantir.docker-run") version "0.34.0"
id("com.palantir.docker-compose") version "0.34.0"
}
Caused by: java.lang.IllegalArgumentException: Illegal null value provided in this collection: [inspect, --format={{.State.Running}}, null]
at org.gradle.util.internal.GUtil.addToCollection(GUtil.java:174)
at org.gradle.process.internal.ProcessArgumentsSpec.args(ProcessArgumentsSpec.java:88)
at org.gradle.process.internal.ProcessArgumentsSpec.setArgs(ProcessArgumentsSpec.java:100)
at org.gradle.process.internal.ProcessArgumentsSpec.commandLine(ProcessArgumentsSpec.java:61)
at org.gradle.process.internal.ProcessArgumentsSpec.commandLine(ProcessArgumentsSpec.java:54)
at org.gradle.process.internal.DefaultExecSpec.commandLine(DefaultExecSpec.java:71)
at org.gradle.api.tasks.AbstractExecTask.commandLine(AbstractExecTask.java:81)
at org.gradle.api.tasks.AbstractExecTask.commandLine(AbstractExecTask.java:46)
at jdk.internal.reflect.GeneratedMethodAccessor935.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at com.palantir.gradle.docker.DockerRunPlugin$_apply_closure6$_closure7.doCall(DockerRunPlugin.groovy:62)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at com.palantir.gradle.docker.DockerRunPlugin$_apply_closure6.doCall(DockerRunPlugin.groovy:60)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingClosure$1.lambda$run$0(DefaultListenerBuildOperationDecorator.java:199)
at org.gradle.configuration.internal.DefaultUserCodeApplicationContext$CurrentApplication.reapply(DefaultUserCodeApplicationContext.java:98)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingClosure$1.run(DefaultListenerBuildOperationDecorator.java:196)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingClosure.doCall(DefaultListenerBuildOperationDecorator.java:193)
For some reason ext.name returns null, instead of "dockerRun"