Release Process
Prerequisites
-
Commit access to the repository
-
RubyGems.org account with push permissions
-
familiarity with
gem-releasegem
Release Checklist
1. Prepare Release
# Ensure clean working directory
git status
# Pull latest changes
git pull origin main
# Run tests
bundle exec rspec
# Run linter
bundle exec rubocop2. Update Version
Edit lib/excavate/version.rb:
module Excavate
VERSION = "1.1.0" # Update version
end3. Update Changelog
Update CHANGELOG.md:
## 1.1.0 (2025-02-25)
### Added
- Support for RAR format
- New filter pattern syntax
### Fixed
- Error handling for corrupted archives
### Changed
- Improved extraction performanceUsing gem-release
The gem-release gem simplifies the process:
# Install gem-release
gem install gem-release
# Bump version and create tag
gem bump --version minor # or major, patch
# Push to RubyGems
gem releaseVersion Numbering
Excavate follows Semantic Versioning:
-
MAJOR: Breaking changes
-
MINOR: New features, backward compatible
-
PATCH: Bug fixes, backward compatible
Examples:
-
1.0.0→1.0.1: Bug fix -
1.0.1→1.1.0: New feature -
1.1.0→2.0.0: Breaking change
Pre-Release Versions
For testing before official release:
# Create pre-release version
# In version.rb: VERSION = "1.1.0.pre.1"
gem build excavate.gemspec
gem push excavate-1.1.0.pre.1.gemUsers can install pre-release with:
gem install excavate --preGitHub Release
After pushing to RubyGems:
-
Click "Draft a new release"
-
Select the tag
-
Add release notes from CHANGELOG
-
Publish release
Documentation Updates
After release:
-
Update documentation site (if needed)
-
Verify RubyGems page shows new version
-
Update README badges if needed
Rollback
If issues are found after release:
# Yank the gem (use carefully)
gem yank excavate -v 1.1.0
# Fix the issue
# ... make changes ...
# Release fixed version
gem bump --version patch
gem release