Skip to content

Commit c9c2509

Browse files
author
jakub-przepiora
committed
ci: auto-update CHANGELOG.md on release (conventional commits → Added/Fixed sections)
1 parent c6bb42f commit c9c2509

1 file changed

Lines changed: 40 additions & 2 deletions

File tree

.github/workflows/release.yml

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,21 +81,59 @@ jobs:
8181
echo "$BODY" >> $GITHUB_OUTPUT
8282
echo "EOF" >> $GITHUB_OUTPUT
8383
84-
- name: Bump version in config/version.php
84+
- name: Bump version and update CHANGELOG.md
8585
run: |
8686
VERSION="${{ steps.version.outputs.version }}"
87+
DATE=$(date +%Y-%m-%d)
8788
git config user.name "github-actions[bot]"
8889
git config user.email "github-actions[bot]@users.noreply.github.com"
8990
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
9091
git fetch origin main
9192
git checkout main
9293
git pull origin main
94+
95+
# Bump version.php
9396
sed -i "s/'current' => '.*'/'current' => '${VERSION}'/" backend/config/version.php
97+
98+
# Update CHANGELOG.md — replace [Unreleased] header with version + date, add new Unreleased
99+
if [ -f CHANGELOG.md ]; then
100+
# Build changelog entry from conventional commits
101+
PREV_TAG=$(git tag --sort=-v:refname | grep -v "^${VERSION}$" | head -1 || echo "")
102+
FEATURES=""
103+
FIXES=""
104+
if [ -n "$PREV_TAG" ]; then
105+
FEATURES=$(git log "${PREV_TAG}..HEAD" --pretty=format:"%s" --no-merges | grep -E "^feat" | sed 's/^feat[^:]*: /- /' || true)
106+
FIXES=$(git log "${PREV_TAG}..HEAD" --pretty=format:"%s" --no-merges | grep -E "^fix" | sed 's/^fix[^:]*: /- /' || true)
107+
fi
108+
109+
# Build the new entry
110+
ENTRY="## [${VERSION}] - ${DATE}\n"
111+
if [ -n "$FEATURES" ]; then
112+
ENTRY="${ENTRY}\n### Added\n${FEATURES}\n"
113+
fi
114+
if [ -n "$FIXES" ]; then
115+
ENTRY="${ENTRY}\n### Fixed\n${FIXES}\n"
116+
fi
117+
118+
# Insert after the [Unreleased] section marker
119+
sed -i "/^## \[Unreleased\]/,/^## \[/ {
120+
/^## \[Unreleased\]/! {
121+
/^## \[/ i\\
122+
${ENTRY}
123+
}
124+
}" CHANGELOG.md
125+
126+
# Update comparison links
127+
sed -i "s|\[Unreleased\]: .*|[Unreleased]: https://github.com/Mes-Open/OpenMes/compare/${VERSION}...develop|" CHANGELOG.md
128+
129+
git add CHANGELOG.md
130+
fi
131+
94132
git add backend/config/version.php
95133
if git diff --cached --quiet; then
96134
echo "Version already set to ${VERSION}, no commit needed."
97135
else
98-
git commit -m "chore: bump version to ${VERSION}"
136+
git commit -m "chore: bump version to ${VERSION}, update CHANGELOG"
99137
git push origin main
100138
fi
101139

0 commit comments

Comments
 (0)