Update 2016-02-08-Update-Whats-New-in-Version-040.adoc

= Update: What's New in Version 0.4.0
:hp-tags: release

It's been a year since HubPress launched. How time flies!

1,976 forks.

2,205 stars.

Hundreds of progressive blogs using HubPress and Asciidoctor to write scaleable content, in an easy-to-use product.

Best of all, it's totally free!

== Material design

To give HubPress a modern, progressive User Interface, we've redesigned it using the Material design template.

This provides an even better responsive design for mobile users, and provides a clean interface for new and existing blogger.

== Development process

HubPress is moving away from developing in the https://github.com/HubPress/hubpress.io[hubpress.io] repository.
To ensure the hubpress.io repository remains clean for new adopters, development has shifted to https://github.com/HubPress/dev.hubpress.io[dev.hubpress.io].

The process to commit a change to HubPress is changed to the following:

. Create an issue describing the change you propose.
. Fork https://github.com/HubPress/dev.hubpress.io
. Checkout the branch *development*
. Create a branch in your forked repo and make the change.
. Open a Pull Request (PR), and summarise your changes, linking to the issue you created.

Once we receive your PR, we'll review your changes and then either accept them or ask for further changes before final acceptance.

The new repository is backed by Continuous Integration tasks provisioned through Travis-CI, which trigger automatically once a change to `/master` is detected.

It's a more scalable way to manage HubPress moving forward.

== Theme

HubPress uses the professional-looking Ghost themes to allow you to personalise your Blog. It's been a year since release, so it's time for a couple of new looks.

uno-zen::
  This theme, created by https://twitter.com/kikobeats[Kiko Beats], is a simplified theme you can use for a more "docs-site" looking blog:
  * Great for long-form blogs,
  * Looks great with pinned posts.

ghostium::
  This theme, created by https://twitter.com/oswaldoacauan[Oswaldo Acauan], is focused on content and based on Medium:
  * Focused on content,
  * Fully responsive.

= Update: What's New in Version 0.4.0
:hp-tags: release

It's been a year since HubPress launched. How time flies!

1,976 forks.

2,205 stars.

Hundreds of progressive blogs using HubPress and Asciidoctor to write scaleable content, in an easy-to-use product.

Best of all, it's totally free!

== Material design

To give HubPress a modern, progressive User Interface, we've redesigned it using the Material design template.

This provides an even better responsive design for mobile users, and provides a clean interface for new and existing blogger.

== Development process

HubPress is moving away from developing in the https://github.com/HubPress/hubpress.io[hubpress.io] repository.
To ensure the hubpress.io repository remains clean for new adopters, development has shifted to https://github.com/HubPress/dev.hubpress.io[dev.hubpress.io].

The process to commit a change to HubPress is changed to the following:

. Create an issue describing the change you propose.
. Fork https://github.com/HubPress/dev.hubpress.io
. Checkout the branch *development*
. Create a branch in your forked repo and make the change.
. Open a Pull Request (PR), and summarise your changes, linking to the issue you created.

Once we receive your PR, we'll review your changes and then either accept them or ask for further changes before final acceptance.

The new repository is backed by Continuous Integration tasks provisioned through Travis-CI, which trigger automatically once a change to `/master` is detected.

It's a more scalable way to manage HubPress moving forward.

== Theme

HubPress uses the professional-looking Ghost themes to allow you to personalise your Blog. It's been a year since release, so it's time for a couple of new looks.

uno-zen::
  This theme, cerated by https://twitter.com/kikobeats[Kiko Beats] is a simplified theme you can use for a more "docs-site" looking blog:
  * Great for long-form blogs,
  * Looks great with pinned posts.

ghostium::
  This theme, created by https://twitter.com/oswaldoacauan[Oswaldo Acauan] is focused on content and based on Medium:
  * Focused on content,
  * Fully responsive.


Add fix to change log

Add fix to change log

== Change Log

[discrete]
=== v4.2.0 (December 16, 2018)

* Applying the Docker Spring Boot application plugin with the plugins DSL should not fail - {uri-github}/issues/702[Issue 702]
* **Breaking Change!** Remove all deprecations - {uri-github}/issues/675[Issue 675]
    * Removed `DockerCreateContainer.env`, replaced by `DockerCreateContainer.envVars`
    * Removed `DockerBuildImage.tag`, replaced by `DockerBuildImage.tags`
    * Removed `DockerExecContainer.cmd`, replaced by `DockerExecContainer.commands`
    * Removed `DockerExecContainer.execId`, replaced by `DockerExecContainer.execIds`
* `DockerBuildImage.tags.add/addAll` only work after using `tags.set` - {uri-github}/issues/712[Issue 712]
* User guide sample on Docker `links` should not use `doFirst` - {uri-github}/issues/715[Issue 715]
* `DockerCommitImage` task should not fail when accessing container ID property value - {uri-github}/issues/718[Issue 718]

[discrete]
=== v4.1.0 (November 29, 2018)

* Ensure compatibility with Gradle 5.0 - {uri-github}/pull/693[Pull Request 709]
* **Breaking Change!** The existing field `timeout` in custom tasks had to be renamed due to https://docs.gradle.org/5.0/userguide/more_about_tasks.html#sec:task_timeouts[Gradle's 5.0 built-in timeout feature]

[discrete]
=== v4.0.5 (November 22, 2018)

* Avoid the use of application plugin extension to ensure compatibility - {uri-github}/issues/706[Issue 706]

[discrete]
=== v4.0.4 (November 4, 2018)

* Implementation to make `DockerBuildImage` task incremental and cacheable is not sufficient - {uri-github}/issues/697[Issue 697]

[discrete]
=== v4.0.3 (October 30, 2018)

* Correctly handle the case where `inputDir` is not where `dockerFile` is located - {uri-github}/pull/693[Pull Request 693]

[discrete]
=== v4.0.2 (October 27, 2018)

* Output file name containing the image ID created by `DockerBuildImage` should work on Windows - {uri-github}/pull/690[Pull Request 690]

[discrete]
=== v4.0.1 (October 20, 2018)

* Returned image ID for a `DockerBuildImage` task should never be null - {uri-github}/pull/687[Pull Request 687]

[discrete]
=== v4.0.0 (October 12, 2018)

* **Breaking Change!** Use `Provider` concept throughout to support lazy evaluation via public API - {uri-github}/pull/659[Pull Request 659]
* **Breaking Change!** Consumers of this plugin will have to use Java 8 or higher - {uri-github}/pull/676[Pull Request 676]
* **Breaking Change!** Removal of `AbstractReactiveStreamsTask` from inherited custom task hierarchy
* __NEW__ Add tested, multi-lingual user guide - {uri-github}/pull/677[Pull Request 677]
* __NEW__ Make `DockerBuildImage` task incremental and cacheable - {uri-github}/pull/672[Pull Request 672]
* Introduce method for translating username/password into a PasswordCredentials - {uri-github}/pull/668[Pull Request 668]
* Add `@CompileStatic` to much of the code base that can support it - {uri-github}/pull/676[Pull Request 676]
* Use appropriate types for Groovy/Kotlin DSL interoperability for reactive streams functionality - {uri-github}/pull/678[Pull Request 678]

[discrete]
=== v3.6.2 (October 2, 2018)

* `DockerCreateContainer` gained `pid` option - {uri-github}/pull/652[Pull Request 652]
* `Dockerfile` validation takes into account comments - {uri-github}/issues/657[Issue 657]
* Bump `docker-java-shaded` to `rc-5` - {uri-github}/issues/660[Issue 660]
* `DockerBuildImage` gained `network` option - {uri-github}/issues/608[Issue 608]
* `DockerCreateContainer` gained `autoRemove` option - {uri-github}/issues/639[Issue 639]

[discrete]
=== v3.6.1 (August 21, 2018)

* Task `DockerClient`, and the passed dockerClient object, is now cached by configuration - {uri-github}/pull/644[Pull Request 644]
* Task `DockerBuildImage` gained option `cacheFrom` - {uri-github}/pull/646[Pull Request 646]

[discrete]
=== v3.6.0 (August 7, 2018)

* Use smaller base images for convention plugins - {uri-github}/pull/636[Pull Request 636]
* Fully deprecate MAINTAINER instruction and replace with LABEL - {uri-github}/pull/635[Pull Request 635]
* Make Dockerfile task cacheable via Gradle build cache - {uri-github}/pull/641[Pull Request 641]

[discrete]
=== v3.5.0 (July 24, 2018)

