mirror of
https://github.com/tiennm99/ccs.git
synced 2026-09-02 18:18:43 +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
|
.claude/active-plan
|
||||||
|
|
||||||
# Logs directory
|
# 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"
|
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
|
# Output for GitHub Actions
|
||||||
echo "version=${VERSION}" >> "${GITHUB_OUTPUT:-/dev/null}"
|
echo "version=${VERSION}" >> "${GITHUB_OUTPUT:-/dev/null}"
|
||||||
echo "released=true" >> "${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() {
|
function extractLatestRelease() {
|
||||||
const changelogPath = 'CHANGELOG.md';
|
const changelogPath = 'CHANGELOG.md';
|
||||||
@@ -92,6 +92,40 @@ function extractLatestRelease() {
|
|||||||
return { version, date, sections };
|
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
|
* Create Discord embed
|
||||||
*/
|
*/
|
||||||
@@ -203,7 +237,8 @@ function sendToDiscord(embed) {
|
|||||||
|
|
||||||
// Main
|
// Main
|
||||||
try {
|
try {
|
||||||
const release = extractLatestRelease();
|
const isDev = releaseType === 'dev';
|
||||||
|
const release = isDev ? extractDevRelease() : extractLatestRelease();
|
||||||
console.log(`[i] Preparing ${releaseType} notification for v${release.version}`);
|
console.log(`[i] Preparing ${releaseType} notification for v${release.version}`);
|
||||||
|
|
||||||
const embed = createEmbed(release);
|
const embed = createEmbed(release);
|
||||||
|
|||||||
Reference in New Issue
Block a user