Commit Message Conventions

Prefix tags for release notes, issue linking, and goreleaser integration

Introduction

ClusterCockpit uses goreleaser for building and uploading releases. Release notes are generated automatically from commit messages using the prefix tags described below. GitHub also parses special keywords to link commits and PRs to issues.

Before opening a pull request, use interactive rebase to clean up your branch history and ensure the final commit messages follow these conventions.


Release Note Prefixes

Commits carrying one of the following prefixes appear in the generated release notes:

PrefixAppears under
feat:New features
fix:Bug fixes
sec:Security fixes (ClusterCockpit-specific)
doc:Documentation updates
feat dep: or fix dep:Dependency additions or changes

Commits without a recognised prefix are not included in the release notes.

Examples:

feat: add automatic job tagging
fix: correct WAL rotation on partial flush (#423)
sec: enforce API token expiry
doc: update rebase workflow guide
feat dep: upgrade to Go 1.22

Referencing Issues

It is good practice to create a GitHub issue for any notable change so that the motivation and discussion are preserved. Reference an issue in any commit message or PR description using the #<number> syntax:

This change contributes to #235

Automatically Closing Issues

GitHub closes an issue automatically when a PR containing one of the following keywords merges into the default branch:

  • close, closes, closed
  • fix, fixes, fixed
  • resolve, resolves, resolved

The issue is not closed until the commit appears on main. Example:

fix: correct WAL rotation on partial flush

Fixes #423

Place the closing keyword in the PR description rather than a WIP commit message, since commit messages are often rewritten with interactive rebase before the PR is merged.