Trigger: GitHub release published + manual dispatch
Purpose: Main deployment pipeline triggered by publishing a GitHub release
Process:
- Test - Run all tests and quality checks
- Validate - Extract version, update files, validate with
dart pub publish --dry-run - Deploy - Deploy to all platforms simultaneously:
- 📦 pub.dev
- 🐧 GitHub Linux binaries
- 🍎 GitHub macOS binaries + Homebrew
- 🪟 GitHub Windows binaries + Chocolatey
- 🐳 Docker Hub
Key Feature: ⚡ Fails fast if version validation fails, saving time and resources
Usage: Create and publish a GitHub release - everything deploys automatically!
Trigger: Push, PR, workflow_call
Purpose: Run all tests and quality checks
Used by: Other workflows for validation before deployment
Trigger: Manual dispatch
Purpose: Test FVM installation across different platforms
deploy_docker.yml- Standalone Docker deploymentdeploy_homebrew.yml- Standalone Homebrew updatesdeploy_macos.yml- Standalone macOS deploymentdeploy_windows.yml- Standalone Windows deployment
-
Code ready on main branch
- All changes merged and tested
- No need to update versions manually
-
Create GitHub Release
- Go to GitHub Releases
- Click "Create a new release"
- Choose tag:
v4.0.0-beta.2(follows semver with 'v' prefix) - Write detailed release notes
- Click "Publish release"
-
Automatic Deployment
release.ymltriggers automatically- Monitor progress in Actions
- All platforms deployed simultaneously
For hotfixes or urgent releases, use individual platform workflows:
- Manual dispatch
deploy_homebrew.ymlfor Homebrew-only updates - Manual dispatch
deploy_docker.ymlfor Docker-only updates - Manual dispatch individual platform workflows as needed
Note: Requires manual version management in pubspec.yaml.
- Primary workflow: Version extracted from GitHub release tag
- Standalone workflows: Version must be manually updated in
pubspec.yaml - Format: Tags should follow semver with 'v' prefix:
v4.0.0-beta.2 - Validation:
dart pub publish --dry-runvalidates version before deployment
- Ensure release is published, not just created as draft
- Check that tag follows
v*pattern - Verify all required secrets are configured
- Check if GitHub release exists with matching tag
- Verify
GITHUB_TOKENhas release permissions - Ensure standalone binaries built successfully
- Check platform-specific tokens (Chocolatey, Homebrew, Docker)
- Verify runner OS matches deployment target
- Review build logs for specific error details