fix(ci): use commit-based changelog for dev release Discord notifications

- dev-release.sh: save release notes to .dev-release-info.json
- send-discord-release.cjs: read from generated file for dev releases
- add .dev-release-info.json to .gitignore
This commit is contained in:
kaitranntt
2025-12-21 01:14:49 -05:00
parent bf65de55cf
commit 1129ec6ef5
3 changed files with 51 additions and 3 deletions
+4 -1
View File
@@ -35,4 +35,7 @@ package-lock.json
.claude/active-plan
# Logs directory
logs/
logs/
# CI-generated files
.dev-release-info.json
+10
View File
@@ -106,6 +106,16 @@ gh release create "v${VERSION}" \
log_info "Created GitHub prerelease"
# Save release info for Discord notification
# This file is read by send-discord-release.cjs for dev releases
cat > .dev-release-info.json << EOF
{
"version": "${VERSION}",
"notes": $(echo "$NOTES" | jq -Rs .)
}
EOF
log_info "Saved release info for Discord notification"
# Output for GitHub Actions
echo "version=${VERSION}" >> "${GITHUB_OUTPUT:-/dev/null}"
echo "released=true" >> "${GITHUB_OUTPUT:-/dev/null}"
+37 -2
View File
@@ -34,7 +34,7 @@ try {
}
/**
* Extract latest release from CHANGELOG.md
* Extract latest release from CHANGELOG.md (for production releases)
*/
function extractLatestRelease() {
const changelogPath = 'CHANGELOG.md';
@@ -92,6 +92,40 @@ function extractLatestRelease() {
return { version, date, sections };
}
/**
* Extract dev release info from .dev-release-info.json (for dev releases)
* Falls back to CHANGELOG.md if file not found
*/
function extractDevRelease() {
const devInfoPath = '.dev-release-info.json';
if (!fs.existsSync(devInfoPath)) {
console.log('[!] .dev-release-info.json not found, falling back to CHANGELOG.md');
return extractLatestRelease();
}
try {
const content = fs.readFileSync(devInfoPath, 'utf8');
const info = JSON.parse(content);
// Parse commit messages into a simple Changes section
const changes = info.notes
.split('\n')
.filter((line) => line.trim().startsWith('-'))
.map((line) => line.trim().substring(1).trim())
.filter((item) => item);
return {
version: info.version,
date: new Date().toISOString().split('T')[0],
sections: changes.length > 0 ? { Changes: changes } : {},
};
} catch (error) {
console.error('[!] Error reading .dev-release-info.json:', error.message);
return extractLatestRelease();
}
}
/**
* Create Discord embed
*/
@@ -203,7 +237,8 @@ function sendToDiscord(embed) {
// Main
try {
const release = extractLatestRelease();
const isDev = releaseType === 'dev';
const release = isDev ? extractDevRelease() : extractLatestRelease();
console.log(`[i] Preparing ${releaseType} notification for v${release.version}`);
const embed = createEmbed(release);