-
Notifications
You must be signed in to change notification settings - Fork 0
Release Process
forge18 edited this page Dec 7, 2025
·
2 revisions
How to create a new release of LPM.
- All tests pass (
cargo test) - No clippy warnings (
cargo clippy) - Code is formatted (
cargo fmt) - Documentation is updated
- CHANGELOG is updated
- Version is bumped in
Cargo.toml
Update version in Cargo.toml:
[package]
version = "0.2.0" # Update thisFollow SemVer:
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes (backward compatible)
# Edit Cargo.toml
vim Cargo.toml
# Commit
git add Cargo.toml
git commit -m "Bump version to 0.2.0"git tag -a v0.2.0 -m "Release v0.2.0"
git push origin v0.2.0The release workflow (.github/workflows/release.yml) automatically:
- Builds binaries for all platforms
- Creates GitHub release
- Uploads binaries as release assets
If GitHub Actions fails, build manually:
# Build all installers
./scripts/build-installer.sh all
# Files will be in releases/v{VERSION}/
# Commit and push the releases/ directory
git add releases/
git commit -m "Add release files for v{VERSION}"
git push
# Create release on GitHub (via tag or workflow_dispatch)Each release should include:
-
macOS:
lpm-macos-aarch64.pkg,lpm-macos-x86_64.pkg -
Linux:
lpm-linux-x86_64.tar.gz,lpm-linux-aarch64.tar.gz -
Windows:
lpm-windows-x86_64.zip
All follow naming: lpm-{platform}-{arch}.{ext}
Write release notes including:
- New features
- Bug fixes
- Breaking changes
- Migration guide (if needed)
- Contributors
Example:
## v0.2.0
### Features
- Added `lpm audit` command for security scanning
- Support for dev dependencies
- Workspace/monorepo support
### Bug Fixes
- Fixed PATH detection on macOS
- Resolved OpenSSL cross-compilation issues
### Breaking Changes
- None
### Contributors
- @user1
- @user2- Update README if needed
- Update wiki if needed
- Update any version-specific docs
- Update project status
- Post to relevant communities
- Update package managers (if applicable)
- Watch for issues
- Monitor download stats
- Check for bug reports
For critical bugs:
- Create hotfix branch from latest release
- Fix the bug
- Bump patch version
- Create hotfix release
- Merge back to main
- Major releases: As needed (breaking changes)
- Minor releases: Monthly or as features accumulate
- Patch releases: As bugs are fixed
Plugins (lpm-watch, lpm-bundle) are released separately from the main LPM binary.
-
Update plugin version in
crates/lpm-<plugin>/Cargo.toml -
Create release tag:
# For a specific plugin git tag -a lpm-watch/v0.1.0 -m "Release lpm-watch v0.1.0" git push origin lpm-watch/v0.1.0 # Or for all plugins git tag -a plugins/v0.1.0 -m "Release all plugins v0.1.0" git push origin plugins/v0.1.0
-
GitHub Actions automatically:
- Builds binaries for all platforms (Linux x86_64/aarch64, macOS x86_64/aarch64, Windows x86_64)
- Creates GitHub releases for each plugin
- Uploads binaries as release assets
Each plugin release includes:
-
macOS:
lpm-<plugin>-macos-x86_64.tar.gz,lpm-<plugin>-macos-aarch64.tar.gz -
Linux:
lpm-<plugin>-linux-x86_64.tar.gz,lpm-<plugin>-linux-aarch64.tar.gz -
Windows:
lpm-<plugin>-windows-x86_64.zip
The plugin release workflow (.github/workflows/plugins-release.yml) supports:
-
Tag-based releases: Push tags like
lpm-watch/v0.1.0orplugins/v0.1.0 -
Manual releases: Use GitHub Actions UI with
workflow_dispatch
The release process is automated via GitHub Actions:
-
Trigger: Push tag
v* - Build: All platforms
- Release: Automatic GitHub release creation
-
Trigger: Push tag
lpm-<plugin>/v*orplugins/v* - Build: All platforms for each plugin
- Release: Automatic GitHub releases per plugin
Manual intervention only needed for:
- Writing release notes
- Handling build failures
- Special release requirements