ci: update release note generation to use the latest tag

This commit is contained in:
Manuel Weiser 2025-02-23 09:18:52 +01:00
parent 8ab16b351b
commit cd55cb86ba
2 changed files with 26 additions and 24 deletions

View File

@ -71,35 +71,36 @@ jobs:
- name: Generate Release Notes - name: Generate Release Notes
id: release_notes id: release_notes
run: | run: |
# Get all tags sorted by version # Get the latest tag
TAGS=($(git tag -l 'v*' --sort=-v:refname)) LATEST_TAG=$(git for-each-ref --sort=-creatordate --format '%(refname:short)' refs/tags | head -n 1)
CURRENT_TAG="${TAGS[0]}"
if [ ${#TAGS[@]} -gt 1 ]; then if [ -n "$LATEST_TAG" ]; then
PREVIOUS_TAG="${TAGS[1]}" # Get the commit hash of the latest tag
LAST_RELEASE_HASH=$(git rev-list -n 1 ${LATEST_TAG})
echo "CHANGES<<EOF" >> $GITHUB_OUTPUT echo "CHANGES<<EOF" >> $GITHUB_OUTPUT
echo "Changes since $PREVIOUS_TAG:" >> $GITHUB_OUTPUT echo "Changes since ${LATEST_TAG}:" >> $GITHUB_OUTPUT
echo "" >> $GITHUB_OUTPUT echo "" >> $GITHUB_OUTPUT
# Get commits between previous and current tag # Get all commits since last release
echo "### Added" >> $GITHUB_OUTPUT echo "### Added" >> $GITHUB_OUTPUT
git log ${PREVIOUS_TAG}..${CURRENT_TAG} --pretty=format:%s | grep -iE '^(feat|add|new)' | sed 's/^feat: /- /' >> $GITHUB_OUTPUT || true git log ${LAST_RELEASE_HASH}..HEAD --pretty=format:%s | grep -iE '^(feat|add|new)' | sed 's/^feat: /- /' >> $GITHUB_OUTPUT || true
echo "" >> $GITHUB_OUTPUT echo "" >> $GITHUB_OUTPUT
echo "### Fixed" >> $GITHUB_OUTPUT echo "### Fixed" >> $GITHUB_OUTPUT
git log ${PREVIOUS_TAG}..${CURRENT_TAG} --pretty=format:%s | grep -iE '^fix' | sed 's/^fix: /- /' >> $GITHUB_OUTPUT || true git log ${LAST_RELEASE_HASH}..HEAD --pretty=format:%s | grep -iE '^fix' | sed 's/^fix: /- /' >> $GITHUB_OUTPUT || true
echo "" >> $GITHUB_OUTPUT echo "" >> $GITHUB_OUTPUT
echo "### Changed" >> $GITHUB_OUTPUT echo "### Changed" >> $GITHUB_OUTPUT
git log ${PREVIOUS_TAG}..${CURRENT_TAG} --pretty=format:%s | grep -ivE '^(feat|fix|add|new)' | sed 's/^/- /' >> $GITHUB_OUTPUT || true git log ${LAST_RELEASE_HASH}..HEAD --pretty=format:%s | grep -ivE '^(feat|fix|add|new)' | sed 's/^/- /' >> $GITHUB_OUTPUT || true
echo "EOF" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT
else else
# First release or no previous tag # First release
echo "CHANGES<<EOF" >> $GITHUB_OUTPUT echo "CHANGES<<EOF" >> $GITHUB_OUTPUT
echo "Initial Release" >> $GITHUB_OUTPUT echo "Initial Release" >> $GITHUB_OUTPUT
echo "" >> $GITHUB_OUTPUT
# Add all commits for initial release # Add all commits for initial release
echo "" >> $GITHUB_OUTPUT
echo "### Added" >> $GITHUB_OUTPUT echo "### Added" >> $GITHUB_OUTPUT
git log --pretty=format:%s | grep -iE '^(feat|add|new)' | sed 's/^feat: /- /' >> $GITHUB_OUTPUT || true git log --pretty=format:%s | grep -iE '^(feat|add|new)' | sed 's/^feat: /- /' >> $GITHUB_OUTPUT || true
echo "" >> $GITHUB_OUTPUT echo "" >> $GITHUB_OUTPUT

View File

@ -76,35 +76,36 @@ jobs:
- name: Generate Release Notes - name: Generate Release Notes
id: release_notes id: release_notes
run: | run: |
# Get all tags sorted by version # Get the latest tag
TAGS=($(git tag -l 'v*' --sort=-v:refname)) LATEST_TAG=$(git for-each-ref --sort=-creatordate --format '%(refname:short)' refs/tags | head -n 1)
CURRENT_TAG="${TAGS[0]}"
if [ ${#TAGS[@]} -gt 1 ]; then if [ -n "$LATEST_TAG" ]; then
PREVIOUS_TAG="${TAGS[1]}" # Get the commit hash of the latest tag
LAST_RELEASE_HASH=$(git rev-list -n 1 ${LATEST_TAG})
echo "CHANGES<<EOF" >> $GITHUB_OUTPUT echo "CHANGES<<EOF" >> $GITHUB_OUTPUT
echo "Changes since $PREVIOUS_TAG:" >> $GITHUB_OUTPUT echo "Changes since ${LATEST_TAG}:" >> $GITHUB_OUTPUT
echo "" >> $GITHUB_OUTPUT echo "" >> $GITHUB_OUTPUT
# Get commits between previous and current tag # Get all commits since last release
echo "### Added" >> $GITHUB_OUTPUT echo "### Added" >> $GITHUB_OUTPUT
git log ${PREVIOUS_TAG}..${CURRENT_TAG} --pretty=format:%s | grep -iE '^(feat|add|new)' | sed 's/^feat: /- /' >> $GITHUB_OUTPUT || true git log ${LAST_RELEASE_HASH}..HEAD --pretty=format:%s | grep -iE '^(feat|add|new)' | sed 's/^feat: /- /' >> $GITHUB_OUTPUT || true
echo "" >> $GITHUB_OUTPUT echo "" >> $GITHUB_OUTPUT
echo "### Fixed" >> $GITHUB_OUTPUT echo "### Fixed" >> $GITHUB_OUTPUT
git log ${PREVIOUS_TAG}..${CURRENT_TAG} --pretty=format:%s | grep -iE '^fix' | sed 's/^fix: /- /' >> $GITHUB_OUTPUT || true git log ${LAST_RELEASE_HASH}..HEAD --pretty=format:%s | grep -iE '^fix' | sed 's/^fix: /- /' >> $GITHUB_OUTPUT || true
echo "" >> $GITHUB_OUTPUT echo "" >> $GITHUB_OUTPUT
echo "### Changed" >> $GITHUB_OUTPUT echo "### Changed" >> $GITHUB_OUTPUT
git log ${PREVIOUS_TAG}..${CURRENT_TAG} --pretty=format:%s | grep -ivE '^(feat|fix|add|new)' | sed 's/^/- /' >> $GITHUB_OUTPUT || true git log ${LAST_RELEASE_HASH}..HEAD --pretty=format:%s | grep -ivE '^(feat|fix|add|new)' | sed 's/^/- /' >> $GITHUB_OUTPUT || true
echo "EOF" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT
else else
# First release or no previous tag # First release
echo "CHANGES<<EOF" >> $GITHUB_OUTPUT echo "CHANGES<<EOF" >> $GITHUB_OUTPUT
echo "Initial Release" >> $GITHUB_OUTPUT echo "Initial Release" >> $GITHUB_OUTPUT
echo "" >> $GITHUB_OUTPUT
# Add all commits for initial release # Add all commits for initial release
echo "" >> $GITHUB_OUTPUT
echo "### Added" >> $GITHUB_OUTPUT echo "### Added" >> $GITHUB_OUTPUT
git log --pretty=format:%s | grep -iE '^(feat|add|new)' | sed 's/^feat: /- /' >> $GITHUB_OUTPUT || true git log --pretty=format:%s | grep -iE '^(feat|add|new)' | sed 's/^feat: /- /' >> $GITHUB_OUTPUT || true
echo "" >> $GITHUB_OUTPUT echo "" >> $GITHUB_OUTPUT