All notable changes to this project will be documented in this file.
- Docker credentials (
~/.docker/config.json
) are now given priority over registry-based inferred credential helpers (#1704)
- Container configurations in the base image are now propagated when registry uses the old V2 image manifest, schema version 1 (such as Quay) (#1641)
- Can now prepend paths in the container to the computed classpath with
jib.container.extraClasspath
(#1642) - Can now build in offline mode using
--offline
(#718) - Now supports multiple extra directories with
jib.extraDirectories.{paths|.permissions}
(#1020)
jib.extraDirectory({.path|.permissions})
are deprecated in favor of the newjib.extraDirectories.{paths|.permissions}
configurations (#1671)
- Labels in the base image are now propagated (#1643)
- Fixed an issue with using OCI base images (#1683)
- Fixed an issue where automatically generated parent directories in a layer did not get their timestamp configured correctly to epoch + 1s (#1648)
- Fixed an issue where the plugin creates wrong images by adding base image layers in reverse order when registry uses the old V2 image manifest, schema version 1 (such as Quay) (#1627)
os
andarchitecture
are taken from base image (#1564)
- Fixed an issue where pushing to Docker Hub fails when the host part of an image reference is
docker.io
(#1549)
- Java 9+ WAR projects are now supported and run on the distroless Jetty Java 11 image (https://github.com/GoogleContainerTools/distroless) by default. Java 8 projects remain on the distroless Jetty Java 8 image. (#1510)
- Now supports authentication against Azure Container Registry using
docker-credential-acr-*
credential helpers. (#1490)
- Fixed an issue where setting
allowInsecureRegistries
may fail to try HTTP. (#1517) - Crash on talking to servers that do not set the
Content-Length
HTTP header or send an incorrect value. (#1512)
- Java 9+ projects are now supported and run on the distroless Java 11 image (https://github.com/GoogleContainerTools/distroless) by default. Java 8 projects remain on the distroless Java 8 image. (#1279)
- Failure to infer main class when main method is defined using varargs (i.e.
public static void main(String... args)
) (#1456)
- Shortened progress bar display - make sure console window is at least 50 characters wide or progress bar display can be messy (#1361)
- Setting proxy credentials (via system properties
http(s).proxyUser
andhttp(s).proxyPassword
) is now supported.
- Java 9+ projects using the default distroless Java 8 base image will now fail to build. (#1143)
jib.baseImageCache
andjib.applicationCache
system properties for setting cache directories (#1238)- Build progress shown via a progress bar - set
-Djib.console=plain
to show progress as log messages (#1297)
- Removed
jib.useOnlyProjectCache
parameter in favor of thejib.useOnlyProjectCache
system property (#1308)
- Builds failing due to dependency JARs with the same name (#810)
- Image ID is now written to
build/jib-image.id
(#1204) jib.container.entrypoint = 'INHERIT'
allows inheritingENTRYPOINT
andCMD
from the base image. While inheritingENTRYPOINT
, you can also overrideCMD
usingjib.container.args
.container.workingDirectory
configuration parameter to set the working directory (#1225)- Adds support for configuring volumes (#1121)
- Exposed ports are now propagated from the base image (#595)
- Docker health check is now propagated from the base image (#595)
- Removed
jibExportDockerContext
task (#1219)
- NullPointerException thrown with incomplete
auth
configuration (#1177)
- Properties for each configuration parameter, allowing any parameter to be set via commandline (#1083)
jib.to.credHelper
andjib.from.credHelper
can be used to specify a credential helper suffix or a full path to a credential helper executable (#925)container.user
configuration parameter to configure the user and group to run the container as (#1029)- Preliminary support for building images for WAR projects (#431)
jib.extraDirectory
closure with apath
andpermissions
field (#794)jib.extraDirectory.path
configures the extra layer directory (still also configurable viajib.extraDirectory = file(...)
)jib.extraDirectory.permissions
is a map from absolute path on container to the file's permission bits (represented as an octal string)
- Image digest is now written to
build/jib-image.digest
(#933) - Adds the layer type to the layer history as comments (#1198)
jibDockerBuild.dockerClient.executable
andjibDockerBuild.dockerClient.environment
to set Docker client binary path (defaulting todocker
) and additional environment variables to apply when running the binary (#1214)
- Removed deprecated
jib.jvmFlags
,jib.mainClass
,jib.args
, andjib.format
in favor of the equivalents underjib.container
(#461) jibExportDockerContext
generates different directory layout andDockerfile
to enable WAR support (#1007)- File timestamps in the built image are set to 1 second since the epoch (hence 1970-01-01T00:00:01Z) to resolve compatibility with applications on Java 6 or below where the epoch means nonexistent or I/O errors; previously they were set to the epoch (#1079)
- Sets tag to "latest" instead of "unspecified" if
jib.to.image
and project version are both unspecified when runningjibDockerBuild
orjibBuildTar
(#1096)
- Adds environment variable configuration to Docker context generator (#890 (comment))
Cannot access 'image': it is public in <anonymous>
error (#1060)
container.environment
configuration parameter to configure environment variables (#890)container.appRoot
configuration parameter to configure app root in the image (#984)jib.to.tags
(list) defines additional tags to push to (#978)
- Keep duplicate layers to match container history (#1017)
container.labels
configuration parameter for configuring labels (#751)container.entrypoint
configuration parameter to set the entrypoint (#579)history
to layer metadata (#875)- Propagates working directory from the base image (#902)
- Corrects permissions for directories in the container filesystem (#772)
- Passthrough labels from base image (#750)
- Reordered classpath in entrypoint to use resources, classes, and then dependencies, to allow dependency patching
(#777). Note that this classpath ordering differs from that used by Gradle's
run
task. - Changed logging level of missing build output directory message (#677)
- Gradle project dependencies have their
assemble
task run before running a jib task (#815)
- Docker context generation now includes snapshot dependencies and extra files (#516)
- Disable parallel operation by setting the
jibSerialize
system property totrue
(#682)
- Propagates environment variables from the base image (#716)
allowInsecureRegistries
allows connecting to insecure HTTPS registries (for example, registries using self-signed certificates) (#733)
- Slow image reference parsing (#680)
- Building empty layers (#516)
- Duplicate layer entries causing unbounded cache growth (#721)
- Incorrect authentication error message when target and base registry are the same (#758)
- Snapshot dependencies are added as their own layer (#584)
jibBuildTar
task to build an image tarball atbuild/jib-image.tar
, which can be loaded into docker usingdocker load
(#514)container.useCurrentTimestamp
parameter to set the image creation time to the build time (#413)- Authentication over HTTP using the
sendCredentialsOverHttp
system property (#599) - HTTP connection and read timeouts for registry interactions configurable with the
jib.httpTimeout
system property (#656) - Docker context export command-line option
--targetDir
to--jibTargetDir
(#662)
- Docker context export command-line option
--targetDir
to--jibTargetDir
(#662)
- Using multi-byte characters in container configuration (#626)
- For Docker Hub, also tries registry aliases when getting a credential from the Docker config (#605)
- Using a private registry that does token authentication with
allowInsecureRegistries
set totrue
(#572)
- Incubating feature to build
src/main/jib
as extra layer in image (#562)
- Fixed handling case-insensitive
Basic
authentication method (#546) - Fixed regression that broke pulling base images from registries that required token authentication (#549)
- Using Docker config for finding registry credentials (was not ignoring extra fields and handling
https
protocol) (#524)
- Can configure
jibExportDockerContext
output directory withjibExportDockerContext.targetDir
(#492)
- Set
jibExportDockerContext
output directory with command line option--targetDir
(#499)
container.ports
parameter to define container's exposed ports (similar to DockerfileEXPOSE
) (#383)- Can set
allowInsecureRegistries
parameter totrue
to use registries that only support HTTP (#388)
- Fetches credentials from inferred credential helper before Docker config (#401)
- Container creation date set to timestamp 0 (#341)
- Does not authenticate base image pull unless necessary - reduces build time by about 500ms (#414)
jvmFlags
,mainClass
,args
, andformat
are now grouped undercontainer
configuration object (#384)- Warns instead of errors when classes not found (#462)
- Using Azure Container Registry now works - define credentials in
jib.to.auth
/jib.from.auth
(#415) - Supports
access_token
as alias totoken
in registry authentication (#420) - Docker context export for Groovy project (#459)
- Visibility of
jib.to.image
(#460)
- Export a Docker context (including a Dockerfile) with
jibExportDockerContext
(#204) - Warns if build may not be reproducible (#245)
jibDockerBuild
gradle task to build straight to Docker daemon (#265)mainClass
is inferred by searching through class files if configuration is missing (#278)- All tasks depend on
classes
by default (#335) - Can now specify target image with
--image
(#328) args
parameter to define default main arguments (#346)
- Removed
reproducible
parameter - application layers will always be reproducible (#245)
- Using base images that lack entrypoints (#284