* Support for dockerizing Spring Boot applications - {uri-github}/pull/619[Pull Request 619]
* Removed deprecated `ResponseHandler` - {uri-github}/pull/624[Pull Request 624]
* Introduce user guide for more readable, maintainable documentation - {uri-github}/pull/630[Pull Request 630]
* Upgrade to Gradle Wrapper 4.9

[discrete]
=== v3.4.4 (July 15, 2018)

* Task `DockerLivenessContainer` had its polling logic reworked to be more failure proof.

[discrete]
=== v3.4.3 (July 8, 2018)

* Task `DockerCreateContainer` has its method `withEnvVars` changed to accept a `def`, which in turn can be anything (String, Integer, Closure, etc) but will eventually have all its keys/values resolved to java strings. - {uri-github}/pull/616[Pull Request 617]
* Task `DockerLivenessContainer` had minor verbiage changes to its output. - {uri-github}/pull/616[Pull Request 617]
* Use `-all` wrapper to better integrate with IDE's. - {uri-github}/pull/616[Pull Request 617]

[discrete]
=== v3.4.2 (July 7, 2018)

* Shade cglib and its dependencies. - {uri-github}/pull/616[Pull Request 616]
* Bump `docker-java` to `3.1.0-rc-3`. - {uri-github}/pull/616[Pull Request 616]

[discrete]
=== v3.4.1 (July 3, 2018)

* BUGFIX for task `DockerCreateContainer` where `envs` were not being properly honored. - {uri-github}/pull/614[Pull Request 614]

[discrete]
=== v3.4.0 (July 1, 2018)

* Task `Dockerfile` now supports multi-stage builds - {uri-github}/pull/607[Pull Request 607]
* When plugin is applied to sub-projects we will additionally search rootProject for repos to use - {uri-github}/pull/610[Pull Request 610]
* Task `DockerCreateContainer` has deprecated `env` in favor of `envVars` which can ONLY be added to with a helper method `withEnvVar` that can be called **N** times for setting environment variables. - {uri-github}/pull/609[Pull Request 609]
* Task `DockerLivenessProbeContainer` has been renamed to `DockerLivenessContainer`. It's `probe` method has been renamed to `livnessProbe`. Task `DockerExecStopContainer` had its `probe` method renamed to `execStopProbe`. - {uri-github}/pull/611[Pull Request 611]

[discrete]
=== v3.3.6 (June 23, 2018)

* Task `DockerCopyFileToContainer` can now copy **N** number of files via methods `withFile` and `withTarFile`. - {uri-github}/pull/605[Pull request 605]

[discrete]
=== v3.3.5 (June 17, 2018)

* Fix bug within `DockerExecContainer` when `exitCode` can be null (default to 0 if so). - {uri-github}/pull/602[Pull request 602]

[discrete]
=== v3.3.4 (June 16, 2018)

* Task `DockerExecContainer` gained ability to specify multiple execution commands to be run. - {uri-github}/pull/600[Pull request 600]
* Various tasks had their progress logger output cleaned up. - {uri-github}/pull/601[Pull request 601]

[discrete]
=== v3.3.3 (June 8, 2018)

* Explicitly call `toString()` on values in maps passed to Docker API. - {uri-github}/pull/595[Pull request 595]
* Task `DockerLivenessProbeContainer` gained method `lastInspection()` which will return the last "docker inspect container" response AFTER execution has completed. - {uri-github}/pull/596[Pull request 596]

[discrete]
=== v3.3.2 (June 5, 2018)

* Task `DockerLivenessProbeContainer` now has the `probe` option set to optional and if NOT defined will fallback to checking if container is in a running state. - {uri-github}/pull/594[Pull request 594]

[discrete]
=== v3.3.1 (June 2, 2018)

* Various minor refactorings surrounding new task `DockerExecStopContainer`. - {uri-github}/pull/592[Pull request 592]

[discrete]
=== v3.3.0 (June 1, 2018)

* Added task `DockerClient` to pass the raw `docker-java` client to the `onNext` closure if defined. - {uri-github}/pull/589[Pull request 589]
* Task `DockerCreateContainer` will now log the `containerName` if set, which is the standard within this plugin, otherwise fallback to the just created `containerId`.
* Task `DockerExecContainer` gained option `successOnExitCodes` to allow user to define a list of successful exit codes the exec is allowed to return and will fail if not in list. Default behavior is to do no check. - {uri-github}/pull/590[Pull request 590]
* Added task `DockerLivenessProbeContainer` which will poll, for some defined amount of time, a running containers logs looking for a given message and fail if not found. - {uri-github}/pull/587[Pull request 587]
* Added task `DockerExecStopContainer` to allow the user to execute an arbitrary cmd against a container, polling for it to enter a non-running state, and if that does not succeed in time issue stop request. - {uri-github}/pull/591[Pull request 591]

[discrete]
=== v3.2.9 (May 22, 2018)

* Fixed a bug in task `DockerCreateContainer` where option `cpuset` is now renamed differently in `docker-java`. - {uri-github}/pull/585[Pull request 585]

[discrete]
=== v3.2.8 (April 30, 2018)

* Task `DockerExecContainer` gained option `user` to specify a user/group. - {uri-github}/pull/574[Pull request 574]
* Task `DockerCreateContainer` gained option `ipV4Address` to specify a specific ipv4 address to use. - {uri-github}/pull/449[Pull request 449]
* Bump gradle to `4.7`. - {uri-github}/pull/578[Pull request 578]

[discrete]
=== v3.2.7 (April 19, 2018)

* Task `DockerSaveImage` gained option `useCompression` to optionally gzip the created tar. - {uri-github}/pull/565[Pull request 565]
* Add `javax.activation` dependency for users who are working with jdk9+. - {uri-github}/pull/572[Pull request 572]

[discrete]
=== v3.2.6 (March 31, 2018)

* Cache `docker-java` client instead of recreating for every request/task invocation. This is a somewhat big internal change but has a lot of consequences and so it was deserving of its own point release. - {uri-github}/pull/558[Pull request 558]

[discrete]
=== v3.2.5 (March 2, 2018)

* Added `macAddress` option to task `DockerCreateContainer` - {uri-github}/pull/538[Pull request 538]
* Initial work for `codenarc` analysis - {uri-github}/pull/537[Pull request 537]
* Use of `docker-java-shaded` library in favor of `docker-java` proper to get around class-loading/clobbering issues - {uri-github}/pull/550[Pull request 550]
* Honor DOCKER_CERT_PATH env var if present - {uri-github}/pull/549[Pull request 549]
* Task `DockerSaveImage` will now create file for you should it not exist - {uri-github}/pull/552[Pull request 552]
* Task `DockerPushImage` will now include tag info in logging if applicable - {uri-github}/pull/554[Pull request 554]
* !!!!! BREAKING: Property `inputStream` of task `DockerLoadImage` has been changed from type `InputStream` to `Closure<InputStream>`. This was done to allow scripts/code/pipelines to delay getting the image and side-step this property getting configured during gradles config-phase. - {uri-github}/pull/552[Pull request 552]

[discrete]
=== v3.2.4 (February 5, 2018)

* Use openjdk as a default image in DockerJavaApplicationPlugin - {uri-github}/pull/528[Pull request 528]
* Add `skipMaintainer` to `DockerJavaApplication` - {uri-github}/pull/529[Pull request 529]
* Can now define `labels` in `DockerCreateContainer` task - {uri-github}/pull/530[Pull request 530]
* Added task `DockerRenameContainer` - {uri-github}/pull/533[Pull request 533]

[discrete]
=== v3.2.3 (January 26, 2018)

* If `DockerWaitHealthyContainer` is run on an image which was not built with `HEALTHCHECK` than fallback to using generic status - {uri-github}/pull/520[Pull request 520]

[discrete]
=== v3.2.2 (January 17, 2018)

* Bump gradle to `4.3.1` - {uri-github}/pull/500[Pull request 500]
* Bug fix for {uri-github}/issues/490[Issue 490] wherein `on*` reactive-stream closures are evaluated with null exception when using gradle-4.3 - {uri-github}/commit/93b80f2bd18c4f04d0f58443b45c59cb58a54e77[Commit 93b80f]
* Support for zero exposed ports in `DockerJavaApplication` - {uri-github}/pull/504[Pull request 504]

[discrete]
=== v3.2.1 (November 22, 2017)

