From 7ee336c51cda13e838c0636403aa0bee66dde3c3 Mon Sep 17 00:00:00 2001 From: David Gwilliam Date: Tue, 31 Mar 2026 23:18:18 -0700 Subject: [PATCH] fix: resolve release workflow version bump issues - Fixed bump-version.js to properly handle --yes flag in CI environments - Added check to skip commit if no changes to package.json or CHANGELOG.md - Ensured script exits cleanly after version bump with --yes flag --- .gitea/workflows/release.yml | 8 +++-- scripts/bump-version.js | 66 +++++++++++++++++++++--------------- 2 files changed, 44 insertions(+), 30 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index b64aaa4..b33ce9a 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -80,8 +80,12 @@ jobs: - name: Commit version bump run: | git add package.json CHANGELOG.md - git commit -m "chore: bump version to v${{ steps.version.outputs.new_version }}" - git push origin main + if git diff --cached --quiet; then + echo "No changes to commit (version may already be at target version)" + else + git commit -m "chore: bump version to v${{ steps.version.outputs.new_version }}" + git push origin main + fi - name: Create git tag for release run: | diff --git a/scripts/bump-version.js b/scripts/bump-version.js index 989a4b7..6fc2f65 100755 --- a/scripts/bump-version.js +++ b/scripts/bump-version.js @@ -175,37 +175,47 @@ function main() { console.log(`New version: ${currentVersion} → ${newVersion}`); } - // Confirm with user - const readline = require('readline'); - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout - }); + // Confirm with user (or skip if --yes flag is set) + if (skipConfirm) { + // Update package.json + updatePackageJson(newVersion); - rl.question(`\nApply version ${newVersion}? (y/N) `, (answer) => { - if (answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes') { - // Update package.json - updatePackageJson(newVersion); - - // Update changelog - if (bumpType !== 'custom') { - const commits = getCommitsSinceLastTag(); - updateChangelog(newVersion, commits, bumpType); - } - - console.log(`\n✅ Version bumped to ${newVersion}`); - console.log(`\nNext steps:`); - console.log(` 1. Review changes: git diff`); - console.log(` 2. Commit changes: git commit -am "chore: bump version to v${newVersion}"`); - console.log(` 3. Create tag: git tag -a v${newVersion} -m "Release v${newVersion}"`); - console.log(` 4. Push changes: git push origin main`); - console.log(` 5. Push tag: git push origin v${newVersion}`); - } else { - console.log('❌ Version bump cancelled'); + // Update changelog + if (bumpType !== 'custom') { + const commits = getCommitsSinceLastTag(); + updateChangelog(newVersion, commits, bumpType); } - rl.close(); - }); + console.log(`\n✅ Version bumped to ${newVersion}`); + process.exit(0); + } else { + const readline = require('readline'); + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout + }); + + rl.question(`\nApply version ${newVersion}? (y/N) `, (answer) => { + if (answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes') { + // Update package.json + updatePackageJson(newVersion); + + // Update changelog + if (bumpType !== 'custom') { + const commits = getCommitsSinceLastTag(); + updateChangelog(newVersion, commits, bumpType); + } + + console.log(`\n✅ Version bumped to ${newVersion}`); + process.exit(0); + } else { + console.log('❌ Version bump cancelled'); + process.exit(1); + } + + rl.close(); + }); + } } // Run main function