Skip to content

3.0.0

Compare
Choose a tag to compare
@nitzmahone nitzmahone released this 15 May 18:13
· 21 commits to release_3.0 since this release
43a5017

What's Changed

A major evolution of Ansible Builder's Execution Environment definition format, with overall themes of increased flexibility and minimizing required manual alterations of generated build contexts. New features of the version 3 Execution Environment definition include:

  • Use of vanilla RHEL-ish container images instead of specially-crafted base and builder images (tested against Fedora, CentOS Stream 8/9, UBI9 and others).
  • Injection of custom build steps before and after every build stage.
  • Copying arbitrary files from the builder host into the generated container build context (which can then be copied into intermediate/final container images as needed with custom build steps).
  • Declarative bootstrapping of Python, Ansible Core, and Ansible Runner (in addition to roles/collections, of course).
  • Inline definition of Python/bindep/role/collection requirements in Execution Environment YAML (external files also still supported).
  • Customization of final container initialization ENTRYPOINT, USER, and CMD (with verified automatic defaults).
  • Dynamic builder image from user-specified base image- specifying a builder image is no longer required (or allowed).
  • Faster builds due to linear stage inheritance and removal of forced OS package upgrades.
  • Numerous bugfixes and minor enhancements... see documentation for examples.

Breaking Changes

  • The --squash argument to build now defaults to off for all container runtimes. This allows build caches to function by default for podman during development and testing, at the cost of more intermediate layers in the resultant image. Manually specifying --squash new is suggested for CI and production builds when using podman to minimize the size and number of intermediate layers.

  • Forced OS package manager upgrades are no longer performed in individual build stages by default. If a full OS package upgrade is desired, add a new build directive to prepend_base under additional_build_steps (e.g., - RUN dnf upgrade -y) to upgrade packages on the base image. The upgraded packages will be reflected in all subsequent build stages.