* Bump gradle to `4.2` - {uri-github}/pull/471[Pull request 471]
* Fix setting `shmSize` when creating container - {uri-github}/pull/480[Pull request 480]
* Add support for entrypoint on `DockerCreateContainer` - {uri-github}/pull/479[Pull request 479]
* Bump verison of docker-java to 3.0.14 - {uri-github}/pull/482[Pull request 482]
* Added `DockerWaitHealthyContainer` task - {uri-github}/pull/485[Pull request 485]
* Use groovy join function in favor or jdk8 join function. - {uri-github}/pull/498[Pull request 498]

[discrete]
=== v3.2.0 (September 29, 2017)

* Update `createBind` to use docker-java `parse` method - {uri-github}/pull/452[Pull request 452]
* Allow Docker to cache app libraries dir when `DockerJavaApplication` plugin is used - {uri-github}/pull/459[Pull request 459]

[discrete]
=== v3.1.0 (August 21, 2017)

* `DockerListImages` gained better support for filters - {uri-github}/pull/414[Pull request 414]
* Use `alpine:3.4` image in functional tests - {uri-github}/pull/416[Pull request 416]
* `DockerBuildImage` and `DockerCreateContainer` gained optional argument `shmSize` - {uri-github}/pull/413[Pull request 413]
* Added tasks `DockerInspectNetwork`, `DockerCreateNetwork`, and `DockerRemoveNetwork` - {uri-github}/pull/422[Pull request 422]
* Add statically typed methods for configuring plugin with Kotlin - {uri-github}/pull/426[Pull request 426]
* Fix `Dockerfile` task up-to-date logic - {uri-github}/pull/433[Pull request 433]
* Multiple ENVs are not set the same way as single ENV instructions - {uri-github}/pull/415[Pull request 415]
* `DockerCreateContainer` changed optional input `networkMode` to `network` to better align with docker standatds - {uri-github}/pull/440[Pull request 440]
* The first instruction of a Dockerfile has to be FROM except for Docker versions later than 17.05 - {uri-github}/pull/435[Pull request 435]
* Bump verison of docker-java to 3.0.13 - {uri-github}/commit/b2d93671ed0a0b7177a450d503c28eca6aa6795d[Commit b2d936]

[discrete]
=== v3.0.10 (July 7, 2017)

* Bump verison of docker-java to 3.0.12 - {uri-github}/pull/408[Pull request 408]
* Publish javadocs on new release - {uri-github}/pull/405[Pull request 405]

[discrete]
=== v3.0.9 (July 4, 2017)

* Bump verison of docker-java to 3.0.11 - {uri-github}/pull/403[Pull request 403]
* New release process - {uri-github}/pull/402[Pull request 402]

[discrete]
=== v3.0.8 (June 16, 2017)

* Task `DockerPullImage` gained method `getImageId()` which returns the fully qualified imageId of the image that was just pulled - {uri-github}/pull/379[Pull request 379]
* Task `DockerBuildImage` gained property `tags` which allows for multiple tags to be specified when building an image - {uri-github}/pull/380[Pull request 380]
* Task `DockerCreateContainer` gained property `networkAliases` - {uri-github}/pull/384[Pull request 384]

[discrete]
=== v3.0.7 (May 17, 2017)

* Invoke onNext closures call() method explicitly - {uri-github}/pull/368[Pull request 368]
* Adds new task DockerInspectExecContainer which allows to inspect exec instance - {uri-github}/pull/362[Pull request 362]
* `functionalTest`'s can now run against a native docker instance - {uri-github}/pull/369[Pull request 369]
* `DockerLogsContainer` now preserves leading space - {uri-github}/pull/370[Pull request 370]
* Allow customization of app plugin entrypoint/cmd instructions - {uri-github}/pull/359[Pull request 359]
* Task `Dockerfile` will no longer be forced as `UP-TO-DATE`, instead the onus will be put on developers to code this should they want this functionality. - {uri-github}/issues/357[Issue 357]
* Now that `functionalTest`'s work natively, and in CI, add the test `started`, `passed` and `failed` logging messages so as to make it absolutely clear to users what is being run vs having no output at all. - {uri-github}/pull/373[Pull request 373]
* Bump `docker-java` to v`3.0.10` - {uri-github}/pull/378[Pull request 378]

[discrete]
=== v3.0.6 (March 2, 2017)

* Bump vof docker-java to 3.0.7 - {uri-github}/pull/331[Pull request 331]
* Add support for label parameter on docker image creation - {uri-github}/pull/332[Pull request 332]

[discrete]
=== v3.0.5 (December 27, 2016)

* Support multiple variables per singled ENV cmd - {uri-github}/pull/311[Pull request 311]
* Implement a sane default docker URL based on environment - {uri-github}/pull/313[Pull request 313]
* Implement https://github.com/reactive-streams/reactive-streams-jvm/#2-subscriber-code[reactive-stream] methods `onNext` and `onComplete` for all tasks - {uri-github}/pull/307[Pull request 307]

[discrete]
=== v3.0.4 (December 1, 2016)

* Implement https://github.com/reactive-streams/reactive-streams-jvm/#2-subscriber-code[reactive-stream] method `onError` for all tasks - {uri-github}/pull/302[Pull request 302]
* Bump docker-java to 3.0.6 - {uri-github}/pull/279[Pull request 279]

[discrete]
=== v3.0.3 (September 6, 2016)

* Print error messages received from docker engine when build fails - {uri-github}/pull/265[Pull request 265]
* Bump docker-java to 3.0.5 - {uri-github}/pull/263[Pull request 263]
* Add support for `force` removal on `DockerRemoveImage` - {uri-github}/pull/266[Pull request 266]
* Various fixes and cleanups as well default to alpine image for all functional tests - {uri-github}/pull/269[Pull request 269]
* Added `editorconfig` file with some basic defaults - {uri-github}/pull/270[Pull request 270]

[discrete]
=== v3.0.2 (August 14, 2016)

* Add support for build-time variables in `DockerBuildImage` task - {uri-github}/pull/240[Pull request 240]
* Fix incorrect docker-java method name in `DockerCreateContainer` task - {uri-github}/pull/242[Pull request 242]
* Can define devices on `DockerCreateContainer` task - {uri-github}/pull/245[Pull request 245]
* Can now supply multiple ports when working with `docker-java-application` - {uri-github}/pull/254[Pull request 254]
* Bump docker-java to 3.0.2 - {uri-github}/pull/259[Pull request 259]
* If buildscript repos are required make sure they are added after evaluation - {uri-github}/pull/260[Pull request 260]

[discrete]
=== v3.0.1 (July 6, 2016)

* Simplify Gradle TestKit usage - {uri-github}/pull/225[Pull request 225]
* Ensure `tlsVerify` is set in addition to `certPath` for DockerClientConfig setup - {uri-github}/pull/230[Pull request 230]
* Upgrade to Gradle 2.14.

[discrete]
=== v3.0.0 (June 5, 2016)

* Task `DockerLogsContainer` gained attribute `sink` - {uri-github}/pull/203[Pull request 203]
* Task `DockerBuildImage` will no longer insert extra newline as part of build output - {uri-github}/pull/206[Pull request 206]
* Upgrade to docker-java 3.0.0 - {uri-github}/pull/217[Pull request 217]
* Fallback to buildscript.repositories for internal dependency resolution if no repositories were defined - {uri-github}/pull/218[Pull request 218]
* Added task `DockerExecContainer` - {uri-github}/pull/221[Pull request 221]
* Added task `DockerCopyFileToContainer` - {uri-github}/pull/222[Pull request 222]
* Task `DockerCreateContainer` gained attribute `restartPolicy` - {uri-github}/pull/224[Pull request 224]
* Remove use of Gradle internal methods.
* Added ISSUES.md file.
* Upgrade to Gradle 2.13.

[discrete]
=== v2.6.8 (April 10, 2016)

* Added task `DockerLogsContainer` - {uri-github}/pull/181[Pull request 181]
* Bump docker-java to v2.3.3 - {uri-github}/pull/183[Pull request 183]
* Bug fix when not checking if parent dir already exists before creating with `DockerCopyFileToContainer` - {uri-github}/pull/186[Pull request 186]
* `DockerWaitContainer` now produces exitCode - {uri-github}/pull/189[Pull request 189]
* `apiVersion` can now be set on `DockerExtension` and overriden on all tasks - {uri-github}/pull/182[Pull request 182]
* Internal fix where task variables had to be defined - {uri-github}/pull/194[Pull request 194]

[discrete]
=== v2.6.7 (March 10, 2016)

