name: Manual Release on: workflow_dispatch: inputs: version_bump: description: Version bump type required: true default: patch type: choice options: - patch - minor - major permissions: contents: write packages: write jobs: release: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.GITHUB_TOKEN }} - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: "20" cache: npm registry-url: https://registry.npmjs.org - name: Install dependencies run: npm ci - name: Run tests and validation run: | npm run validate npm run format:check npm run lint - name: Configure Git run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" - name: Bump version run: npm run version:${{ github.event.inputs.version_bump }} - name: Get new version id: version run: echo "new_version=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT - name: Update installer package.json run: | sed -i 's/"version": ".*"/"version": "${{ steps.version.outputs.new_version }}"/' tools/installer/package.json - name: Build project run: npm run build - name: Commit version bump run: | git add . git commit -m "release: bump to v${{ steps.version.outputs.new_version }}" - name: Create and push tag run: | git tag -a "v${{ steps.version.outputs.new_version }}" -m "Release v${{ steps.version.outputs.new_version }}" git push origin "v${{ steps.version.outputs.new_version }}" - name: Push changes to main run: git push origin HEAD:main - name: Publish to NPM with stable tag env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} run: npm publish --tag stable - name: Create GitHub Release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: v${{ steps.version.outputs.new_version }} release_name: Release v${{ steps.version.outputs.new_version }} draft: false prerelease: false - name: Summary run: | echo "🎉 Successfully released v${{ steps.version.outputs.new_version }}!" echo "📦 Published to NPM with @stable tag" echo "🏷️ Git tag: v${{ steps.version.outputs.new_version }}" echo "✅ Users running 'npx bmad-method@stable install' will now get version ${{ steps.version.outputs.new_version }}"