Add ansible-lint CI gate and antsibull-changelog release pipeline #1

Merged
jsanchezd merged 1 commit from feature/ci-lint-and-release-gate into main 2026-09-29 13:03:39 +00:00
Owner

Rolls out the pattern proven on silvarion.repos: a lint-gated PR workflow and a manually-triggered release pipeline (bumps galaxy.yml, runs antsibull-changelog, pushes a release commit+tag directly to main via a push-whitelisted token).

Fixed real issues ansible-lint found: meta/runtime.yml had requires_ansible commented out, a false-positive jinja concat warning (confirmed via a real playbook run, marked noqa with reasoning), a missing Jinja space, six molecule files missing a trailing newline, and a stale superseded .ansible-lint config file removed.

Verified antsibull-changelog release+generate end-to-end in a fresh container matching the CI job image.

🤖 Generated with Claude Code

https://claude.ai/code/session_012icUrjv3vgHtovVpHUFjdp

Rolls out the pattern proven on silvarion.repos: a lint-gated PR workflow and a manually-triggered release pipeline (bumps galaxy.yml, runs antsibull-changelog, pushes a release commit+tag directly to main via a push-whitelisted token). Fixed real issues ansible-lint found: meta/runtime.yml had requires_ansible commented out, a false-positive jinja concat warning (confirmed via a real playbook run, marked noqa with reasoning), a missing Jinja space, six molecule files missing a trailing newline, and a stale superseded `.ansible-lint` config file removed. Verified antsibull-changelog release+generate end-to-end in a fresh container matching the CI job image. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_012icUrjv3vgHtovVpHUFjdp
Add ansible-lint CI gate and antsibull-changelog release pipeline
All checks were successful
Ansible Lint / ansible-lint (pull_request) Successful in 25s
839228c9ce
Rolls out the pattern proven on silvarion.repos: .forgejo/workflows/
ansible-lint.yml gates PRs on `ansible-lint -c .ansible-lint.yml`,
and .forgejo/workflows/release.yml is a manually-triggered
(workflow_dispatch) pipeline that bumps galaxy.yml, runs
antsibull-changelog release+generate, and pushes a release commit
+tag directly to main.

Fixed real issues ansible-lint found along the way, verified either
by a live playbook run or a fresh container reproduction, not
assumed:
- meta/runtime.yml had requires_ansible entirely commented out
  (schema[meta-runtime] failure), same as silvarion.repos.
- roles/tools/tasks/install/packages.yml's Debian-family package list
  concatenation (`_v_tools_debian_family_pkgs + [...]`) is flagged by
  ansible-lint's static jinja check as "can only concatenate str (not
  'list') to str" -- confirmed via a real playbook run that this is a
  false positive: the >- folded scalar correctly resolves to a native
  list at actual runtime. Marked noqa with the reasoning inline rather
  than changing working code.
- roles/tools/tasks/install/editors.yml had a missing space inside a
  Jinja expression (jinja[spacing]).
- Six molecule/*/*.yml files were missing a trailing newline.
- Deleted the pre-existing, now-superseded .ansible-lint (no
  extension) config -- CI explicitly passes -c .ansible-lint.yml, and
  the old file was itself being scanned as a stray YAML source,
  producing a trailing-spaces false positive.

Also added changelogs/ to exclude_paths: ansible-lint misparses both
changelogs/config.yaml (spurious yaml[indentation] on a plain
top-level mapping) and the auto-generated changelogs/changelog.yaml --
neither is Ansible content. (silvarion.repos will need the same
exclusion added retroactively, since it will generate changelog.yaml
going forward now that its own release pipeline is live.)

Verified end-to-end in a fresh node:20-bookworm container matching the
CI job image: antsibull-changelog release+generate both succeed and
produce a correct CHANGELOG.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012icUrjv3vgHtovVpHUFjdp
jsanchezd deleted branch feature/ci-lint-and-release-gate 2026-09-29 13:03:39 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ansible-collections/silvarion.base!1
No description provided.