From 8a62597705db693ef020e675bf7b179a0d592920 Mon Sep 17 00:00:00 2001 From: Manuel Weiser Date: Sat, 22 Feb 2025 20:33:51 +0100 Subject: [PATCH] style: update release note generation for initial release handling --- .github/workflows/gitea-release.yml | 24 +++++++++++++++++++++--- .github/workflows/github-release.yml | 22 +++++++++++++++++++--- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/.github/workflows/gitea-release.yml b/.github/workflows/gitea-release.yml index 00cf418..c931507 100644 --- a/.github/workflows/gitea-release.yml +++ b/.github/workflows/gitea-release.yml @@ -12,6 +12,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Set up Python uses: actions/setup-python@v4 @@ -69,10 +71,12 @@ jobs: - name: Generate Release Notes id: release_notes run: | - CURRENT_TAG=$(git describe --tags --abbrev=0) - PREVIOUS_TAG=$(git describe --tags --abbrev=0 ${CURRENT_TAG}^) + # Get all tags sorted by version + TAGS=($(git tag -l 'v*' --sort=-v:refname)) + CURRENT_TAG="${TAGS[0]}" - if [ -n "$PREVIOUS_TAG" ]; then + if [ ${#TAGS[@]} -gt 1 ]; then + PREVIOUS_TAG="${TAGS[1]}" echo "CHANGES<> $GITHUB_OUTPUT echo "Changes since $PREVIOUS_TAG:" >> $GITHUB_OUTPUT echo "" >> $GITHUB_OUTPUT @@ -90,8 +94,22 @@ jobs: git log ${PREVIOUS_TAG}..${CURRENT_TAG} --pretty=format:%s | grep -ivE '^(feat|fix|add|new)' | sed 's/^/- /' >> $GITHUB_OUTPUT || true echo "EOF" >> $GITHUB_OUTPUT else + # First release or no previous tag echo "CHANGES<> $GITHUB_OUTPUT echo "Initial Release" >> $GITHUB_OUTPUT + + # Add all commits for initial release + echo "" >> $GITHUB_OUTPUT + echo "### Added" >> $GITHUB_OUTPUT + git log --pretty=format:%s | grep -iE '^(feat|add|new)' | sed 's/^feat: /- /' >> $GITHUB_OUTPUT || true + echo "" >> $GITHUB_OUTPUT + + echo "### Fixed" >> $GITHUB_OUTPUT + git log --pretty=format:%s | grep -iE '^fix' | sed 's/^fix: /- /' >> $GITHUB_OUTPUT || true + echo "" >> $GITHUB_OUTPUT + + echo "### Changed" >> $GITHUB_OUTPUT + git log --pretty=format:%s | grep -ivE '^(feat|fix|add|new)' | sed 's/^/- /' >> $GITHUB_OUTPUT || true echo "EOF" >> $GITHUB_OUTPUT fi diff --git a/.github/workflows/github-release.yml b/.github/workflows/github-release.yml index 6ece6df..94d6fe1 100644 --- a/.github/workflows/github-release.yml +++ b/.github/workflows/github-release.yml @@ -76,10 +76,12 @@ jobs: - name: Generate Release Notes id: release_notes run: | - CURRENT_TAG=$(git describe --tags --abbrev=0) - PREVIOUS_TAG=$(git describe --tags --abbrev=0 ${CURRENT_TAG}^) + # Get all tags sorted by version + TAGS=($(git tag -l 'v*' --sort=-v:refname)) + CURRENT_TAG="${TAGS[0]}" - if [ -n "$PREVIOUS_TAG" ]; then + if [ ${#TAGS[@]} -gt 1 ]; then + PREVIOUS_TAG="${TAGS[1]}" echo "CHANGES<> $GITHUB_OUTPUT echo "Changes since $PREVIOUS_TAG:" >> $GITHUB_OUTPUT echo "" >> $GITHUB_OUTPUT @@ -97,8 +99,22 @@ jobs: git log ${PREVIOUS_TAG}..${CURRENT_TAG} --pretty=format:%s | grep -ivE '^(feat|fix|add|new)' | sed 's/^/- /' >> $GITHUB_OUTPUT || true echo "EOF" >> $GITHUB_OUTPUT else + # First release or no previous tag echo "CHANGES<> $GITHUB_OUTPUT echo "Initial Release" >> $GITHUB_OUTPUT + + # Add all commits for initial release + echo "" >> $GITHUB_OUTPUT + echo "### Added" >> $GITHUB_OUTPUT + git log --pretty=format:%s | grep -iE '^(feat|add|new)' | sed 's/^feat: /- /' >> $GITHUB_OUTPUT || true + echo "" >> $GITHUB_OUTPUT + + echo "### Fixed" >> $GITHUB_OUTPUT + git log --pretty=format:%s | grep -iE '^fix' | sed 's/^fix: /- /' >> $GITHUB_OUTPUT || true + echo "" >> $GITHUB_OUTPUT + + echo "### Changed" >> $GITHUB_OUTPUT + git log --pretty=format:%s | grep -ivE '^(feat|fix|add|new)' | sed 's/^/- /' >> $GITHUB_OUTPUT || true echo "EOF" >> $GITHUB_OUTPUT fi