diff --git a/.github/workflows/github-release.yml b/.github/workflows/github-release.yml index c49f17f32..42158ad2b 100644 --- a/.github/workflows/github-release.yml +++ b/.github/workflows/github-release.yml @@ -2,8 +2,8 @@ name: Create new release on: schedule: - # Runs "At 00:01 every night" (UTC) - - cron: '1 0 * * *' + - cron: '1 0 * * *' # Runs nightly + workflow_dispatch: jobs: create-new-release: @@ -13,17 +13,24 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 + - name: Parse CHANGELOG.md for yesterday's entries and create a new release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | YESTERDAY=$(date -u --date="yesterday" +%Y-%m-%d) - YESTERDAY_CHANGELOG_NOTES=$(awk '/^## '"$YESTERDAY"'/ {f=1; next} f && /^## [0-9]{4}-[0-9]{2}-[0-9]{2}/ {f=0} f && !/^## / {print}' CHANGELOG.md) - - if [ ${#YESTERDAY_CHANGELOG_NOTES} -gt 10000 ]; then - echo "Changelog is too large, saving to file..." - echo "$YESTERDAY_CHANGELOG_NOTES" > changelog_tmp.md - gh release create "$YESTERDAY" -t "$YESTERDAY" -F changelog_tmp.md --latest - elif [ -n "$YESTERDAY_CHANGELOG_NOTES" ]; then - gh release create "$YESTERDAY" -t "$YESTERDAY" -n "$YESTERDAY_CHANGELOG_NOTES" --latest + + # Extract exactly the section for YESTERDAY + awk -v date="## $YESTERDAY" ' + $0 ~ date {found=1; print; next} + found && /^## [0-9]{4}-[0-9]{2}-[0-9]{2}/ {exit} + found {print} + ' CHANGELOG.md > changelog_tmp.md + + if [ ! -s changelog_tmp.md ]; then + echo "No changes found for $YESTERDAY, skipping release." + exit 0 fi + + echo "Creating GitHub release for $YESTERDAY..." + gh release create "$YESTERDAY" -t "$YESTERDAY" -F changelog_tmp.md \ No newline at end of file