* Upgrade to Gradle 2.11.
* Bug fix when copying single file from container and hostPath is set to directory for `DockerCopyFileFromContainer` - {uri-github}/pull/163[Pull request 163]
* Step reports are now printed to stdout by default for `DockerBuildImage` - {uri-github}/pull/145[Pull request 145]
* UP-TO-DATE functionality has been removed from `DockerBuildImage` as there were too many corner cases to account for - {uri-github}/pull/172[Pull request 172]

[discrete]
=== v2.6.6 (February 27, 2016)

* Added docker step reports for `DockerBuildImage` - {uri-github}/pull/145[Pull request 145]
* Added `onlyIf` check for `DockerBuildImage` - {uri-github}/pull/139[Pull request 139]
* Added method logConfig for `DockerCreateContainer` - {uri-github}/pull/157[Pull request 157]
* Various commands can now be passed closures for `Dockerfile` - {uri-github}/pull/155[Pull request 155]
* Fix implementation of exposedPorts for `DockerCreateContainer` - {uri-github}/pull/140[Pull request 140]
* Upgrade to Docker Java 2.2.2 - {uri-github}/pull/158[Pull request 158].

[discrete]
=== v2.6.5 (January 16, 2016)

* Fix implementation of `DockerCopyFileFromContainer` - {uri-github}/pull/135[Pull request 135].
* Add `networkMode` property to `DockerCreateContainer` - {uri-github}/pull/114[Pull request 114].
* Upgrade to Docker Java 2.1.4 - {uri-github}/issues/138[Issue 138].

[discrete]
=== v2.6.4 (December 24, 2015)

* Expose privileged property on `DockerCreateContainer` - {uri-github}/pull/130[Pull request 130].

[discrete]
=== v2.6.3 (December 23, 2015)

* Expose force and removeVolumes properties on `DockerRemoveContainer` - {uri-github}/pull/129[Pull request 129].

[discrete]
=== v2.6.2 (December 22, 2015)

* Expose support for LogDriver on `DockerCreateContainer` - {uri-github}/pull/118[Pull request 118].
* Upgrade to Docker Java 2.1.2.

[discrete]
=== v2.6.1 (September 21, 2015)

* Correct the `withVolumesFrom` call on `DockerCreateContainer` task which needs to get a `VolumesFrom[]` array as the parameter - {uri-github}/pull/102[Pull request 102].
* Upgrade to Docker Java 2.1.1 - {uri-github}/pull/109[Pull request 109].

[discrete]
=== v2.6 (August 30, 2015)

* Upgrade to Docker Java 2.1.0 - {uri-github}/pull/92[Pull request 92].
_Note:_ The Docker Java API changed vastly with v2.0.0. The tasks `DockerBuildImage`, `DockerPullImage` and
`DockerPushImage` do not provide a response handler anymore. This is a breaking change. Future versions of the plugin
might open up the response handling again in some way.
* `DockerListImages` with `filter` call a wrong function from `ListImagesCmdImpl.java` - {uri-github}/issues/105[Issue 105].

[discrete]
=== v2.5.2 (August 15, 2015)

* Fix listImages task throwing GroovyCastException - {uri-github}/issues/96[Issue 96].
* Add support for publishAll in DockerCreateContainer - {uri-github}/pull/94[Pull request 94].
* Add optional dockerFile option to the DockerBuildImage task - {uri-github}/pull/47[Pull request 47].

[discrete]
=== v2.5.1 (July 29, 2015)

* Adds Dockerfile support for the LABEL instruction - {uri-github}/pull/86[Pull request 86].
* Usage of https://github.com/docker-java/docker-java[docker-java library] v1.4.0. Underlying API does not provide
setting port bindings for task `DockerStartContainer` anymore. Needs to be set on `DockerCreateContainer`.

[discrete]
=== v2.5 (July 18, 2015)

* Expose response handler for `DockerListImages` task - v[Issue 75].
* Pass in credentials when building an image - {uri-github}/issues/76[Issue 76].

[discrete]
=== v2.4.1 (July 4, 2015)

* Add `extraHosts` property to task `DockerCreateContainer` - {uri-github}/pull/79[Pull request 79].
* Add `pull` property to task `DockerBuildImage` - {uri-github}/pull/78[Pull request 78].

[discrete]
=== v2.4 (May 16, 2015)

* Added missing support for properties `portBindings` and `cpuset` in `CreateContainer` - {uri-github}/pull/66[Pull request 66].
* Expose response handlers so users can inject custom handling logic - {uri-github}/issues/65[Issue 65].
* Upgrade to Gradle 2.4 including all compatible plugins and libraries.

[discrete]
=== v2.3.1 (April 25, 2015)

* Added support for `Binds` when creating containers - {uri-github}/pull/54[Pull request 54].
* Added task for copying files from a container to a host - {uri-github}/pull/57[Pull request 57].

[discrete]
=== v2.3 (April 18, 2015)

* Added task `DockerInspectContainer` - {uri-github}/pull/44[Pull request 44].
* Added property `containerName` to task `DockerCreateContainer` - {uri-github}/pull/44[Pull request 44].
* Allow for linking containers for task `DockerCreateContainer` - {uri-github}/pull/53[Pull request 53].
* Usage of https://github.com/docker-java/docker-java[docker-java library] v1.2.0.

[discrete]
=== v2.2 (April 12, 2015)

* Usage of https://github.com/docker-java/docker-java[docker-java library] v1.1.0.

[discrete]
=== v2.1 (March 24, 2015)

* Renamed property `registry` to `registryCredentials` for plugin extension and tasks implementing `RegistryCredentialsAware` to better indicate its purpose.
_Note:_ This is a breaking change.

[discrete]
=== v2.0.3 (March 20, 2015)

* Allow for specifying port bindings for container start command. - {uri-github}/issues/30[Issue 30].
* Throw an exception if an error response is encountered - {uri-github}/issues/37[Issue 37].
* Upgrade to Gradle 2.3.

[discrete]
=== v2.0.2 (February 19, 2015)

* Set source and target compatibility to Java 6 - {uri-github}/issues/32[Issue 32].

[discrete]
=== v2.0.1 (February 10, 2015)

* Extension configuration method for `DockerJavaApplicationPlugin` needs to be registered via extension instance - {uri-github}/issues/28[Issue 28].

[discrete]
=== v2.0 (February 4, 2015)

* Upgrade to Gradle 2.2.1 including all compatible plugins and libraries.

[discrete]
=== v0.8.3 (February 4, 2015)

* Add project group to default tag built by Docker Java application plugin - {uri-github}/issues/25[Issue 25].

[discrete]
=== v0.8.2 (January 30, 2015)

* Expose method for task `Dockerfile` for providing vanilla Docker instructions.

[discrete]
=== v0.8.1 (January 24, 2015)

* Usage of https://github.com/docker-java/docker-java[docker-java library] v0.10.5.
* Correctly create model instances for create container task - {uri-github}/issues/19[Issue 19].

[discrete]
=== v0.8 (January 7, 2014)

* Allow for pushing to Docker Hub - {uri-github}/issues/18[Issue 18].
* Better handling of API responses.
* Note: Change to plugin extension. The property `docker.serverUrl` is now called `docker.url`. Instead of `docker.credentials`, you will need to use `docker.registry`.

[discrete]
=== v0.7.2 (December 23, 2014)

* `Dockerfile` task is always marked UP-TO-DATE after first execution - {uri-github}/issues/13[Issue 13].
* Improvements to `Dockerfile` task - {uri-github}/pull/16[Pull request 16].
    * Fixed wrong assignment of key field in  environment variable instruction.
    * Allow for providing multiple ports to the expose instruction.

[discrete]
=== v0.7.1 (December 16, 2014)

* Fixed entry point definition of Dockerfile set by Java application plugin.

[discrete]
=== v0.7 (December 14, 2014)

* Allow for properly add user-based instructions to Dockfile task with predefined instructions without messing up the order. - {uri-github}/issues/12[Issue 12].
* Renamed task `dockerCopyDistTar` to `dockerCopyDistResources` to better express intent.

[discrete]
=== v0.6.1 (December 11, 2014)

* Allow for setting path to certificates for communicating with Docker over SSL - {uri-github}/issues/10[Issue 10].

[discrete]
=== v0.6 (December 7, 2014)

* Usage of https://github.com/docker-java/docker-java[docker-java library] v0.10.4.
* Added Docker Java application plugin.
* Better documentation.

[discrete]
=== v0.5 (December 6, 2014)

* Fixed implementations of tasks `DockerPushImage` and `DockerCommitImage` - {uri-github}/issues/11[Issue 11].

[discrete]
=== v0.4 (November 27, 2014)

* Added task for creating a Dockerfile.

[discrete]
=== v0.3 (November 23, 2014)

