All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Add hostname as label for docker-compose
- Fix network docker-compose name collision
- Adding cache for image metadata
- Update all libraries to the latest versions (except mvn invoker due to conflict)
- Fix checkstyle, spot bugs configuration
- Update API to work with runtime extensions
- Added extension point for container orchestration runtimes, allowing to use runtime info inside extensions (instanceId, container IPs, etc...) alter the environment at various points in it's lifecycle (beforeStart, afterStart, beforeStop, afterStop, etc...)
- Added SPI to allow enabling runtime extensions by default
- Jersey (2.25.1) and Jackson (2.10.1) dependencies versions bumped to Jersey (2.29.1) and Jackson (2.10.4)
- Using Jackson and Jersey BOMs
- Internally use zt-exec instead of ProcessBuilder
- Minor refactoring
- Fixed error message on startup "Corrupted STDOUT by directly writing to native stream in forked JVM"
- Added java API methods to better work with services having multiple replicas
- Different replicas now have different prefixes in the logs of the StdOut logger
- URL to download docker image config from docker registry fixed to use /blobs instead of /manifests.
- Added support for "carnotzet.min.version" in carnotzet.properties. An error is thrown if the version of carnotzet detected at runtime is lower than the version required by one of the modules. This will help introduction of new features in the future.
- Added support for regex when filtering with "-Dservice=..."
- Added support for retries when downloading manifests from docker registries
- A new maven module
carnotzet-file-merger-json
was created to support merging json configuration files. - Added support for
replicas=n
in carnotzet.properties to scale each individual service in the environment.
- Jackson dependency version bumped to 2.9.8
- Upgraded spotbugs dependency and configuration to support building with jdk-11
- Docker-compose : added option to disable automatic docker network attach to the carnotzet network when running inside a container.
- DNS : added option to disable support for legacy DNS names
- Runtime : added support for "exec"
- Runtime : added support for specifying the shm_size of containers
- Reorder modules in generated docker-compose yml file to improve startup performance in large environments
- Windows compatiblity bugfix (npe)
- Support for advanced DNS use case where current process is running inside a container using CNI
- Forced jersey connector to default one when fetching docker image manifests from registry to avoid clashes
- Added an internal cache for docker image manifests to avoid useless downloads from registry
- Added a utility method to expose the maven dependency tree to extensions so that they can leverage the hierarchy.
- Fixed a bug in the selection of configuration variants, the one closer to the root module is now selected.
- Fixed a bug introduced in 1.7.2 on some platform not supporting unicode characters everywhere
- Added a utility class to simplify the creation of container startup wrapper scripts in extensions
- Trim output of external processes
- Fixed a bug sometimes causing freezes when running external processes (eg : docker)
- Fixed fetching docker image manifests when image name contains a "/"
- Allow overriding of welcome.html fragments and ignore welcome.html files for excluded configuration variants.
- Support for configuration variants, different maven artifacts that provide different configuration for the same service.
- Local ports of the docker host can now be bound to container ports. All ports are mapped (to random available ports) by default on Windows and MacOS since there is no docker0 bridge in those environments
- Fixed Windows and MacOS compatibility bugs
- Fixed a bug in PullPolicy.IF_LOCAL_IMAGE_ABSENT where the image would not be pulled even when it was not present locally
- Added exceptions when invocation of external commands (docker / docker-compose) return non-zero exit codes
- It is now possible to pull images from extensions (without requiring a reference to the container orchestration runtime)
- No longer ignore -Dservice=... in zet:clean goal of the maven plugin
- Fixed Windows compatibility issue
- Fixed Error message describing detected cycles
- Fixed an error when downloading the top level pom file from a remote maven repo (the bug was introduced in 1.5.0)
- Added exit-code check on internal maven invocations
- Added check for uniqueness of artifactIds in environments
- Improved error message when dependency cycles are detected
- Windows compatibility fixes
- Fix IOException when merging into non-existing file
- Add option to degrade the correctness of configuration overrides in cases of dependency cycles instead of failing. The default behavior remains unchanged (fail).
- Configuration in .merge files is not ignored when there is no target file to merge with.
- Add support for
start.by.default=false
in carnotzet.properties to support optional services.
- Classifiers can now be used instead of suffixes in the artifactId to define carnotzet maven artifacts
- Use resources in jar files in all cases (even when top level module resources path is provided)
- Support for image pulling policies in docker-compose runtime
- Support for maven version placeholders in docker.image versions. Example : docker.image=my-image:${my-module.version}
- Support for extra entries in /etc/hosts in containers, use the extra.hosts property in carnotzet.properties
- Ignore MAVEN_DEBUG_OPTS when invoking maven to resolve dependencies, this allows to debug (with suspend=y) without the sub-maven process also suspending.
- Custom network aliases are now properly exported as dnsdock aliases.
- Improved the error message in case of cycles in the maven dependency graph
- Detect cycles in maven dependency graphs to avoid StackOverflowErrors in case of cycles.
- Ignore all artifacts imported with scopes other than compile and runtime.
- Allow injection/override of arbitrary files and folders in module resources by default.
- Fixed a bug where configuration file overrides were not applied properly in some cases
- Changed maven resolver from shrinkwrap to maven invoker + maven-dependency-plugin
- The core library now depends on having a functional maven installation in the environment (M2_HOME or ${maven.home} must be set)
- Fixed "welcome" page generation regression introduced in 1.2.0
- Possibility to configure docker.entrypoint and docker.cmd in carnotzet.properties
- Possibility to override cartnozet.properties of downstream dependencies.
- Removed support for pattern
{service_name}.network.aliases=...
in carnotzet.properties. Use the new carnotzet.properties override/merge feature instead with thenetwork.aliases
key.
- Maven dependencies are now better aligned. Fixes issues with aether-utils backwards compatibility experienced by some uers.. Minimal compatible version of Maven is now 3.2.5
- Refactored internal resource file structure to keep both expanded-jars and resolved resources to simplify testing and debugging
- Added maven wrapper to fix maven version issues in travis-ci
- Hostname pattern to establish network connections with containers changed from
(container_name.)image_name.docker
to(instance_id.)module_name.docker
- Possibility to configure extensions in pom.xml files
- Prevent NPE when programmatically adding modules that have no labels or properties
- e2e tests randomly freezing
Intitial release.