diff --git a/README.md b/README.md index d8743a8..841e0b4 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ Only `image` parameter is mandatory - it's name of the resulting image. // username and password are used if the Docker Registry requires credentials for pushing username = 'registry-username' password = System.getenv('DOCKER_REGISTRY_PASSWORD') + removeImage = false // indicates if the image should be removed after publishing, default is true } The plugin can be also applied using [the new Gradle syntax](https://plugins.gradle.org/plugin/cz.augi.gradle.wartremover): diff --git a/src/main/groovy/cz/augi/gradle/dockerjava/DockerJavaExtension.groovy b/src/main/groovy/cz/augi/gradle/dockerjava/DockerJavaExtension.groovy index c56000a..7bb1639 100644 --- a/src/main/groovy/cz/augi/gradle/dockerjava/DockerJavaExtension.groovy +++ b/src/main/groovy/cz/augi/gradle/dockerjava/DockerJavaExtension.groovy @@ -26,4 +26,5 @@ class DockerJavaExtension implements DistDockerSettings, DockerPushSettings { String username String password String getRegistry() { image.substring(0, image.indexOf('/')) } + Boolean removeImage = true } diff --git a/src/main/groovy/cz/augi/gradle/dockerjava/DockerPushTask.groovy b/src/main/groovy/cz/augi/gradle/dockerjava/DockerPushTask.groovy index 7ff34ce..1c5f023 100644 --- a/src/main/groovy/cz/augi/gradle/dockerjava/DockerPushTask.groovy +++ b/src/main/groovy/cz/augi/gradle/dockerjava/DockerPushTask.groovy @@ -19,13 +19,21 @@ class DockerPushTask extends DefaultTask { @TaskAction def push() { def configFile = new File(project.buildDir, 'localDockerConfig') - project.exec { - it.commandLine 'docker', '--config', configFile.absolutePath, 'login', '-u', settings.username, '-p', settings.password, settings.registry + try { + project.exec { + it.commandLine 'docker', '--config', configFile.absolutePath, 'login', '-u', settings.username, '-p', settings.password, settings.registry + } + project.exec { + it.commandLine 'docker', '--config', configFile.absolutePath, 'push', settings.image + } + } finally { + configFile.delete() } - project.exec { - it.commandLine 'docker', '--config', configFile.absolutePath, 'push', settings.image + if (settings.removeImage) { + project.exec { + it.commandLine 'docker', 'rmi', '--force', settings.image + } } - configFile.delete() } } @@ -38,4 +46,6 @@ interface DockerPushSettings { String getPassword() @Input String getRegistry() + @Input + Boolean getRemoveImage() }