feat(ci): automated changelog generation via git-cliff #38

Merged
sarman merged 1 commits from feat/git-cliff-changelog into master 2026-04-13 02:56:51 +00:00
Owner

Summary

  • Adds cliff.toml with conventional-commit parsing (feat/fix/perf/docs/refactor shown; ci/chore/build excluded)
  • Bootstraps CHANGELOG.md from all existing semver tags (v0.1.0–v0.2.49)
  • Adds changelog job to auto-tag.yml that runs after autotag in parallel with build jobs: installs git-cliff v2.7.0 musl binary, generates CHANGELOG.md, PATCHes the Gitea release body with grouped per-release notes, commits CHANGELOG.md to master with [skip ci], and uploads it as a release asset
  • Updates docs/wiki/CICD-Pipeline.md with Changelog Generation section

Security fixes applied during review

  • set -eu added to all changelog job shell steps
  • Null-check on RELEASE_ID in both API-call steps (exit 1 on null)
  • Race-condition fix: changelog job creates the release if it does not yet exist (build jobs may still be compiling when changelog finishes in ~5 s)

Test plan

  • Merge triggers auto-tag.yml; verify changelog job passes in Gitea Actions
  • Gitea release body shows grouped commit list instead of "Release vX.Y.Z"
  • CHANGELOG.md committed to master after CI (check git log)
  • CHANGELOG.md appears as downloadable release asset
  • Subsequent push to master does NOT re-trigger auto-tag (the [skip ci] commit is skipped)
  • CI/chore commits absent from release body
## Summary - Adds `cliff.toml` with conventional-commit parsing (feat/fix/perf/docs/refactor shown; ci/chore/build excluded) - Bootstraps `CHANGELOG.md` from all existing semver tags (v0.1.0–v0.2.49) - Adds `changelog` job to `auto-tag.yml` that runs after `autotag` in parallel with build jobs: installs git-cliff v2.7.0 musl binary, generates `CHANGELOG.md`, PATCHes the Gitea release body with grouped per-release notes, commits `CHANGELOG.md` to master with `[skip ci]`, and uploads it as a release asset - Updates `docs/wiki/CICD-Pipeline.md` with Changelog Generation section ## Security fixes applied during review - `set -eu` added to all changelog job shell steps - Null-check on `RELEASE_ID` in both API-call steps (exit 1 on null) - Race-condition fix: `changelog` job creates the release if it does not yet exist (build jobs may still be compiling when changelog finishes in ~5 s) ## Test plan - [ ] Merge triggers `auto-tag.yml`; verify `changelog` job passes in Gitea Actions - [ ] Gitea release body shows grouped commit list instead of `"Release vX.Y.Z"` - [ ] `CHANGELOG.md` committed to master after CI (check git log) - [ ] `CHANGELOG.md` appears as downloadable release asset - [ ] Subsequent push to master does NOT re-trigger auto-tag (the `[skip ci]` commit is skipped) - [ ] CI/chore commits absent from release body
sarman added 1 commit 2026-04-13 02:52:42 +00:00
- Add cliff.toml with Tera template: feat/fix/perf/docs/refactor included;
  ci/chore/build/test/style excluded
- Bootstrap CHANGELOG.md from all existing semver tags (v0.1.0–v0.2.49)
- Add changelog job to auto-tag.yml: runs after autotag in parallel with
  build jobs; installs git-cliff v2.7.0 musl binary, generates CHANGELOG.md,
  PATCHes Gitea release body with per-release notes, commits CHANGELOG.md
  to master with [skip ci] to prevent re-trigger, uploads as release asset
- Add set -eu to all changelog job steps
- Null-check RELEASE_ID before API calls; create release if missing
  (race-condition fix: changelog finishes before build jobs create release)
- Add Changelog Generation section to docs/wiki/CICD-Pipeline.md
sarman force-pushed feat/git-cliff-changelog from 23c5c4a8be to 6d2b69ffb0 2026-04-13 02:56:24 +00:00 Compare
sarman merged commit 41bc5f38ff into master 2026-04-13 02:56:51 +00:00
Sign in to join this conversation.
No reviewers
No Milestone
No project
No Assignees
1 Participants
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: sarman/tftsr-devops_investigation#38
No description provided.