* Usage of https://github.com/docker-java/docker-java[docker-java library] v0.10.3.
* Changed package name to `com.bmuschko.gradle.docker`.
* Changed group ID to `com.bmuschko`.
* Adapted plugin IDs to be compatible with Gradle's plugin portal.

[discrete]
=== v0.2 (June 19, 2014)

* Usage of https://github.com/docker-java/docker-java[docker-java library] v0.8.2.
* Provide custom task type for push operation.
* Support for using remote URLs when building image - {uri-github}/issues/3[Issue 3].

[discrete]
=== v0.1 (May 11, 2014)

* Initial release.

== Change Log

[discrete]
=== v4.2.0 (TBA)

* Applying the Docker Spring Boot application plugin with the plugins DSL should not fail - {uri-github}/issues/702[Issue 702]
* **Breaking Change!** Remove all deprecations - {uri-github}/issues/675[Issue 675]
    * Removed `DockerCreateContainer.env`, replaced by `DockerCreateContainer.envVars`
    * Removed `DockerBuildImage.tag`, replaced by `DockerBuildImage.tags`
    * Removed `DockerExecContainer.cmd`, replaced by `DockerExecContainer.commands`
    * Removed `DockerExecContainer.execId`, replaced by `DockerExecContainer.execIds`
* `DockerBuildImage.tags.add/addAll` only work after using `tags.set` - {uri-github}/issues/712[Issue 712]
* User guide sample on Docker `links` should not use `doFirst` - {uri-github}/issues/715[Issue 715]

[discrete]
=== v4.1.0 (November 29, 2018)

* Ensure compatibility with Gradle 5.0 - {uri-github}/pull/693[Pull Request 709]
* **Breaking Change!** The existing field `timeout` in custom tasks had to be renamed due to https://docs.gradle.org/5.0/userguide/more_about_tasks.html#sec:task_timeouts[Gradle's 5.0 built-in timeout feature]

[discrete]
=== v4.0.5 (November 22, 2018)

* Avoid the use of application plugin extension to ensure compatibility - {uri-github}/issues/706[Issue 706]

[discrete]
=== v4.0.4 (November 4, 2018)

* Implementation to make `DockerBuildImage` task incremental and cacheable is not sufficient - {uri-github}/issues/697[Issue 697]

[discrete]
=== v4.0.3 (October 30, 2018)

* Correctly handle the case where `inputDir` is not where `dockerFile` is located - {uri-github}/pull/693[Pull Request 693]

[discrete]
=== v4.0.2 (October 27, 2018)

* Output file name containing the image ID created by `DockerBuildImage` should work on Windows - {uri-github}/pull/690[Pull Request 690]

[discrete]
=== v4.0.1 (October 20, 2018)

* Returned image ID for a `DockerBuildImage` task should never be null - {uri-github}/pull/687[Pull Request 687]

[discrete]
=== v4.0.0 (October 12, 2018)

* **Breaking Change!** Use `Provider` concept throughout to support lazy evaluation via public API - {uri-github}/pull/659[Pull Request 659]
* **Breaking Change!** Consumers of this plugin will have to use Java 8 or higher - {uri-github}/pull/676[Pull Request 676]
* **Breaking Change!** Removal of `AbstractReactiveStreamsTask` from inherited custom task hierarchy
* __NEW__ Add tested, multi-lingual user guide - {uri-github}/pull/677[Pull Request 677]
* __NEW__ Make `DockerBuildImage` task incremental and cacheable - {uri-github}/pull/672[Pull Request 672]
* Introduce method for translating username/password into a PasswordCredentials - {uri-github}/pull/668[Pull Request 668]
* Add `@CompileStatic` to much of the code base that can support it - {uri-github}/pull/676[Pull Request 676]
* Use appropriate types for Groovy/Kotlin DSL interoperability for reactive streams functionality - {uri-github}/pull/678[Pull Request 678]

[discrete]
=== v3.6.2 (October 2, 2018)

* `DockerCreateContainer` gained `pid` option - {uri-github}/pull/652[Pull Request 652]
* `Dockerfile` validation takes into account comments - {uri-github}/issues/657[Issue 657]
* Bump `docker-java-shaded` to `rc-5` - {uri-github}/issues/660[Issue 660]
* `DockerBuildImage` gained `network` option - {uri-github}/issues/608[Issue 608]
* `DockerCreateContainer` gained `autoRemove` option - {uri-github}/issues/639[Issue 639]

[discrete]
=== v3.6.1 (August 21, 2018)

* Task `DockerClient`, and the passed dockerClient object, is now cached by configuration - {uri-github}/pull/644[Pull Request 644]
* Task `DockerBuildImage` gained option `cacheFrom` - {uri-github}/pull/646[Pull Request 646]

[discrete]
=== v3.6.0 (August 7, 2018)

* Use smaller base images for convention plugins - {uri-github}/pull/636[Pull Request 636]
* Fully deprecate MAINTAINER instruction and replace with LABEL - {uri-github}/pull/635[Pull Request 635]
* Make Dockerfile task cacheable via Gradle build cache - {uri-github}/pull/641[Pull Request 641]

[discrete]
=== v3.5.0 (July 24, 2018)

* Support for dockerizing Spring Boot applications - {uri-github}/pull/619[Pull Request 619]
* Removed deprecated `ResponseHandler` - {uri-github}/pull/624[Pull Request 624]
* Introduce user guide for more readable, maintainable documentation - {uri-github}/pull/630[Pull Request 630]
* Upgrade to Gradle Wrapper 4.9

[discrete]
=== v3.4.4 (July 15, 2018)

* Task `DockerLivenessContainer` had its polling logic reworked to be more failure proof.

[discrete]
=== v3.4.3 (July 8, 2018)

* Task `DockerCreateContainer` has its method `withEnvVars` changed to accept a `def`, which in turn can be anything (String, Integer, Closure, etc) but will eventually have all its keys/values resolved to java strings. - {uri-github}/pull/616[Pull Request 617]
* Task `DockerLivenessContainer` had minor verbiage changes to its output. - {uri-github}/pull/616[Pull Request 617]
* Use `-all` wrapper to better integrate with IDE's. - {uri-github}/pull/616[Pull Request 617]

[discrete]
=== v3.4.2 (July 7, 2018)

* Shade cglib and its dependencies. - {uri-github}/pull/616[Pull Request 616]
* Bump `docker-java` to `3.1.0-rc-3`. - {uri-github}/pull/616[Pull Request 616]

[discrete]
=== v3.4.1 (July 3, 2018)

* BUGFIX for task `DockerCreateContainer` where `envs` were not being properly honored. - {uri-github}/pull/614[Pull Request 614]

[discrete]
=== v3.4.0 (July 1, 2018)

* Task `Dockerfile` now supports multi-stage builds - {uri-github}/pull/607[Pull Request 607]
* When plugin is applied to sub-projects we will additionally search rootProject for repos to use - {uri-github}/pull/610[Pull Request 610]
* Task `DockerCreateContainer` has deprecated `env` in favor of `envVars` which can ONLY be added to with a helper method `withEnvVar` that can be called **N** times for setting environment variables. - {uri-github}/pull/609[Pull Request 609]
* Task `DockerLivenessProbeContainer` has been renamed to `DockerLivenessContainer`. It's `probe` method has been renamed to `livnessProbe`. Task `DockerExecStopContainer` had its `probe` method renamed to `execStopProbe`. - {uri-github}/pull/611[Pull Request 611]

[discrete]
=== v3.3.6 (June 23, 2018)

* Task `DockerCopyFileToContainer` can now copy **N** number of files via methods `withFile` and `withTarFile`. - {uri-github}/pull/605[Pull request 605]

[discrete]
=== v3.3.5 (June 17, 2018)

* Fix bug within `DockerExecContainer` when `exitCode` can be null (default to 0 if so). - {uri-github}/pull/602[Pull request 602]

[discrete]
=== v3.3.4 (June 16, 2018)

* Task `DockerExecContainer` gained ability to specify multiple execution commands to be run. - {uri-github}/pull/600[Pull request 600]
* Various tasks had their progress logger output cleaned up. - {uri-github}/pull/601[Pull request 601]

[discrete]
=== v3.3.3 (June 8, 2018)

* Explicitly call `toString()` on values in maps passed to Docker API. - {uri-github}/pull/595[Pull request 595]
* Task `DockerLivenessProbeContainer` gained method `lastInspection()` which will return the last "docker inspect container" response AFTER execution has completed. - {uri-github}/pull/596[Pull request 596]

