Releases: ansible/ansible-builder
3.1.0
What's Changed
New Features
- Support for tags from the configuration file by @Akasurde in #555
- Support multiple -v for verbosity by @Shrews in #564
- Allow the .yaml file extension on the default EE file by @Shrews in #631
- Account for PEP668 in pip invocations by @Shrews in #627
- Expose a way to exclude dependencies by @Shrews in #664
- This change removes Python dependency sanitization, which may cause build issues in images with older versions of pip that cannot handle duplicate requirement entries.
- Support extra build command args by @Shrews in #677
Other Improvements
- Various improvements to documentation.
- Warn if
USER
directive is found inadditional_build_steps
by @Akasurde in #528 - Warn about version less than 3 by @Akasurde in #574
- Warn user about using default base image in v3 by @Akasurde in #591
- Fix container policy for version 3 by @Shrews in #652
- Guarantee collection base path exists by @Shrews in #683
New Contributors
- @sivel made their first contribution in #535
- @Andersson007 made their first contribution in #549
- @felixfontein made their first contribution in #544
- @acozine made their first contribution in #552
- @dependabot made their first contribution in #545
- @samccann made their first contribution in #623
- @w4hf made their first contribution in #598
- @bhavikbhavsar made their first contribution in #642
- @webknjaz made their first contribution in #667
- @audgirka made their first contribution in #662
Full Changelog: 3.0.0...3.1.0
3.0.1
What's Changed
- Wrap variable in double quotes by @Akasurde in #537
- definition.rst: Add link to Galaxy requirements file format; add example of specifying collection version by @Andersson007 in #549
- Docs: mention a few base images as examples, using a free one as the default by @felixfontein in #544
- Update to the builder documentation by @acozine in #552
- Document PKGMGR_PRESERVE_CACHE by @Akasurde in #558
- Added scenarios for version 3 by @Akasurde in #538
- Docs: Using prepend_base by @Akasurde in #563
- collection_metadata: improve documentation by @Andersson007 in #551
- Improve CLI usage docs by @Andersson007 in #559
- Fix container policy for version 3 by @Shrews in #654
New Contributors
- @felixfontein made their first contribution in #544
- @acozine made their first contribution in #552
Full Changelog: 3.0.0...3.0.1
3.0.0
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 tobuild
now defaults tooff
for all container runtimes. This allows build caches to function by default forpodman
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 usingpodman
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
underadditional_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.
3.0.0rc2
What's Changed
- Remove get-extra-packages by @Akasurde in #492
- Add pipopts on install-from-bindep by @tanganellilore in #468
- Normalize package names with lowercase by @dsavineau in #460
- switch to setuptools_scm by @nitzmahone in #494
- Faster integration tests by @nitzmahone in #495
- Fix test_base_image_build_arg to remove test image by @Shrews in #500
- Update contrib and readme by @Shrews in #499
- move pytest coverage and parallelization to tox config by @nitzmahone in #498
- Ignore mtime for requirements files by @Shrews in #502
- Update schema doc for 3.0 version reference by @Shrews in #504
- Fix path for _target_scripts in Containerfile by @Akasurde in #507
- fix serial mark enforcement by @nitzmahone in #510
- Add pytest option to skip runtime by @Shrews in #508
- Fix for pulp setup by @Shrews in #511
- Remove redundant requirements.py file by @Shrews in #513
- explicitly set WORKDIR on builder stage by @nitzmahone in #512
- support blind-translated YAML mapping for galaxy deps by @nitzmahone in #515
- Update labeler and issue-labeler actions by @Akasurde in #518
- Remove forced
dnf upgrade
, speed up tests by @nitzmahone in #516 - Allow to set user value for the container image by @Akasurde in #521
- Purge /output for final image by @Shrews in #522
- Added missing underscore in target_scripts path by @Akasurde in #524
- Parse build-args for empty values by @Akasurde in #517
New Contributors
- @tanganellilore made their first contribution in #468
- @dsavineau made their first contribution in #460
Full Changelog: 3.0.0rc1...3.0.0rc2
3.0.0rc1
What's Changed
- Add docs for container_init options by @Shrews in #480
- Include data files from _target_scripts by @Akasurde in #483
- Pass full path while copying by @Akasurde in #479
- entrypoint script support, passwd permission relax by @nitzmahone in #486
- update demo EE definition, remove old versions by @nitzmahone in #488
- disable busted pbr bits by @nitzmahone in #490
Full Changelog: 3.0.0b1...3.0.0rc1
3.0.0b1
What's Changed
A 3.0 evolution of ansible-builder to address a number of pain points with current ansible-builder. New features available with the new version 3 of the execution environment definition file include:
- Allows use of vanilla RHEL-ish container images instead specially-crafted images- check out demo/v3_demo/execution-environment.yml for a working sample tested with Fedora, CentOS Stream 8/9, UBI9...
- Allows injection of custom before/after build steps at every build stage.
- Allows 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).
- Allows declarative bootstrapping of Python, Ansible Core, and Ansible Runner (in addition to roles/collections, of course).
- Allows inline definition of EE Python/bindep/role/collection requirements.
- Allows customization of ENTRYPOINT and CMD.
- Specifying a builder image is no longer needed (or allowed).
- Many other goodies... see documentation for examples.
Full Changelog: https://github.com/ansible/ansible-builder/commits/3.0.0b1
1.2.0
What's Changed
- Add min python version to install docs by @Shrews in #381
- Add support of HTTP requirements by @stanislav-zaprudskiy in #378
- Remove unused Containerfile parameter by @Shrews in #386
- Optimize logger lines containing string formatting by @Shrews in #385
- Remove integration test for prune by @Akasurde in #389
- Implement ANSIBLE_GALAXY_CLI_ROLE_OPTS by @Akasurde in #394
- Fix default tag not being used by @Shrews in #395
- Add LABEL to Containerfile by @Akasurde in #397
- Add pulp_integration framework by @Shrews in #400
- only run pulp tests when registry secrets are available by @nitzmahone in #403
- Fix secrets_preflight check by @Shrews in #405
- Container image signature validation by @Shrews in #371
- [backport][release_1.2] Update CI GH actions by @Shrews in #421
Full Changelog: 1.1.0...1.2.0
1.1.0
What's Changed
- Add support for build args (version 2) by @AlanCoding in #167
- Remove unused entry point in tox.ini by @pabelanger in #166
- Add ANSIBLE_GALAXY_CLI_COLLECTION_OPTS build-arg by @pabelanger in #173
- Copy the entire Ansible share dir for bug workaround by @AlanCoding in #172
- Show last 20 lines of output in case of error by @AlanCoding in #168
- Apply conservative test fixes by @AlanCoding in #174
- Show all defaults in help text, consolidate some by @AlanCoding in #177
- Delete test images test-by-test for multiprocessing concerns by @AlanCoding in #175
- Custom message if files are already in build context by @AlanCoding in #178
- Do not copy introspect.py file by @AlanCoding in #179
- Allow user to toggle image clean up for integration tests by @pabelanger in #182
- Copy build context folder into galaxy layer by @pabelanger in #180
- Address several documented usability issues by @AlanCoding in #181
- Fix Up the Documentation by @beeankha in #200
- Explicitly flip to root user during build process by @shanemcd in #205
- Bump ansible-builder tox job to 75mins by @pabelanger in #209
- Fix quay image path in documentation by @dsafanyuk in #202
- Refactor to a single-phase process but keep the three-stage Containerfile by @AlanCoding in #217
- Use pkg_resources to get version by @AlanCoding in #193
- Add wheel to list of requirements by @shanemcd in #219
- Run integration tests in github actions by @shanemcd in #220
- adding ansible-core to ignore list by @thedoubl3j in #199
- Add test to confirm that git requirements work by @AlanCoding in #221
- Only run github-workflow when those files change by @pabelanger in #224
- Make Flask test permissive to case by @AlanCoding in #229
- Add log for excluded requirements by @AlanCoding in #232
- Register marker to get rid of pytest warnings by @AlanCoding in #233
- Fix yaml Syntax Reference in Docs by @beeankha in #239
- Add podman to tox allowlist_externals for integration tests by @beeankha in #240
- Add Back 'create' Command as an Option by @beeankha in #236
- Split build and create integration tests by @AlanCoding in #243
- Validate Dependencies Section of Definition File by @beeankha in #245
- Move to bindep.txt for Containerfile by @pabelanger in #248
- Provide Same Verbosity Functionality for Create, Build, and Introspect by @beeankha in #249
- Add "Create" Command to Documentation by @beeankha in #250
- Add another python test requirement to skip by @AlanCoding in #230
- Change ansible-runner image to latest tag by @AlanCoding in #244
- Confirm that we don't install ansible-builder requirements into an EE by mistake by @AlanCoding in #222
- Try to keep less layer churn in the /output folder by @AlanCoding in #225
- Update IRC network by @mscherer in #255
- Fix another Freenode mention by @mscherer in #256
- Update Docs to Show Renamed build_arg_defaults Parameter by @beeankha in #259
- Fix location of ansible.cfg step in rendered Containerfile by @shanemcd in #261
- Fix delete_image in integration testing by @Shrews in #264
- Add docs tox target and Zuul job by @Shrews in #263
- Add cherry_picker 🍒⛏ by @samdoran in #265
- Update project linter settings by @samdoran in #266
- Add CODEOWNERS file by @Shrews in #273
- Add py38 job by @Shrews in #274
- Add a Patchback config by @Shrews in #275
- Add CLI type subcommand by @Shrews in #279
- Pre-pull some build images by @Shrews in #285
- Do not use dash to separate keys in setup.cfg by @samdoran in #287
- Remove some CI jobs by @samdoran in #288
- Add configuration for Read the Docs build and pin docs requirements by @samdoran in #298
- Switch project to squash-merge mode by @Shrews in #296
- Revert "Switch project to squash-merge mode" by @Shrews in #306
- Remove duplicate RTD config file by @samdoran in #300
- Set the version in the docs conf by @samdoran in #302
- Update yamllint settings by @samdoran in #309
- Add coverage reporting, requirements, update gitignore by @samdoran in #308
- Add issue templates by @samdoran in #311
- Remove github-workflows job by @ssbarnea in #312
- Add workflow to triage new issues and pull requests by @samdoran in #304
- Fix labeler workflow by @samdoran in #314
- Fix problems with issue templates by @samdoran in #316
- Create separate workflow for new/existing PRs/issues by @samdoran in #317
- Improve test performance and organization by @samdoran in #318
- Use v2.4.1 of issue-labeler action by @samdoran in #324
- Run tests using GitHub Actions by @samdoran in #284
- Run tests on all supported run times and fix
test_build_layer_reuse
test by @samdoran in #326 - Mark unreliable tests by @samdoran in #330
- Add Python 3.10 to the test matrix by @samdoran in #329
- Upload code coverage report by @samdoran in #331
- Add coverage badge by @samdoran in #333
- Add
--no-cache
option tocontainer build
by @samdoran in #335 - Do not sanitize user python requirements by @Shrews in #336
- Support multiple tags by @Shrews in #337
- Fix CI to use image from PR by @Shrews in #342
- No code coverage of test code by @Shrews in #344
- Revert PR #279 by @Shrews in #341
- Use lastest image in docs by @Shrews in #352
- Use
devel
tag for the development image by @Shrews in #353 - Create SECURITY.md by @eqrx in #356
- Normalize python package names during sanitization by @Shrews in #359
- Validate the EE definition file earlier by @Shrews in #366
- Support collection signing verification by @eqrx in #357
- Cleanup UserDefinition class by @Shrews in #370
- Added example EE config files by @Akasurde in #374
- Add --prune-images flag in build command by @Akasurde in #375
New Contributors
- @dsafanyuk made their first contribution i...