Topics
Bugfix release for ansible-core.
Feature release.
- Add
--strict
parameter to thelint-changelog-yaml
subcommand to also check for extra fields that should not be there (#182). - Declare support for Python 3.13 (#180).
- Python API: allow to extract extra data when loading changelog files, and allow to insert extra data when saving (#181).
- Python API: allow to preprocess changelog.yaml before linting (#181).
- More internal code related to the old changelog format has been removed. This only potentially affects other projects which consume antsibull-changelog as a library. The sister antsibull projects antsibull-build and antsibull-docs might only be affected in older versions. Users of the antsibull-changelog CLI tool are not affected by this change (#179).
Feature release.
- Allow to configure the used VCS in
changelogs/config.yml
. Valid choices arenone
(default),git
, orauto
. If set togit
, orauto
detects that the project is part of a Git repository, only non-ignored files will be copied to a temporary directory when trying to load information on Ansible modules, plugins and roles (#172, #175). - Antsibull-changelog now depends on the new package antsibull-docutils. This should not have any visible impact, expect potentially improved MarkDown output (#174).
- Antsibull-changelog now depends on the new project antsibull-fileutils (#176).
- If you are using argcomplete global completion, you can now tab-complete
antsibull-changelog
command lines. See Activating global completion in the argcomplete README for how to enable tab completion globally. This will also tab-complete Ansible commands such asansible-playbook
andansible-test
(#173).
Feature release.
- Add a
reformat
command that reformatschangelogs/changelog.yaml
to the current settings ofchangelogs/config.yaml
(#169). - Adds a new configuration option
changelog_sort
. This option allows sorting of changelog entries inchangelogs/changelog.yaml
(#165). - Replaces numbers with constants for return codes (#77).
- Removes support for the deprecated classic changelog format.
changes_format
must now be present and set tocombined
for ansible-core usage, and the valueclassic
is no longer allowed (#137).
- Remove Python version check that was checking for Python >= 3.6 (instead of >= 3.9). This check is not really necessary since
pyproject.toml
declaresrequires-python
, and old enough Python versions where pip does not know aboutrequires-python
will not load antsibull-changelog due to syntax errors anyway (#167).
Feature release.
- There is now an option
changelog_nice_yaml
to prepend the YAML document start marker---
to the header of thechangelogs/changelog.yaml
file, and to increases indentation level on list items. This makes the file pass ansible-lint (#91, #152, #160).
Feature release.
- Adds period where needed at end of new plugin short descriptions. Controlled by the
add_plugin_period
option in the config file (#87, #162).
Feature release.
- The Markdown output format is now compatible with python-markdown and mkdocs, as long as the pymdownx.escapeall extension is enabled (#153).
Bugfix and feature release.
- Add
--version
flag to print package version and exit (#147).
- When multiple output formats are defined and
antsibull-changelog generate
is used with both--output
and--output-format
, an error was displayed that--output-format
must be specified (#149, #151).
Feature release which now allows to output MarkDown.
- Allow automatically retrieving package version for hatch projects with the
hatch version
command (#141). - Allow to render changelogs as MarkDown. The output formats written can be controlled with the
output_formats
option in the config file (#139). - Officially support Python 3.12 (#134).
- Some code in
antsibull_changelog.changelog_entry
has been deprecated, and theantsibull_changelog.rst
module has been deprecated completely. If you use them in your own code, please take a look at the PR deprecating them for information on how to stop using them (#139).
Feature release.
- Allow to generate changelog for a specific version (#130).
- Allow to generate only the last entry without preamble with the
generate
command (#131). - Allow to write
generate
output to a user-provided file (#131).
New feature release
- Add
antsibull-changelog-lint
andantsibull-changelog-lint-changelog-yaml
pre-commit.com hooks (#125). - Add
toml
extra to pull in a toml parser to use to guess the version based onpyproject.toml
(#126).
Maintenance release with a deprecation.
- Support for
classic
changelogs is deprecated and will be removed soon. If you need to build changelogs for Ansible 2.9 or before, please use an older version (#123).
Bugfix and maintenance release using a new build system.
- Change pyproject build backend from
poetry-core
tohatchling
.pip install antsibull
works exactly the same as before, but some users may be affected depending on how they build/install the project (#109).
- When releasing ansible-core and only one of
--version
and--codename
is supplied, error out instead of ignoring the supplied value (#104, #105).
Feature release.
- Allow to extract other project versions for JavaScript / TypeScript projects from
package.json
(#100). - Allow to extract other project versions for Python projects from PEP 621 conformant
pyproject.toml
(#100). - Support Python 3.11's
tomllib
to loadpyproject.toml
(#101, #102). - Use more specific exceptions than
Exception
for some cases in internal code (#103).
Maintenance release that drops support for older Python versions.
- Drop support for Python 3.6, 3.7, and 3.8 (#93).
Feature release for ansible-core.
- Only allow a
trival
section in the ansible-core/ansible-base changelog when explicitly configured (#90).
Feature and bugfix release.
- Allow to extract other project versions for Python poetry projects from
pyproject.toml
(#80). - The files in the source repository now follow the REUSE Specification. The only exceptions are changelog fragments in
changelogs/fragments/
(#82).
- Mark rstcheck 4.x and 5.x as compatible. Support rstcheck 6.x as well (#81).
Feature release.
- Add
changelogs/changelog.yaml
file format linting subcommand that was previously part of antsibull-lint (#76, ansible-community/antsibull-build#410).
Feature release that will speed up the release process with ansible-core 2.13.
- The internal
changelog.yaml
linting API allows to usepackaging.version.Version
for version numbers instead of semantic versioning (#73). - Use the new
--metadata-dump
option for ansible-core 2.13+ to quickly dump and extract all module/pluginversion_added
values for the collection (#72).
This release makes changelog building more reliable.
- Fix issues with module namespaces when symlinks appear in the path to the temp directory (#68, #69).
- Stop mentioning
galaxy.yaml
instead ofgalaxy.yml
in some error messages (#66).
New feature release which supports other projects than ansible-core and Ansible collections.
- Support changelogs for other projects than ansible-core/-base and Ansible collections (#60).
- Fix prerelease collapsing when
use_semantic_versioning
is set totrue
for ansible-core.
- When using ansible-core 2.11 or newer, will now detect new roles with argument spec. We only consider the
main
entrypoint of roles.
- When subdirectories of
modules
are used in ansible-base/ansible-core, the wrong module name was passed toansible-doc
when--use-ansible-doc
was not used.
- The new
--cummulative-release
option forantsibull-changelog release
allows to add all plugins and objects to a release since whoseversion_added
is later than the previous release version (or ancestor if there was no previous release), and at latest the current release version. This is needed for major releases ofcommunity.general
and similarly organized collections. - Will now print a warning when a release is made where the no
prelude_section_name
section (default:release_summary
) appears.
- Make sure that the plugin caching inside ansible-base/-core works without
--use-ansible-doc
.
Add support for reporting new playbooks and roles in collections.
Add support for special changelog fragment sections which add new plugins and/or objects to the changelog for this version. This is mainly useful for
test
andfilter
plugins, and forplaybook
androle
objects, which are not yet automatically detected and mentioned inchangelogs/changelog.yaml
or the generated RST changelog.The format of these sections and their content is as follows:
--- add plugin.filter: - name: to_time_unit description: Converts a time expression to a given unit - name: to_seconds description: Converts a time expression to seconds add object.role: - name: nginx description: The most awesome nginx installation role ever add object.playbook: - name: wipe_server description: Totally wipes a server
For every entry, a list of plugins (section
add plugin.xxx
) or objects (sectionadd object.xxx
) of the given type (filter
,test
for plugins,playbook
,role
for objects) will be added. Every plugin or object has a short name as well as a short description. These fields correspond to the module/plugin name and theshort_description
field of theDOCUMENTATION
block of modules and documentable plugins.
- Add
--update-existing
option forantsibull-changelog release
, which allows to update the current release's release date and (if relevant) codename instead of simply reporting that the release already exists.
- The new option
prevent_known_fragments
with default value being the value ofkeep_fragments
allows to control whether fragments with names that already appeared in the past are ignored or not. The new behavior happens ifkeep_fragments=false
, and is less surprising to users (see #46). Changelogs withkeep_fragments=true
, like the ansible-base/ansible-core changelog, are not affected.
- Fixed error on generating changelogs when using the trivial section.
- Allow to not save a changelog on release when using API.
- Allow to sanitize changelog data on load/save. This means that unknown information will be removed, and bad information will be stripped. This will be enabled in newly created changelog configs, but is disabled for backwards compatibility.
- A new config option,
ignore_other_fragment_extensions
allows for configuring whether only.yaml
and.yml
files are used (as mandated by theansible-test sanity --test changelog
test). The default value for existing configurations isfalse
, and for new configurationstrue
. - Allow to use semantic versioning also for Ansible-base with the
use_semantic_versioning
configuration setting. - Refactoring changelog generation code to provide all preludes (release summaries) in changelog entries, and provide generic functionality to extract a grouped list of versions. These changes are mainly for the antsibull project.
- New changelog configurations place the
CHANGELOG.rst
file by default in the top-level directory, and not inchangelogs/
. - The config option
archive_path_template
allows to move fragments into an archive directory whenkeep_fragments
is set tofalse
. - The option
use_fqcn
(set totrue
in new configurations) allows to use FQCN for new plugins and modules.
- The internal changelog generator code got more flexible to help antsibull generate Ansible porting guides.
- Allow to enable or disable flatmapping via
config.yaml
.
- Fix bad module namespace detection when collection was symlinked into Ansible's collection search path. This also allows to add releases to collections which are not installed in a way that Ansible finds them.
- Do not fail when
changelogs/fragments
does not exist. Simply assume there are no fragments in that case. - Improve behavior when
changelogs/config.yaml
is not a dictionary, or does not containsections
. - Improve error message when
--is-collection
is specified andchangelogs/config.yaml
cannot be found, or when thelint
subcommand is used.
- Allow to pass path to ansible-doc binary via
--ansible-doc-bin
. - Changelog generator can be ran via
python -m antsibull_changelog
. - Use
ansible-doc
instead of/path/to/checkout/bin/ansible-doc
when being run in ansible-base checkouts.
- Allow to enumerate plugins/modules with ansible-doc by specifying
--use-ansible-doc
.
- Added more testing.
- Fix internal API for ACD changelog generation (pruning and concatenation of changelogs).
- Improve error handling.
- Improve reStructuredText creation when new modules with and without namespace exist at the same time.
- Title generation improved (remove superfluous space).
- Use PyYAML C loader/dumper if available.
lint
subcommand no longer requires specification whether it is run inside a collection or not (if usual indicators are absent).
Initial release as antsibull-changelog. The Ansible Changelog Tool has originally been developed by @mattclay in the ansible/ansible repository for Ansible itself. It has been extended in felixfontein/ansible-changelog and ansible-community/antsibull to work with collections, until it was moved to its current location ansible-community/antsibull-changelog.