* refactor(ci): unify release workflows with reusable build workflow
Reorganizes CI/CD to ensure ALL release types (stable, dev, hotfix, manual)
get full binary builds automatically, addressing inconsistent binary availability.
Changes:
- Add _build-and-release.yml: Reusable workflow for building binaries (Linux/
Windows/macOS) and MCPB bundles, then uploading to GitHub releases
- Update semver-release.yml: Call reusable workflow after semantic-release
- Update publish-dev.yml: Create pre-release first, then call reusable workflow
to build and attach binaries
- Update hotfix-release.yml: Create draft release, then call reusable workflow
to build binaries and publish
- Update build-binary.yml: Remove release logic, keep for PR testing only
Benefits:
- Consistent binary builds across all release types
- Single source of truth for build logic (DRY)
- Eliminates manual binary build triggers for releases
- Maintains PR testing capability for binary-related changes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* fix(ci): correct build command in reusable workflow
The workflow was incorrectly trying to run a non-existent build.py script.
Fixed to use PyInstaller with ha-mcp.spec directly, matching the working
build-binary.yml workflow.
Also fixed the dependency installation to create venv and install
dependencies correctly for PyInstaller.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* fix(ci): only download binary artifacts, skip Docker build cache
The workflow was failing because it was downloading ALL artifacts including
Docker build cache artifacts that were timing out. Added pattern filter to
only download ha-mcp-* artifacts.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>