This system automatically analyzes commits pushed to the main branch and performs appropriate version bumps with automated releases.
The automated version bump workflow triggers when:
main
branchThe system analyzes commit messages and file changes to determine the appropriate version bump:
BREAKING CHANGE:
, breaking:
, major:
feat:
, feature:
, add:
, new:
fix:
, bug:
, patch:
, chore:
, docs:
When triggered, the system:
lib/jekyll-theme-zer0/version.rb
, package.json
)To ensure proper automatic version bumping, use conventional commit messages:
# New features (MINOR bump)
git commit -m "feat: add responsive navigation menu"
git commit -m "feature: implement user authentication"
# Bug fixes (PATCH bump)
git commit -m "fix: resolve mobile layout issue"
git commit -m "bug: correct typo in footer"
# Breaking changes (MAJOR bump)
git commit -m "feat: redesign theme structure
BREAKING CHANGE: This updates the layout structure and requires manual migration"
# Maintenance (PATCH bump)
git commit -m "chore: update dependencies"
git commit -m "docs: improve installation instructions"
If you need to manually trigger a version bump or override the automation:
# Manual version bump (bypasses automation)
./scripts/gem-publish.sh [patch|minor|major]
# Preview what automation would do
./scripts/analyze-commits.sh HEAD~5..HEAD
# Test the system
./scripts/test-auto-version.sh
The automation is configured in .github/workflows/auto-version-bump.yml
:
Key scripts and their purposes:
scripts/analyze-commits.sh
: Analyzes commit history for version bump determinationscripts/gem-publish.sh
: Enhanced publication script with automation supportscripts/test-auto-version.sh
: Comprehensive test suite for the automation systemTo skip automated version bumping on specific commits:
# Include [skip-release] in commit message
git commit -m "docs: update README [skip-release]"
# Or push to a different branch first
git push origin feature-branch
# Create PR instead of direct push to main
The automation system provides:
Test the automation system locally:
# Run full test suite
./scripts/test-auto-version.sh
# Test commit analysis only
./scripts/analyze-commits.sh HEAD~3..HEAD
# Test publication script with automation
./scripts/gem-publish.sh patch --dry-run --automated-release
# If automation fails, recover manually:
git tag -d v[version] # Remove failed tag
./scripts/gem-publish.sh [type] --skip-publish # Test locally
./scripts/gem-publish.sh [type] # Full release
--dry-run
options to preview changesThis automated system follows semantic versioning and conventional commit standards to provide reliable, hands-off release management while maintaining full manual control when needed.