Replies: 1 comment 1 reply
-
Officially we aim to follow SemVer. Still, mistakes can happen and the only way to ensure reproducible behavior is if you pin ansible-lint version, especially as there is no way for us to unrelease a release once is out. If you use pre-commit to run the linter, that is an implied feature, alongside its ability to auto-upgrade monthly or quarterly. I should also note that the linter entered a period of heavy/fast development about 6 months ago and will continue to be under heavy development for the next ~6 months. Once that is done we should see far less releases and far less surprises from one release to another, especially as one of our current focus is to improve the test coverage. I would want to say that we aim for zero bugs, but that's a dream. A more realistic goal is to ensure that each release is more stable and better tested than the previous one. Failures caused by new rulesThat is the way to address them, just add them to wither warn_list or skip-list with a comment to look at them later. This allows you to update the linter and benefit from someo of the bug-fixes and continue working on your project without having to bother about some fresh rules that might not be yet mature enough. It might also not be the right time for you to spend time addressing some of the new rules. As long you put a comment before your rule disabling option like |
Beta Was this translation helpful? Give feedback.
-
I've checked the readme and the docs and I could not find anything detailing whether the project uses semver, or some other versioning scheme, nor what types of changes we should expect to see.
Trying to use
ansible-lint
in CI pinned to "major" version ranges results in my CI being broken very frequently due to changes in the project, especially changes to rules (new rules, changes to existing ones, renaming, etc.), and these changes appear to be introduced in both minor and patch versions.For example, v6.12.2 renames some rules and as far as I can tell offers no grace period where the old name still works.
While I'm sure there's an interpretation of new rules being a non-breaking change (a new backward-compatible feature), in practice due to the way
ansible-lint
is used, new rules will cause failures that didn't exist. I'm not sure how to address that, but I'm also not looking to address it in this discussion.What I'm really asking for now is that whatever the project's policy on versioning and the types of changes that might be included, please detail those explicitly in the README and/or docsite, so that we can make an informed decision on pinning or whether to even use
ansible-lint
.Thanks!
Beta Was this translation helpful? Give feedback.
All reactions