mirror of
https://github.com/tiennm99/ccs.git
synced 2026-07-16 20:17:45 +00:00
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:
+4
-1
@@ -35,4 +35,7 @@ package-lock.json
|
||||
.claude/active-plan
|
||||
|
||||
# Logs directory
|
||||
logs/
|
||||
logs/
|
||||
|
||||
# CI-generated files
|
||||
.dev-release-info.json
|
||||
@@ -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}"
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user