diff --git a/.github/workflows/changelog-generation.yml b/.github/workflows/changelog-generation.yml index b9a3ad6..f328adb 100644 --- a/.github/workflows/changelog-generation.yml +++ b/.github/workflows/changelog-generation.yml @@ -5,6 +5,8 @@ on: push: branches: - "release-*" + paths: + - 'VERSION' jobs: build-and-run-release-notes: @@ -13,25 +15,32 @@ jobs: steps: - name: Check out code onto GOPATH uses: actions/checkout@v4 + with: + fetch-depth: 5 - name: Set up Go uses: actions/setup-go@v5 with: go-version: '1.21' check-latest: true - + - name: Build and Install Release Notes Tool env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - ./generate-changelog.sh - cat CHANGELOG.md - - - name: Read Tag Name from VERSION File - id: tag_name - run: | - echo "tag_name=$(cat VERSION)" >> $GITHUB_ENV echo "prev_tag_name=$(git show HEAD~1:VERSION)" >> $GITHUB_ENV + echo "tag_name=$(cat VERSION)" >> $GITHUB_ENV + echo "todays_date=$(date +'%Y-%m-%d')" >> $GITHUB_ENV + ./generate-changelog.sh + + - name: Update CHANGELOG.md header + run: | + echo "Tag Name: ${{ env.tag_name }}" + echo "Today's Date: ${{ env.todays_date }}" + echo "Previous Tag Name: ${{ env.prev_tag_name }}" + NEW_HEADER="## ${{ env.tag_name }} / ${{ env.todays_date }}" + sed -i '1s|.*|'"$NEW_HEADER"'\n\n|' CHANGELOG.md + cat CHANGELOG.md - name: Get Base SHA from Tag id: base_sha diff --git a/generate-changelog.sh b/generate-changelog.sh index 4b67a35..d1b65bb 100644 --- a/generate-changelog.sh +++ b/generate-changelog.sh @@ -7,7 +7,9 @@ CURR_DIR=$(pwd) VERSION=$(cat VERSION) TAG_NAME="v${VERSION}" +echo "Current HEAD: $(git rev-parse HEAD)" PREVIOUS_VERSION=$(git show HEAD~1:VERSION) +echo "Previous Tag Version: $PREVIOUS_VERSION" MANUAL_START_SHA=$1 MANUAL_END_SHA=$2 @@ -47,4 +49,13 @@ release-notes \ cat "CHANGELOG_NEW.md" # Append new changelog entries to Unreleased section -sed "/## Unreleased/r CHANGELOG_NEW.md" "${CURR_DIR}/CHANGELOG.md" > "CHANGELOG_TMP.md" && mv "CHANGELOG_TMP.md" "${CURR_DIR}/CHANGELOG.md" +if grep -q "## Unreleased" "${CURR_DIR}/CHANGELOG.md"; then + sed "/## Unreleased/r CHANGELOG_NEW.md" "${CURR_DIR}/CHANGELOG.md" > "CHANGELOG_TMP.md" && + mv "CHANGELOG_TMP.md" "${CURR_DIR}/CHANGELOG.md" +else + printf '## Unreleased\n\n' > "CHANGELOG_TMP.md" + cat CHANGELOG_NEW.md >> "CHANGELOG_TMP.md" + printf '\n\n' >> "CHANGELOG_TMP.md" + cat "${CURR_DIR}/CHANGELOG.md" >> "CHANGELOG_TMP.md" + mv "CHANGELOG_TMP.md" "${CURR_DIR}/CHANGELOG.md" +fi \ No newline at end of file