[discrete]
=== v3.3.2 (June 5, 2018)

* Task `DockerLivenessProbeContainer` now has the `probe` option set to optional and if NOT defined will fallback to checking if container is in a running state. - {uri-github}/pull/594[Pull request 594]

[discrete]
=== v3.3.1 (June 2, 2018)

* Various minor refactorings surrounding new task `DockerExecStopContainer`. - {uri-github}/pull/592[Pull request 592]

[discrete]
=== v3.3.0 (June 1, 2018)

* Added task `DockerClient` to pass the raw `docker-java` client to the `onNext` closure if defined. - {uri-github}/pull/589[Pull request 589]
* Task `DockerCreateContainer` will now log the `containerName` if set, which is the standard within this plugin, otherwise fallback to the just created `containerId`.
* Task `DockerExecContainer` gained option `successOnExitCodes` to allow user to define a list of successful exit codes the exec is allowed to return and will fail if not in list. Default behavior is to do no check. - {uri-github}/pull/590[Pull request 590]
* Added task `DockerLivenessProbeContainer` which will poll, for some defined amount of time, a running containers logs looking for a given message and fail if not found. - {uri-github}/pull/587[Pull request 587]
* Added task `DockerExecStopContainer` to allow the user to execute an arbitrary cmd against a container, polling for it to enter a non-running state, and if that does not succeed in time issue stop request. - {uri-github}/pull/591[Pull request 591]

[discrete]
=== v3.2.9 (May 22, 2018)

* Fixed a bug in task `DockerCreateContainer` where option `cpuset` is now renamed differently in `docker-java`. - {uri-github}/pull/585[Pull request 585]

[discrete]
=== v3.2.8 (April 30, 2018)

* Task `DockerExecContainer` gained option `user` to specify a user/group. - {uri-github}/pull/574[Pull request 574]
* Task `DockerCreateContainer` gained option `ipV4Address` to specify a specific ipv4 address to use. - {uri-github}/pull/449[Pull request 449]
* Bump gradle to `4.7`. - {uri-github}/pull/578[Pull request 578]

[discrete]
=== v3.2.7 (April 19, 2018)

* Task `DockerSaveImage` gained option `useCompression` to optionally gzip the created tar. - {uri-github}/pull/565[Pull request 565]
* Add `javax.activation` dependency for users who are working with jdk9+. - {uri-github}/pull/572[Pull request 572]

[discrete]
=== v3.2.6 (March 31, 2018)

* Cache `docker-java` client instead of recreating for every request/task invocation. This is a somewhat big internal change but has a lot of consequences and so it was deserving of its own point release. - {uri-github}/pull/558[Pull request 558]

[discrete]
=== v3.2.5 (March 2, 2018)

* Added `macAddress` option to task `DockerCreateContainer` - {uri-github}/pull/538[Pull request 538]
* Initial work for `codenarc` analysis - {uri-github}/pull/537[Pull request 537]
* Use of `docker-java-shaded` library in favor of `docker-java` proper to get around class-loading/clobbering issues - {uri-github}/pull/550[Pull request 550]
* Honor DOCKER_CERT_PATH env var if present - {uri-github}/pull/549[Pull request 549]
* Task `DockerSaveImage` will now create file for you should it not exist - {uri-github}/pull/552[Pull request 552]
* Task `DockerPushImage` will now include tag info in logging if applicable - {uri-github}/pull/554[Pull request 554]
* !!!!! BREAKING: Property `inputStream` of task `DockerLoadImage` has been changed from type `InputStream` to `Closure<InputStream>`. This was done to allow scripts/code/pipelines to delay getting the image and side-step this property getting configured during gradles config-phase. - {uri-github}/pull/552[Pull request 552]

[discrete]
=== v3.2.4 (February 5, 2018)

* Use openjdk as a default image in DockerJavaApplicationPlugin - {uri-github}/pull/528[Pull request 528]
* Add `skipMaintainer` to `DockerJavaApplication` - {uri-github}/pull/529[Pull request 529]
* Can now define `labels` in `DockerCreateContainer` task - {uri-github}/pull/530[Pull request 530]
* Added task `DockerRenameContainer` - {uri-github}/pull/533[Pull request 533]

[discrete]
=== v3.2.3 (January 26, 2018)

* If `DockerWaitHealthyContainer` is run on an image which was not built with `HEALTHCHECK` than fallback to using generic status - {uri-github}/pull/520[Pull request 520]

[discrete]
=== v3.2.2 (January 17, 2018)

* Bump gradle to `4.3.1` - {uri-github}/pull/500[Pull request 500]
* Bug fix for {uri-github}/issues/490[Issue 490] wherein `on*` reactive-stream closures are evaluated with null exception when using gradle-4.3 - {uri-github}/commit/93b80f2bd18c4f04d0f58443b45c59cb58a54e77[Commit 93b80f]
* Support for zero exposed ports in `DockerJavaApplication` - {uri-github}/pull/504[Pull request 504]

[discrete]
=== v3.2.1 (November 22, 2017)

* Bump gradle to `4.2` - {uri-github}/pull/471[Pull request 471]
* Fix setting `shmSize` when creating container - {uri-github}/pull/480[Pull request 480]
* Add support for entrypoint on `DockerCreateContainer` - {uri-github}/pull/479[Pull request 479]
* Bump verison of docker-java to 3.0.14 - {uri-github}/pull/482[Pull request 482]
* Added `DockerWaitHealthyContainer` task - {uri-github}/pull/485[Pull request 485]
* Use groovy join function in favor or jdk8 join function. - {uri-github}/pull/498[Pull request 498]

[discrete]
=== v3.2.0 (September 29, 2017)

* Update `createBind` to use docker-java `parse` method - {uri-github}/pull/452[Pull request 452]
* Allow Docker to cache app libraries dir when `DockerJavaApplication` plugin is used - {uri-github}/pull/459[Pull request 459]

[discrete]
=== v3.1.0 (August 21, 2017)

* `DockerListImages` gained better support for filters - {uri-github}/pull/414[Pull request 414]
* Use `alpine:3.4` image in functional tests - {uri-github}/pull/416[Pull request 416]
* `DockerBuildImage` and `DockerCreateContainer` gained optional argument `shmSize` - {uri-github}/pull/413[Pull request 413]
* Added tasks `DockerInspectNetwork`, `DockerCreateNetwork`, and `DockerRemoveNetwork` - {uri-github}/pull/422[Pull request 422]
* Add statically typed methods for configuring plugin with Kotlin - {uri-github}/pull/426[Pull request 426]
* Fix `Dockerfile` task up-to-date logic - {uri-github}/pull/433[Pull request 433]
* Multiple ENVs are not set the same way as single ENV instructions - {uri-github}/pull/415[Pull request 415]
* `DockerCreateContainer` changed optional input `networkMode` to `network` to better align with docker standatds - {uri-github}/pull/440[Pull request 440]
* The first instruction of a Dockerfile has to be FROM except for Docker versions later than 17.05 - {uri-github}/pull/435[Pull request 435]
* Bump verison of docker-java to 3.0.13 - {uri-github}/commit/b2d93671ed0a0b7177a450d503c28eca6aa6795d[Commit b2d936]

[discrete]
=== v3.0.10 (July 7, 2017)

* Bump verison of docker-java to 3.0.12 - {uri-github}/pull/408[Pull request 408]
* Publish javadocs on new release - {uri-github}/pull/405[Pull request 405]

[discrete]
=== v3.0.9 (July 4, 2017)

* Bump verison of docker-java to 3.0.11 - {uri-github}/pull/403[Pull request 403]
* New release process - {uri-github}/pull/402[Pull request 402]

[discrete]
=== v3.0.8 (June 16, 2017)

* Task `DockerPullImage` gained method `getImageId()` which returns the fully qualified imageId of the image that was just pulled - {uri-github}/pull/379[Pull request 379]
* Task `DockerBuildImage` gained property `tags` which allows for multiple tags to be specified when building an image - {uri-github}/pull/380[Pull request 380]
* Task `DockerCreateContainer` gained property `networkAliases` - {uri-github}/pull/384[Pull request 384]

[discrete]
=== v3.0.7 (May 17, 2017)

