44 schedule :
55 # Runs "At 00:01 every night" (UTC)
66 - cron : ' 1 0 * * *'
7- workflow_dispatch :
7+ workflow_dispatch : # Allows manual execution
88
99jobs :
1010 create-new-release :
@@ -14,17 +14,26 @@ jobs:
1414 steps :
1515 - name : Checkout code
1616 uses : actions/checkout@v4
17+
1718 - name : Parse CHANGELOG.md for yesterday's entries and create a new release
1819 env :
1920 GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
2021 run : |
2122 YESTERDAY=$(date -u --date="yesterday" +%Y-%m-%d)
22- YESTERDAY_CHANGELOG_NOTES=$(awk '/^## '"$YESTERDAY"'/ {f=1; next} f && /^## [0-9]{4}-[0-9]{2}-[0-9]{2}/ {f=0} f && !/^## / {print}' CHANGELOG.md)
23-
24- if [ ${#YESTERDAY_CHANGELOG_NOTES} -gt 10000 ]; then
25- echo "Changelog is too large, saving to file..."
26- echo "$YESTERDAY_CHANGELOG_NOTES" > changelog_tmp.md
27- gh release create "$YESTERDAY" -t "$YESTERDAY" -F changelog_tmp.md --latest
28- elif [ -n "$YESTERDAY_CHANGELOG_NOTES" ]; then
29- gh release create "$YESTERDAY" -t "$YESTERDAY" -n "$YESTERDAY_CHANGELOG_NOTES" --latest
23+ awk '/^## '"$YESTERDAY"'/ {f=1; next} f && /^## [0-9]{4}-[0-9]{2}-[0-9]{2}/ {f=0} f && !/^## / {print}' CHANGELOG.md > changelog_tmp.md
24+
25+ if [ ! -s changelog_tmp.md ]; then
26+ echo "No changes found for $YESTERDAY, skipping release."
27+ exit 0
28+ fi
29+
30+ CHANGELOG_SIZE=$(wc -c < changelog_tmp.md)
31+
32+ if [ "$CHANGELOG_SIZE" -gt 10000 ]; then
33+ echo "ERROR: Changelog is too large to process automatically! Manual review required."
34+ echo "To manually trigger the release, use the 'workflow_dispatch' event."
35+ exit 1
3036 fi
37+
38+ # Creating the GitHub release (without --latest)
39+ gh release create "$YESTERDAY" -t "$YESTERDAY" -F changelog_tmp.md
0 commit comments