@@ -2,8 +2,8 @@ name: Create new release
22
33on :
44 schedule :
5- # Runs "At 00:01 every night" (UTC)
6- - cron : ' 1 0 * * * '
5+ - cron : ' 1 0 * * * ' # Runs nightly
6+ workflow_dispatch :
77
88jobs :
99 create-new-release :
@@ -13,17 +13,24 @@ jobs:
1313 steps :
1414 - name : Checkout code
1515 uses : actions/checkout@v4
16+
1617 - name : Parse CHANGELOG.md for yesterday's entries and create a new release
1718 env :
1819 GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
1920 run : |
2021 YESTERDAY=$(date -u --date="yesterday" +%Y-%m-%d)
21- YESTERDAY_CHANGELOG_NOTES=$(awk '/^## '"$YESTERDAY"'/ {f=1; next} f && /^## [0-9]{4}-[0-9]{2}-[0-9]{2}/ {f=0} f && !/^## / {print}' CHANGELOG.md)
22-
23- if [ ${#YESTERDAY_CHANGELOG_NOTES} -gt 10000 ]; then
24- echo "Changelog is too large, saving to file..."
25- echo "$YESTERDAY_CHANGELOG_NOTES" > changelog_tmp.md
26- gh release create "$YESTERDAY" -t "$YESTERDAY" -F changelog_tmp.md --latest
27- elif [ -n "$YESTERDAY_CHANGELOG_NOTES" ]; then
28- gh release create "$YESTERDAY" -t "$YESTERDAY" -n "$YESTERDAY_CHANGELOG_NOTES" --latest
22+
23+ # Extract exactly the section for YESTERDAY
24+ awk -v date="## $YESTERDAY" '
25+ $0 ~ date {found=1; print; next}
26+ found && /^## [0-9]{4}-[0-9]{2}-[0-9]{2}/ {exit}
27+ found {print}
28+ ' CHANGELOG.md > changelog_tmp.md
29+
30+ if [ ! -s changelog_tmp.md ]; then
31+ echo "No changes found for $YESTERDAY, skipping release."
32+ exit 0
2933 fi
34+
35+ echo "Creating GitHub release for $YESTERDAY..."
36+ gh release create "$YESTERDAY" -t "$YESTERDAY" -F changelog_tmp.md
0 commit comments