-
Notifications
You must be signed in to change notification settings - Fork 37
Releasing, Versioning and Deprecation #93
Comments
@lonico Thanks a lot for documenting this, for the below quote
Do you have a way to document how you will handle the above scenario, like if this happens your customers can probably manually update the collections on their system to latest release. |
Missing Tags in GitHubhttps://galaxy.ansible.com/netapp/ontap lists |
@gundalow @anshulbehl Would we want this documented at the collection level (in a md file) or is the issue fine? I think if a reference is made to the issue pointing at it as the source of truth for release/version/deprecation info then I am fine but could understand why it might be better served in a doc at the top level of the repo (not technically needed in each collection is it as its dev focused?) |
@gundalow looks like I missed setting that tag, let me go back in our internal repo and find the hash and tag it. |
The Tag/release has been created |
@thedoubl3j I think in a README.md would be great, easier for others to find
@carchi8py Brilliant, thank you. |
Yes, we forgot it. I noticed that Wednesday, for our internal repo. I had to use 21.3.1, and fortunately, it was off by a single commit. But Chris got it fixed on GitHub. |
As of 5/10, we split our single repo hosting 7 collections into 7 repos, each hosting a single collection: netapp.aws This enables us to version each collection independently. The release notes for each collection identify the release contents for each version. |
@lonico @carchi8py I'd be interested in how you reached the decision to split into separate collections? Those details can help us support future collection owners. |
@gundalow There were a few things. Originally it was mentioned here ansible-collections/ansible-inclusion#16 (comment) during the review of the cloudmanager collection. When we looked in to it, it overall was going to make our lives easier so we decided to make the change to single repo (first internally and then externally in github) for the following reasons
|
Also we are looking at using github issue template for issue, and for each product there a different set of thing we need form users |
Introduction
This issue describes how and when netapp collections are released, and to announce updates to the release/versioning schedule. Other changes to this first post are always announced by separate posts in this issue.
Versioning schema
Until April 2021, releases are numbered as YY.M.P or YY.MM.P.
Starting in April, we are switching to semantic versioning as M.m.p
You can see that for 2021, the two versioning schemas overlap.
But we already released 21.5.0 as of April 22, and 21.6.0 as of May 06.
Releasing schedule for major and minor versions
Our intent is to release collection updates on the first Wednesday of every month.
The collections that are active as of April 2021 are CloudManager and ONTAP, and are most likely to see regular updates. Other collections will only be updated if a feature request or a non urgent bug fix is ready for this month.
If no new commit has been merged for a minor release, it must be skipped.
We strive to maintain backwards compatibility. If there is a strong enough justification, we will increase the Major release number to indicate a chance of a breaking change.
Releasing schedule for patch versions
If possible, we will wait for the next minor release. If we deem the fix urgent, we will release a patch version as MM.m.p with z > 0.
Versioning
galaxy.yml in the master branch will always contain the version of the next minor release. It will be updated right after a release.
version_added needs to be used for every new feature and module/plugin, and needs to coincide with the next minor/major release version. (This is enforced by our internal CI.)
Branching
Releasing major or minor releases is done from a tagged master branch.
New features must not break backwards compatibility. If there is a strong enough justification, we will increase the Major release number to indicate a chance of a breaking change.
Backporting process
We do not backport any change. As new versions maintain backward compatibility, it is always possible to move to a new minor version. If we introduce a major change, we may revisit this statement.
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 1 year.
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.
Use your common sense!
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.
Changelogs do not contain previous major releases, and only use the ancestor feature (in changelogs/changelog.yaml) to point to the previous major release.
Changelog fragments are removed after a release is made.
The text was updated successfully, but these errors were encountered: