Skip to content

Commit 3698496

Browse files
Change release note generation to use github in built
Add new labels to the changelog Address review comments
1 parent dfe7eb3 commit 3698496

File tree

4 files changed

+132
-40
lines changed

4 files changed

+132
-40
lines changed

.github/release-drafter.yml

Lines changed: 0 additions & 19 deletions
This file was deleted.

.github/release.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Configuration for GitHub's automatic release notes
2+
# https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes
3+
4+
changelog:
5+
exclude:
6+
labels:
7+
- skip-changelog
8+
authors:
9+
- dependabot
10+
- copilot
11+
categories:
12+
- title: ⚠️ Breaking Changes
13+
labels:
14+
- 'breaking change'
15+
- title: 🚀 Features
16+
labels:
17+
- 'Type/New Feature'
18+
- title: ✨ Improvements
19+
labels:
20+
- 'Type/Improvement'
21+
- title: 🐛 Bug Fixes
22+
labels:
23+
- 'Type/Bug'
24+
- title: 📚 Documentation
25+
labels:
26+
- 'Type/Docs'
27+
- title: ✅ Quality Assurance
28+
labels:
29+
- 'Type/Test'
30+
- title: 🔧 Infrastructure
31+
labels:
32+
- 'Type/Infrastructure'
33+
- title: 🛠️ Tooling & Scripts
34+
labels:
35+
- 'Type/Tooling'

.github/workflows/pr-label-check.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ jobs:
2121
'Type/New Feature',
2222
'Type/Improvement',
2323
'Type/Bug',
24+
'Type/Docs',
25+
'Type/Test',
26+
'Type/Infrastructure',
27+
'Type/Tooling',
2428
'skip-changelog'
2529
];
2630

.github/workflows/release.yml renamed to .github/workflows/release-builder.yml

Lines changed: 93 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -605,23 +605,85 @@ jobs:
605605
VERSION="${{ github.event.inputs.version }}"
606606
echo "version=$VERSION" >> $GITHUB_OUTPUT
607607
608-
- name: 📝 Generate Changelog (Release Drafter)
609-
id: changelog
610-
uses: release-drafter/release-drafter@v5
608+
- name: 📝 Generate Automatic Release Notes
609+
id: generate_notes
610+
uses: actions/github-script@v7
611611
with:
612-
config-name: release-drafter.yml
613-
name: Thunder ${{ github.event.inputs.version }}
614-
tag: ${{ github.event.inputs.version }}
615-
prerelease: ${{ github.event.inputs.prerelease }}
616-
publish: false
617-
env:
618-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
612+
script: |
613+
const currentTag = '${{ github.event.inputs.version }}';
614+
615+
try {
616+
// Get only the 2 most recent releases (current + previous)
617+
const { data: releases } = await github.rest.repos.listReleases({
618+
owner: context.repo.owner,
619+
repo: context.repo.repo,
620+
per_page: 2
621+
});
622+
623+
console.log(`Found ${releases.length} recent release(s)`);
624+
625+
// Find the previous release (skip the current one if it exists)
626+
let previousTag = null;
627+
628+
if (releases.length === 0) {
629+
console.log('No previous releases found - this is the first release');
630+
} else if (releases.length === 1) {
631+
// Only one release exists
632+
if (releases[0].tag_name === currentTag) {
633+
console.log('Current release found, but no previous release exists');
634+
} else {
635+
previousTag = releases[0].tag_name;
636+
console.log(`Previous release tag: ${previousTag}`);
637+
}
638+
} else {
639+
// Two or more releases exist
640+
if (releases[0].tag_name === currentTag) {
641+
// Current release is the most recent, use the second one
642+
previousTag = releases[1].tag_name;
643+
console.log(`Current release found at position 0, using position 1: ${previousTag}`);
644+
} else {
645+
// Current release doesn't exist yet or is not the most recent
646+
previousTag = releases[0].tag_name;
647+
console.log(`Using most recent release: ${previousTag}`);
648+
}
649+
}
619650
620-
- name: ⏳ Wait for Release Drafter to Complete
621-
run: |
622-
echo "⏳ Waiting for release-drafter to fully create the draft release..."
623-
sleep 10
624-
echo "✅ Proceeding with release creation"
651+
if (previousTag !== null && previousTag !== undefined) {
652+
console.log(`Will compare ${previousTag}...${currentTag}`);
653+
}
654+
655+
// Generate release notes
656+
// Build the request parameters conditionally
657+
const releaseNotesParams = {
658+
owner: context.repo.owner,
659+
repo: context.repo.repo,
660+
tag_name: currentTag,
661+
};
662+
663+
// Only include previous_tag_name if it exists
664+
if (previousTag !== null && previousTag !== undefined) {
665+
releaseNotesParams.previous_tag_name = previousTag;
666+
}
667+
668+
const { data } = await github.rest.repos.generateReleaseNotes(releaseNotesParams);
669+
670+
// Only save to file if we have actual content
671+
const releaseNotesBody = data.body || '';
672+
if (releaseNotesBody.trim().length > 0) {
673+
const fs = require('fs');
674+
fs.writeFileSync('release-notes.md', releaseNotesBody);
675+
console.log('✅ Generated release notes successfully');
676+
console.log(`Release notes length: ${releaseNotesBody.length} characters`);
677+
} else {
678+
console.log('⚠️ Generated release notes are empty, skipping file creation');
679+
}
680+
681+
return releaseNotesBody;
682+
} catch (error) {
683+
console.log('⚠️ Could not generate release notes:', error.message);
684+
// Return empty string if generation fails (e.g., for first release)
685+
return '';
686+
}
625687
626688
- name: 📝 Extract README Content for Release
627689
id: readme_extract
@@ -696,16 +758,26 @@ jobs:
696758
{ print }
697759
')
698760
699-
# Get changelog from Release Drafter
700-
CHANGELOG="${{ steps.changelog.outputs.body }}"
761+
# Read the generated release notes if they exist
762+
CHANGELOG=""
763+
if [ -f "release-notes.md" ]; then
764+
CHANGELOG=$(cat release-notes.md)
765+
echo "✅ Found generated release notes"
766+
else
767+
echo "⚠️ No release notes file found, skipping changelog"
768+
fi
701769
702-
# Combine for release description
770+
# Combine for release description with changelog before Quickstart
703771
echo "RELEASE_BODY<<EOF" >> $GITHUB_ENV
704772
echo "$INTRO" >> $GITHUB_ENV
705773
echo "" >> $GITHUB_ENV
706-
echo "## 🔀 What's Changed" >> $GITHUB_ENV
707-
echo "$CHANGELOG" >> $GITHUB_ENV
708-
echo "" >> $GITHUB_ENV
774+
775+
# Insert changelog here (before Quickstart)
776+
if [ -n "$CHANGELOG" ]; then
777+
echo "$CHANGELOG" >> $GITHUB_ENV
778+
echo "" >> $GITHUB_ENV
779+
fi
780+
709781
echo "$QUICKSTART" >> $GITHUB_ENV
710782
echo "" >> $GITHUB_ENV
711783
echo "$LICENSE" >> $GITHUB_ENV

0 commit comments

Comments
 (0)