Skip to content

Commit 822fe45

Browse files
Adds changelog validation to release workflow (#24)
## TLDR; Adds a validation step to the release workflow that checks if all packages have a changelog entry for the current release version. ## What Does This Do? This change introduces a new job in the `publish-release.yml` workflow that validates the existence of changelog entries for each package being released. This helps ensure that each release includes proper documentation in the changelog files. ## Brief Details? The new job iterates through a list of packages, checks for the existence of a `CHANGELOG.md` file in each package's directory, and verifies that the file contains an entry for the current release version. The script uses `grep` to check for a header matching the version number. If a changelog file is missing or an entry for the current version is not found, an error message is displayed, and the workflow exits. ## How Do The Tests Prove The Change Works? The workflow will fail if any package is missing a `CHANGELOG.md` file or if a changelog entry for the current release version is not found. This prevents releases from being published without proper documentation.
1 parent 2abba52 commit 822fe45

10 files changed

Lines changed: 109 additions & 0 deletions

File tree

.github/workflows/publish-release.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,43 @@ jobs:
3131
id: version
3232
run: echo "VERSION=${GITHUB_REF#refs/tags/Release/}" >> $GITHUB_OUTPUT
3333

34+
- name: Validate changelogs have version entries
35+
run: |
36+
VERSION="${{ steps.version.outputs.VERSION }}"
37+
# Escape dots for regex matching (1.2.3 -> 1\.2\.3)
38+
VERSION_ESCAPED=$(echo "$VERSION" | sed 's/\./\\./g')
39+
PACKAGES=(
40+
"dart_logging"
41+
"dart_node_core"
42+
"dart_node_coverage"
43+
"reflux"
44+
"dart_node_express"
45+
"dart_node_ws"
46+
"dart_node_better_sqlite3"
47+
"dart_node_mcp"
48+
"dart_node_react"
49+
"dart_node_react_native"
50+
)
51+
MISSING=()
52+
for pkg in "${PACKAGES[@]}"; do
53+
CHANGELOG="packages/$pkg/CHANGELOG.md"
54+
if [[ ! -f "$CHANGELOG" ]]; then
55+
echo "::error::Missing CHANGELOG.md for $pkg"
56+
MISSING+=("$pkg (no CHANGELOG.md)")
57+
continue
58+
fi
59+
# Check for ## X.Y.Z or ## X.Y.Z-prerelease header
60+
if ! grep -qE "^## $VERSION_ESCAPED\b" "$CHANGELOG"; then
61+
echo "::error::$pkg/CHANGELOG.md missing entry for version $VERSION"
62+
MISSING+=("$pkg")
63+
fi
64+
done
65+
if [[ ${#MISSING[@]} -gt 0 ]]; then
66+
echo "::error::Changelogs missing version $VERSION: ${MISSING[*]}"
67+
exit 1
68+
fi
69+
echo "All changelogs have entries for version $VERSION"
70+
3471
- name: Setup Dart
3572
uses: ./.github/actions/setup
3673
with:

packages/dart_logging/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changelog
22

3+
## 0.11.0-beta
4+
5+
- Early release
6+
7+
## 0.10.0-beta
8+
9+
- Early release
10+
311
## 0.9.0-beta
412

513
- Early release

packages/dart_node_better_sqlite3/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changelog
22

3+
## 0.11.0-beta
4+
5+
- Early release
6+
7+
## 0.10.0-beta
8+
9+
- Early release
10+
311
## 0.9.0-beta
412

513
- Early release

packages/dart_node_core/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changelog
22

3+
## 0.11.0-beta
4+
5+
- Early release
6+
7+
## 0.10.0-beta
8+
9+
- Early release
10+
311
## 0.9.0-beta
412

513
- Early release

packages/dart_node_express/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changelog
22

3+
## 0.11.0-beta
4+
5+
- Early release
6+
7+
## 0.10.0-beta
8+
9+
- Early release
10+
311
## 0.9.0-beta
412

513
- Early release

packages/dart_node_mcp/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changelog
22

3+
## 0.11.0-beta
4+
5+
- Early release
6+
7+
## 0.10.0-beta
8+
9+
- Early release
10+
311
## 0.9.0-beta
412

513
- Early release

packages/dart_node_react/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changelog
22

3+
## 0.11.0-beta
4+
5+
- Early release
6+
7+
## 0.10.0-beta
8+
9+
- Early release
10+
311
## 0.9.0-beta
412

513
- Early release

packages/dart_node_react_native/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changelog
22

3+
## 0.11.0-beta
4+
5+
- Early release
6+
7+
## 0.10.0-beta
8+
9+
- Early release
10+
311
## 0.9.0-beta
412

513
- Early release

packages/dart_node_ws/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changelog
22

3+
## 0.11.0-beta
4+
5+
- Early release
6+
7+
## 0.10.0-beta
8+
9+
- Early release
10+
311
## 0.9.0-beta
412

513
- Early release

packages/reflux/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changelog
22

3+
## 0.11.0-beta
4+
5+
- Early release
6+
7+
## 0.10.0-beta
8+
9+
- Early release
10+
311
## 0.9.0-beta
412

513
- Early release

0 commit comments

Comments
 (0)