mirror of
https://github.com/freemkv/freemkv-keysources.git
synced 2026-10-07 18:13:11 +00:00
ci: require a CHANGELOG entry for the crate version on main
Adds a 'changelog' job that fails when Cargo.toml's version has no matching '## [X.Y.Z]' heading in CHANGELOG.md, hard on main and PRs into main, warning on dev/qa — so the unified release can't ship a crate with a blank changelog.
This commit is contained in:
@@ -38,6 +38,32 @@ on:
|
|||||||
# is the one release.sh regenerates in each consuming binary.
|
# is the one release.sh regenerates in each consuming binary.
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
# CI owns the changelog: main may never carry a released version without a
|
||||||
|
# CHANGELOG.md entry for it. The release orchestrator dates an existing
|
||||||
|
# `## [X.Y.Z]` heading — it does NOT invent one — so a version bump that
|
||||||
|
# forgot its changelog entry must fail here rather than ship a blank release.
|
||||||
|
# Hard-fails on main (and PRs targeting main); warns elsewhere so an
|
||||||
|
# in-progress dev/qa branch whose entry isn't written yet is not blocked.
|
||||||
|
changelog:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v5
|
||||||
|
- name: Require a CHANGELOG entry for the crate version on main
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
version=$(grep -m1 '^version = ' Cargo.toml | sed -E 's/.*"([^"]+)".*/\1/')
|
||||||
|
if grep -qE "^## \[${version}\]" CHANGELOG.md; then
|
||||||
|
echo "CHANGELOG.md has an entry for ${version}."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
msg="CHANGELOG.md has no '## [${version}]' entry"
|
||||||
|
if [ "${GITHUB_REF_NAME:-}" = "main" ] || [ "${GITHUB_BASE_REF:-}" = "main" ]; then
|
||||||
|
echo "::error::${msg} — main requires a changelog entry for the released version."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "::warning::${msg} (allowed on ${GITHUB_REF_NAME:-unknown}; required before it can reach main)."
|
||||||
|
|
||||||
lint:
|
lint:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
Reference in New Issue
Block a user