* Invoke onNext closures call() method explicitly - {uri-github}/pull/368[Pull request 368]
* Adds new task DockerInspectExecContainer which allows to inspect exec instance - {uri-github}/pull/362[Pull request 362]
* `functionalTest`'s can now run against a native docker instance - {uri-github}/pull/369[Pull request 369]
* `DockerLogsContainer` now preserves leading space - {uri-github}/pull/370[Pull request 370]
* Allow customization of app plugin entrypoint/cmd instructions - {uri-github}/pull/359[Pull request 359]
* Task `Dockerfile` will no longer be forced as `UP-TO-DATE`, instead the onus will be put on developers to code this should they want this functionality. - {uri-github}/issues/357[Issue 357]
* Now that `functionalTest`'s work natively, and in CI, add the test `started`, `passed` and `failed` logging messages so as to make it absolutely clear to users what is being run vs having no output at all. - {uri-github}/pull/373[Pull request 373]
* Bump `docker-java` to v`3.0.10` - {uri-github}/pull/378[Pull request 378]

[discrete]
=== v3.0.6 (March 2, 2017)

* Bump vof docker-java to 3.0.7 - {uri-github}/pull/331[Pull request 331]
* Add support for label parameter on docker image creation - {uri-github}/pull/332[Pull request 332]

[discrete]
=== v3.0.5 (December 27, 2016)

* Support multiple variables per singled ENV cmd - {uri-github}/pull/311[Pull request 311]
* Implement a sane default docker URL based on environment - {uri-github}/pull/313[Pull request 313]
* Implement https://github.com/reactive-streams/reactive-streams-jvm/#2-subscriber-code[reactive-stream] methods `onNext` and `onComplete` for all tasks - {uri-github}/pull/307[Pull request 307]

[discrete]
=== v3.0.4 (December 1, 2016)

* Implement https://github.com/reactive-streams/reactive-streams-jvm/#2-subscriber-code[reactive-stream] method `onError` for all tasks - {uri-github}/pull/302[Pull request 302]
* Bump docker-java to 3.0.6 - {uri-github}/pull/279[Pull request 279]

[discrete]
=== v3.0.3 (September 6, 2016)

* Print error messages received from docker engine when build fails - {uri-github}/pull/265[Pull request 265]
* Bump docker-java to 3.0.5 - {uri-github}/pull/263[Pull request 263]
* Add support for `force` removal on `DockerRemoveImage` - {uri-github}/pull/266[Pull request 266]
* Various fixes and cleanups as well default to alpine image for all functional tests - {uri-github}/pull/269[Pull request 269]
* Added `editorconfig` file with some basic defaults - {uri-github}/pull/270[Pull request 270]

[discrete]
=== v3.0.2 (August 14, 2016)

* Add support for build-time variables in `DockerBuildImage` task - {uri-github}/pull/240[Pull request 240]
* Fix incorrect docker-java method name in `DockerCreateContainer` task - {uri-github}/pull/242[Pull request 242]
* Can define devices on `DockerCreateContainer` task - {uri-github}/pull/245[Pull request 245]
* Can now supply multiple ports when working with `docker-java-application` - {uri-github}/pull/254[Pull request 254]
* Bump docker-java to 3.0.2 - {uri-github}/pull/259[Pull request 259]
* If buildscript repos are required make sure they are added after evaluation - {uri-github}/pull/260[Pull request 260]

[discrete]
=== v3.0.1 (July 6, 2016)

* Simplify Gradle TestKit usage - {uri-github}/pull/225[Pull request 225]
* Ensure `tlsVerify` is set in addition to `certPath` for DockerClientConfig setup - {uri-github}/pull/230[Pull request 230]
* Upgrade to Gradle 2.14.

[discrete]
=== v3.0.0 (June 5, 2016)

* Task `DockerLogsContainer` gained attribute `sink` - {uri-github}/pull/203[Pull request 203]
* Task `DockerBuildImage` will no longer insert extra newline as part of build output - {uri-github}/pull/206[Pull request 206]
* Upgrade to docker-java 3.0.0 - {uri-github}/pull/217[Pull request 217]
* Fallback to buildscript.repositories for internal dependency resolution if no repositories were defined - {uri-github}/pull/218[Pull request 218]
* Added task `DockerExecContainer` - {uri-github}/pull/221[Pull request 221]
* Added task `DockerCopyFileToContainer` - {uri-github}/pull/222[Pull request 222]
* Task `DockerCreateContainer` gained attribute `restartPolicy` - {uri-github}/pull/224[Pull request 224]
* Remove use of Gradle internal methods.
* Added ISSUES.md file.
* Upgrade to Gradle 2.13.

[discrete]
=== v2.6.8 (April 10, 2016)

* Added task `DockerLogsContainer` - {uri-github}/pull/181[Pull request 181]
* Bump docker-java to v2.3.3 - {uri-github}/pull/183[Pull request 183]
* Bug fix when not checking if parent dir already exists before creating with `DockerCopyFileToContainer` - {uri-github}/pull/186[Pull request 186]
* `DockerWaitContainer` now produces exitCode - {uri-github}/pull/189[Pull request 189]
* `apiVersion` can now be set on `DockerExtension` and overriden on all tasks - {uri-github}/pull/182[Pull request 182]
* Internal fix where task variables had to be defined - {uri-github}/pull/194[Pull request 194]

[discrete]
=== v2.6.7 (March 10, 2016)

* Upgrade to Gradle 2.11.
* Bug fix when copying single file from container and hostPath is set to directory for `DockerCopyFileFromContainer` - {uri-github}/pull/163[Pull request 163]
* Step reports are now printed to stdout by default for `DockerBuildImage` - {uri-github}/pull/145[Pull request 145]
* UP-TO-DATE functionality has been removed from `DockerBuildImage` as there were too many corner cases to account for - {uri-github}/pull/172[Pull request 172]

[discrete]
=== v2.6.6 (February 27, 2016)

* Added docker step reports for `DockerBuildImage` - {uri-github}/pull/145[Pull request 145]
* Added `onlyIf` check for `DockerBuildImage` - {uri-github}/pull/139[Pull request 139]
* Added method logConfig for `DockerCreateContainer` - {uri-github}/pull/157[Pull request 157]
* Various commands can now be passed closures for `Dockerfile` - {uri-github}/pull/155[Pull request 155]
* Fix implementation of exposedPorts for `DockerCreateContainer` - {uri-github}/pull/140[Pull request 140]
* Upgrade to Docker Java 2.2.2 - {uri-github}/pull/158[Pull request 158].

[discrete]
=== v2.6.5 (January 16, 2016)

* Fix implementation of `DockerCopyFileFromContainer` - {uri-github}/pull/135[Pull request 135].
* Add `networkMode` property to `DockerCreateContainer` - {uri-github}/pull/114[Pull request 114].
* Upgrade to Docker Java 2.1.4 - {uri-github}/issues/138[Issue 138].

[discrete]
=== v2.6.4 (December 24, 2015)

* Expose privileged property on `DockerCreateContainer` - {uri-github}/pull/130[Pull request 130].

[discrete]
=== v2.6.3 (December 23, 2015)

* Expose force and removeVolumes properties on `DockerRemoveContainer` - {uri-github}/pull/129[Pull request 129].

[discrete]
=== v2.6.2 (December 22, 2015)

* Expose support for LogDriver on `DockerCreateContainer` - {uri-github}/pull/118[Pull request 118].
* Upgrade to Docker Java 2.1.2.

[discrete]
=== v2.6.1 (September 21, 2015)

* Correct the `withVolumesFrom` call on `DockerCreateContainer` task which needs to get a `VolumesFrom[]` array as the parameter - {uri-github}/pull/102[Pull request 102].
* Upgrade to Docker Java 2.1.1 - {uri-github}/pull/109[Pull request 109].

[discrete]
=== v2.6 (August 30, 2015)

* Upgrade to Docker Java 2.1.0 - {uri-github}/pull/92[Pull request 92].
_Note:_ The Docker Java API changed vastly with v2.0.0. The tasks `DockerBuildImage`, `DockerPullImage` and
`DockerPushImage` do not provide a response handler anymore. This is a breaking change. Future versions of the plugin
might open up the response handling again in some way.
* `DockerListImages` with `filter` call a wrong function from `ListImagesCmdImpl.java` - {uri-github}/issues/105[Issue 105].

[discrete]
=== v2.5.2 (August 15, 2015)

* Fix listImages task throwing GroovyCastException - {uri-github}/issues/96[Issue 96].
* Add support for publishAll in DockerCreateContainer - {uri-github}/pull/94[Pull request 94].
* Add optional dockerFile option to the DockerBuildImage task - {uri-github}/pull/47[Pull request 47].

[discrete]
=== v2.5.1 (July 29, 2015)

