fix(release): restore automated release workflow for v6 (#1139)

* fix(release): update workflow to sync package-lock.json

- Call 'npm version' directly with --no-git-tag-version flag to ensure
  both package.json and package-lock.json are updated together
- Add 'alpha' option (default) for alpha version bumps
- Add 'beta' option to transition to/bump beta series
- Temporarily disable web bundles (tools/cli/bundlers/ is missing)

The workflow was previously calling non-existent npm scripts
(version:patch/minor/major) that were removed in the v6 refactor.

Note: This change cannot be fully tested without triggering an actual
release. The web bundles functionality requires a separate fix.

Fixes #1104

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(release): simplify version bump logic

Modern npm (v11+) correctly handles --preid flag transitions:
- prerelease --preid=beta on alpha.X produces beta.0 (works!)
- prerelease --preid=alpha on alpha.X produces alpha.X+1 (works!)

CodeRabbit warning was based on outdated npm behavior.
Consolidate alpha|beta into single case for cleaner code.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Brian <bmadcode@gmail.com>
This commit is contained in:
Alex Verkhovsky 2025-12-14 16:34:04 -07:00 committed by GitHub
parent ebb20f675f
commit 9fe79882b2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -6,9 +6,11 @@ on:
version_bump: version_bump:
description: Version bump type description: Version bump type
required: true required: true
default: patch default: alpha
type: choice type: choice
options: options:
- alpha
- beta
- patch - patch
- minor - minor
- major - major
@ -49,7 +51,11 @@ jobs:
git config user.email "github-actions[bot]@users.noreply.github.com" git config user.email "github-actions[bot]@users.noreply.github.com"
- name: Bump version - name: Bump version
run: npm run version:${{ github.event.inputs.version_bump }} run: |
case "${{ github.event.inputs.version_bump }}" in
alpha|beta) npm version prerelease --no-git-tag-version --preid=${{ github.event.inputs.version_bump }} ;;
*) npm version ${{ github.event.inputs.version_bump }} --no-git-tag-version ;;
esac
- name: Get new version and previous tag - name: Get new version and previous tag
id: version id: version
@ -61,34 +67,9 @@ jobs:
run: | run: |
sed -i 's/"version": ".*"/"version": "${{ steps.version.outputs.new_version }}"/' tools/installer/package.json sed -i 's/"version": ".*"/"version": "${{ steps.version.outputs.new_version }}"/' tools/installer/package.json
- name: Generate web bundles # TODO: Re-enable web bundles once tools/cli/bundlers/ is restored
run: npm run bundle # - name: Generate web bundles
# run: npm run bundle
- name: Package bundles for release
run: |
mkdir -p dist/release-bundles
# Copy web bundles
cp -r web-bundles dist/release-bundles/bmad-bundles-v${{ steps.version.outputs.new_version }}
# Verify bundles exist
if [ ! "$(ls -A dist/release-bundles/bmad-bundles-v${{ steps.version.outputs.new_version }})" ]; then
echo "❌ ERROR: No bundles found"
echo "This likely means 'npm run bundle' failed"
exit 1
fi
# Count and display bundles per module
for module in bmm bmb cis bmgd; do
if [ -d "dist/release-bundles/bmad-bundles-v${{ steps.version.outputs.new_version }}/$module/agents" ]; then
COUNT=$(find dist/release-bundles/bmad-bundles-v${{ steps.version.outputs.new_version }}/$module/agents -name '*.xml' 2>/dev/null | wc -l)
echo "✅ $module: $COUNT agents"
fi
done
# Create archive
tar -czf dist/release-bundles/bmad-bundles-v${{ steps.version.outputs.new_version }}.tar.gz \
-C dist/release-bundles/bmad-bundles-v${{ steps.version.outputs.new_version }} .
- name: Commit version bump - name: Commit version bump
run: | run: |
@ -185,25 +166,15 @@ jobs:
npm publish --tag latest npm publish --tag latest
fi fi
- name: Create GitHub Release with Bundles - name: Create GitHub Release
uses: softprops/action-gh-release@v2 uses: softprops/action-gh-release@v2
with: with:
tag_name: v${{ steps.version.outputs.new_version }} tag_name: v${{ steps.version.outputs.new_version }}
name: "BMad Method v${{ steps.version.outputs.new_version }}" name: "BMad Method v${{ steps.version.outputs.new_version }}"
body: | body: |
${{ steps.release_notes.outputs.RELEASE_NOTES }} ${{ steps.release_notes.outputs.RELEASE_NOTES }}
## 📦 Web Bundles
Download XML bundles for use in AI platforms (Claude Projects, ChatGPT, Gemini):
- `bmad-bundles-v${{ steps.version.outputs.new_version }}.tar.gz` - All modules (BMM, BMB, CIS, BMGD)
**Browse online** (bleeding edge): https://bmad-code-org.github.io/bmad-bundles/
draft: false draft: false
prerelease: ${{ contains(steps.version.outputs.new_version, 'alpha') || contains(steps.version.outputs.new_version, 'beta') }} prerelease: ${{ contains(steps.version.outputs.new_version, 'alpha') || contains(steps.version.outputs.new_version, 'beta') }}
files: |
dist/release-bundles/*.tar.gz
- name: Summary - name: Summary
run: | run: |
@ -212,7 +183,6 @@ jobs:
echo "### 📦 Distribution" >> $GITHUB_STEP_SUMMARY echo "### 📦 Distribution" >> $GITHUB_STEP_SUMMARY
echo "- **NPM**: Published with @latest tag" >> $GITHUB_STEP_SUMMARY echo "- **NPM**: Published with @latest tag" >> $GITHUB_STEP_SUMMARY
echo "- **GitHub Release**: https://github.com/bmad-code-org/BMAD-METHOD/releases/tag/v${{ steps.version.outputs.new_version }}" >> $GITHUB_STEP_SUMMARY echo "- **GitHub Release**: https://github.com/bmad-code-org/BMAD-METHOD/releases/tag/v${{ steps.version.outputs.new_version }}" >> $GITHUB_STEP_SUMMARY
echo "- **Web Bundles**: Attached to GitHub Release (4 archives)" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY
echo "### ✅ Installation" >> $GITHUB_STEP_SUMMARY echo "### ✅ Installation" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY