diff --git a/.github/workflows/gitea-release.yml b/.github/workflows/gitea-release.yml index c931507..2057824 100644 --- a/.github/workflows/gitea-release.yml +++ b/.github/workflows/gitea-release.yml @@ -71,35 +71,36 @@ jobs: - name: Generate Release Notes id: release_notes run: | - # Get all tags sorted by version - TAGS=($(git tag -l 'v*' --sort=-v:refname)) - CURRENT_TAG="${TAGS[0]}" + # Get the latest tag + LATEST_TAG=$(git for-each-ref --sort=-creatordate --format '%(refname:short)' refs/tags | head -n 1) - if [ ${#TAGS[@]} -gt 1 ]; then - PREVIOUS_TAG="${TAGS[1]}" + if [ -n "$LATEST_TAG" ]; then + # Get the commit hash of the latest tag + LAST_RELEASE_HASH=$(git rev-list -n 1 ${LATEST_TAG}) + echo "CHANGES<> $GITHUB_OUTPUT - echo "Changes since $PREVIOUS_TAG:" >> $GITHUB_OUTPUT + echo "Changes since ${LATEST_TAG}:" >> $GITHUB_OUTPUT echo "" >> $GITHUB_OUTPUT - # Get commits between previous and current tag + # Get all commits since last release 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 "### 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 "### 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 else - # First release or no previous tag + # First release echo "CHANGES<> $GITHUB_OUTPUT echo "Initial Release" >> $GITHUB_OUTPUT + echo "" >> $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 diff --git a/.github/workflows/github-release.yml b/.github/workflows/github-release.yml index 94d6fe1..94154ac 100644 --- a/.github/workflows/github-release.yml +++ b/.github/workflows/github-release.yml @@ -76,35 +76,36 @@ jobs: - name: Generate Release Notes id: release_notes run: | - # Get all tags sorted by version - TAGS=($(git tag -l 'v*' --sort=-v:refname)) - CURRENT_TAG="${TAGS[0]}" + # Get the latest tag + LATEST_TAG=$(git for-each-ref --sort=-creatordate --format '%(refname:short)' refs/tags | head -n 1) - if [ ${#TAGS[@]} -gt 1 ]; then - PREVIOUS_TAG="${TAGS[1]}" + if [ -n "$LATEST_TAG" ]; then + # Get the commit hash of the latest tag + LAST_RELEASE_HASH=$(git rev-list -n 1 ${LATEST_TAG}) + echo "CHANGES<> $GITHUB_OUTPUT - echo "Changes since $PREVIOUS_TAG:" >> $GITHUB_OUTPUT + echo "Changes since ${LATEST_TAG}:" >> $GITHUB_OUTPUT echo "" >> $GITHUB_OUTPUT - # Get commits between previous and current tag + # Get all commits since last release 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 "### 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 "### 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 else - # First release or no previous tag + # First release echo "CHANGES<> $GITHUB_OUTPUT echo "Initial Release" >> $GITHUB_OUTPUT + echo "" >> $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