generated from ansible-collections/collection_template
-
Notifications
You must be signed in to change notification settings - Fork 91
Open
Description
Last updated by @Andersson007 2024-06-13
Introduction
This issue describes how and when community.network is released, and to announce updates to the release/versioning schedule. The next section (Next release) is always updated to contain the next version to be released. Other changes to this first post are always announced by separate posts in this issue.
Releasing guidelines
We use the Ansible collection releasing guidelines to conduct releases in this collections.
Next releases
6.0.0 (when needed)
5.X.Y (when needed, see the latest ones and changelog fragments to determine the next release)
4.0.Y (EOL)
Releasing schedule for major and minor versions
From then on:
- release minor versions every two months (or when there are minor changes enough for release)
- major versions every 6 months (or when needed).
Releasing schedule for patch versions
- Patch versions
x.y.Z
until the last minor release of a major release branch will only be released when necessary. The intended frequency is never, they are reserved for packaging failures, or fixing major breakage / security problems. - Once the last minor release of a major release branch (usually
x.2.0
, generallyx.Y.0
) has been released, there will be bugfix releases forx.Y.z
. - These releases will happen every two months (if there are changes) or when necessary.
Versioning
galaxy.yml
in themain
branch will always contain the version of the next major or minor release. It will be updated right after a release.version_added
needs to be used for every new feature (like a new argument or return value, etc) and module/plugin, and needs to coincide with the next minor/major release version. (This will eventually be enforced by CI.)
Branching
- Releasing minor and major releases is done from
stable-x
branches.- Shortly (usually a few hours) before a new major release,
stable-x
is branched.
- Shortly (usually a few hours) before a new major release,
- New features can be backported to the current
stable-x
release branch afterx.0.0
, and until the last minor release forstable-x
has been released.- Once a new major version is released, there will be no more minor releases for previous
stable-x
branches. - From then on, only bugfixes are allowed (backporting to the current two major releases).
- After that, only security fixes are allowed (backporting to the current three major releases).
- New features to the current major version must not break backwards compatibility!
- Once a new major version is released, there will be no more minor releases for previous
- Backporting process:
- Maintainers can merge backports themselves via bot. The bot will hopefully also allow to create backports automatically (if possible without conflicts). (We hope that they know the rules: no breaking of backwards compatibility!)
Deprecation
- Deprecations are done by version number (not by date).
- New deprecations can be added during every minor release, under the condition that they do not break backwards compatibility.
- Deprecations are expected to have a deprecation cycle of at least 2 major versions (i.e. ~1 year). Maintainers can use a longer deprecation cycle if they want to support the old code for that long.
Changelogs
- Every change that does not only affect docs or tests must have a changelog fragment.
- Exception: fixing/extending a feature that already has a changelog fragment and has not yet been released. Such PRs must always link to the original PR(s) they update.
- Cangelog entries contain links to related issues. If there's no issue, link to the PR.
- Use your common sense!
- (This might change later. The
trivial
category should then be used to document changes which are not important enough to end up in the text version of the changelog.) - Fragments must not be added for new module PRs and new plugin PRs. The only exception are test and filter plugins: these are not automatically documented yet.
- The
(x+1).0.0
changelog continues thex.0.0
changelog.- A
x.y.0
changelog withy > 0
is not part of a changelog of a laterX.*.*
(withX > x
) orx,Y,*
(withY > y
) release. - A
x.y.z
changelog withz > 0
is not part of a changelog of a later(x+1).*.*
orx.Y.z
(withY > y
) release. - Since everything adding to the minor/patch changelogs are backports, the same changelog fragments of these minor/patch releases will be in the next major release's changelog. (This is the same behavior as in ansible/ansible.)
- A
- Changelogs do not contain previous major releases, and only use the
ancestor
feature (inchangelogs/changelog.yaml
) to point to the previous major release. - Changelog fragments are removed after a release is made.
Metadata
Metadata
Assignees
Labels
No labels