* Adds Dockerfile support for the LABEL instruction - {uri-github}/pull/86[Pull request 86].
* Usage of https://github.com/docker-java/docker-java[docker-java library] v1.4.0. Underlying API does not provide
setting port bindings for task `DockerStartContainer` anymore. Needs to be set on `DockerCreateContainer`.

[discrete]
=== v2.5 (July 18, 2015)

* Expose response handler for `DockerListImages` task - v[Issue 75].
* Pass in credentials when building an image - {uri-github}/issues/76[Issue 76].

[discrete]
=== v2.4.1 (July 4, 2015)

* Add `extraHosts` property to task `DockerCreateContainer` - {uri-github}/pull/79[Pull request 79].
* Add `pull` property to task `DockerBuildImage` - {uri-github}/pull/78[Pull request 78].

[discrete]
=== v2.4 (May 16, 2015)

* Added missing support for properties `portBindings` and `cpuset` in `CreateContainer` - {uri-github}/pull/66[Pull request 66].
* Expose response handlers so users can inject custom handling logic - {uri-github}/issues/65[Issue 65].
* Upgrade to Gradle 2.4 including all compatible plugins and libraries.

[discrete]
=== v2.3.1 (April 25, 2015)

* Added support for `Binds` when creating containers - {uri-github}/pull/54[Pull request 54].
* Added task for copying files from a container to a host - {uri-github}/pull/57[Pull request 57].

[discrete]
=== v2.3 (April 18, 2015)

* Added task `DockerInspectContainer` - {uri-github}/pull/44[Pull request 44].
* Added property `containerName` to task `DockerCreateContainer` - {uri-github}/pull/44[Pull request 44].
* Allow for linking containers for task `DockerCreateContainer` - {uri-github}/pull/53[Pull request 53].
* Usage of https://github.com/docker-java/docker-java[docker-java library] v1.2.0.

[discrete]
=== v2.2 (April 12, 2015)

* Usage of https://github.com/docker-java/docker-java[docker-java library] v1.1.0.

[discrete]
=== v2.1 (March 24, 2015)

* Renamed property `registry` to `registryCredentials` for plugin extension and tasks implementing `RegistryCredentialsAware` to better indicate its purpose.
_Note:_ This is a breaking change.

[discrete]
=== v2.0.3 (March 20, 2015)

* Allow for specifying port bindings for container start command. - {uri-github}/issues/30[Issue 30].
* Throw an exception if an error response is encountered - {uri-github}/issues/37[Issue 37].
* Upgrade to Gradle 2.3.

[discrete]
=== v2.0.2 (February 19, 2015)

* Set source and target compatibility to Java 6 - {uri-github}/issues/32[Issue 32].

[discrete]
=== v2.0.1 (February 10, 2015)

* Extension configuration method for `DockerJavaApplicationPlugin` needs to be registered via extension instance - {uri-github}/issues/28[Issue 28].

[discrete]
=== v2.0 (February 4, 2015)

* Upgrade to Gradle 2.2.1 including all compatible plugins and libraries.

[discrete]
=== v0.8.3 (February 4, 2015)

* Add project group to default tag built by Docker Java application plugin - {uri-github}/issues/25[Issue 25].

[discrete]
=== v0.8.2 (January 30, 2015)

* Expose method for task `Dockerfile` for providing vanilla Docker instructions.

[discrete]
=== v0.8.1 (January 24, 2015)

* Usage of https://github.com/docker-java/docker-java[docker-java library] v0.10.5.
* Correctly create model instances for create container task - {uri-github}/issues/19[Issue 19].

[discrete]
=== v0.8 (January 7, 2014)

* Allow for pushing to Docker Hub - {uri-github}/issues/18[Issue 18].
* Better handling of API responses.
* Note: Change to plugin extension. The property `docker.serverUrl` is now called `docker.url`. Instead of `docker.credentials`, you will need to use `docker.registry`.

[discrete]
=== v0.7.2 (December 23, 2014)

* `Dockerfile` task is always marked UP-TO-DATE after first execution - {uri-github}/issues/13[Issue 13].
* Improvements to `Dockerfile` task - {uri-github}/pull/16[Pull request 16].
    * Fixed wrong assignment of key field in  environment variable instruction.
    * Allow for providing multiple ports to the expose instruction.

[discrete]
=== v0.7.1 (December 16, 2014)

* Fixed entry point definition of Dockerfile set by Java application plugin.

[discrete]
=== v0.7 (December 14, 2014)

* Allow for properly add user-based instructions to Dockfile task with predefined instructions without messing up the order. - {uri-github}/issues/12[Issue 12].
* Renamed task `dockerCopyDistTar` to `dockerCopyDistResources` to better express intent.

[discrete]
=== v0.6.1 (December 11, 2014)

* Allow for setting path to certificates for communicating with Docker over SSL - {uri-github}/issues/10[Issue 10].

[discrete]
=== v0.6 (December 7, 2014)

* Usage of https://github.com/docker-java/docker-java[docker-java library] v0.10.4.
* Added Docker Java application plugin.
* Better documentation.

[discrete]
=== v0.5 (December 6, 2014)

* Fixed implementations of tasks `DockerPushImage` and `DockerCommitImage` - {uri-github}/issues/11[Issue 11].

[discrete]
=== v0.4 (November 27, 2014)

* Added task for creating a Dockerfile.

[discrete]
=== v0.3 (November 23, 2014)

* Usage of https://github.com/docker-java/docker-java[docker-java library] v0.10.3.
* Changed package name to `com.bmuschko.gradle.docker`.
* Changed group ID to `com.bmuschko`.
* Adapted plugin IDs to be compatible with Gradle's plugin portal.

[discrete]
=== v0.2 (June 19, 2014)

* Usage of https://github.com/docker-java/docker-java[docker-java library] v0.8.2.
* Provide custom task type for push operation.
* Support for using remote URLs when building image - {uri-github}/issues/3[Issue 3].

[discrete]
=== v0.1 (May 11, 2014)

* Initial release.


Update 2017-10-22-Erste-Devoxx4-Kids-in-Paderborn.adoc

= Erste Devoxx4Kids in Paderborn
// See https://hubpress.gitbooks.io/hubpress-knowledgebase/content/ for information about the parameters.
:hp-image: /covers/devoxx4kids-cover.png
// :published_at: 2019-01-31
:hp-tags: devoxx4kids,devoxx
// :hp-alt-title: My English Title
Am 14. Oktober fand in den Räumen des Heinz-Nixdorf Instituts der universität der erste http://www.devoxx4kids.de/paderborn/[Devoxx4Kids Paderborn Workshop] statt. Morgens um 9 trafen sich X Mentoren und Y Kindern um gemeinsam verschiedene Bereiche der Informatik zu entdecken. Nach einem gemeinsamen Frühstück konnte der Tag beginnen.

Das Mentorenteam aus Studenten, wiss. Mitarbeiten und freiwilligen aus der lokalen Wirtschaft konnten den Kindern einen Einblick in Spieleprogrammierung, Robotik und Elektronik bieten. Die Teilnehmer wurden in 3 Gruppen eingeteit und jede Gruppe machte jeden Workshop mit um das breite Feld der Informatik kennenzulernen. In der Mittagspause konnten sich alle erholen und sich mit mitgebrachtem Essen und bereitgestelltem Obst für das Gruppenfoto bei schönstem Wetter vor dem Springbrunnen des HNF stärken.

Nach der letzten Workshoprunde trafen nach und nach die Eltern ein. Die Kinder konnten ihren Eltern ihre Errungenschaften zeigen. Dank einiger Sponsoren konnten die Kinder ihre selbsgeschrieben Programme auch auf einem USB Stick mit nach Hause nehmen. Ein besonderer Dank geht an Z, die den Kindern eine Powerbank als Goodie zur Verfüngung gestellt haben. Ebenfalls ein Dank an wescale, die für alle Mentoren T-Shirts gestellt haben. Der nächste Devoxx4Kids Workshop findet am 3.2 statt. Anmeldungen bei Melanie Margaritis (melanie.margaritis@upb.de). Wer uns als Mentor oder Sponsor unterstützen möchte, kann sich ebenfalls vertrauensvoll an Frau Margaritis wenden.

= Erste Devoxx4Kids in Paderborn
// See https://hubpress.gitbooks.io/hubpress-knowledgebase/content/ for information about the parameters.
:hp-image: /covers/devoxx4kids-cover.png
// :published_at: 2019-01-31
:hp-tags: devoxx4kids,devoxx
// :hp-alt-title: My English Title
Am 14. Oktober fand in den Räumen des Heinz-Nixdorf Instituts der universität der erste Devoxx4Kids Paderborn Workshop statt.