{"id":22408985,"url":"https://github.com/binbandit/bumpit","last_synced_at":"2026-02-08T00:02:48.614Z","repository":{"id":264713933,"uuid":"893738094","full_name":"binbandit/bumpit","owner":"binbandit","description":"🚀 Powerful, flexible, and language-agnostic semantic versioning automation for your projects","archived":false,"fork":false,"pushed_at":"2024-11-25T22:54:51.000Z","size":28,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-15T01:41:56.306Z","etag":null,"topics":["actions","golang","golang-library","management","pipeline","powerful","release","release-automation","release-management","release-system","semantic","semantic-release","shell","summer-of-code","version","version-control","version-management"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/binbandit.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-25T05:51:46.000Z","updated_at":"2025-05-14T04:11:37.000Z","dependencies_parsed_at":"2024-11-26T00:15:38.293Z","dependency_job_id":null,"html_url":"https://github.com/binbandit/bumpit","commit_stats":null,"previous_names":["crazywolf132/bumpit","binbandit/bumpit"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/binbandit/bumpit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binbandit%2Fbumpit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binbandit%2Fbumpit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binbandit%2Fbumpit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binbandit%2Fbumpit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/binbandit","download_url":"https://codeload.github.com/binbandit/bumpit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binbandit%2Fbumpit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279107215,"owners_count":26105223,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-15T02:00:07.814Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actions","golang","golang-library","management","pipeline","powerful","release","release-automation","release-management","release-system","semantic","semantic-release","shell","summer-of-code","version","version-control","version-management"],"created_at":"2024-12-05T12:06:11.374Z","updated_at":"2025-10-15T19:31:22.980Z","avatar_url":"https://github.com/binbandit.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bumpit\n\n\u003e 🚀 Powerful, flexible, and language-agnostic semantic versioning automation for your projects\n\n[![GitHub release (latest by date)](https://img.shields.io/github/v/release/crazywolf132/bumpit)](https://github.com/crazywolf132/bumpit/releases)\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/crazywolf132/bumpit/ci.yml?branch=main)](https://github.com/crazywolf132/bumpit/actions)\n[![Go Report Card](https://goreportcard.com/badge/github.com/crazywolf132/bumpit)](https://goreportcard.com/report/github.com/crazywolf132/bumpit)\n[![codecov](https://codecov.io/gh/crazywolf132/bumpit/branch/main/graph/badge.svg)](https://codecov.io/gh/crazywolf132/bumpit)\n[![Go Reference](https://pkg.go.dev/badge/github.com/crazywolf132/bumpit.svg)](https://pkg.go.dev/github.com/crazywolf132/bumpit)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## The Problem\n\nManaging version numbers across projects can be tedious and error-prone:\n- Manual version bumping leads to mistakes\n- Different team members might bump versions inconsistently\n- Conventional commits aren't being leveraged effectively\n- Existing tools are often language-specific or too complex\n- Custom scripts are hard to maintain and lack features\n\n## The Solution\n\nBumpit is a lightweight, powerful tool that automates semantic versioning based on your git commits. It:\n- 🎯 Automatically determines the next version based on conventional commits\n- 🔧 Works with any programming language or project type\n- ⚡️ Provides both a CLI tool and a GitHub Action\n- 🎨 Offers flexible version formatting options\n- 🔌 Executes custom commands with the new version\n- 🤝 Integrates seamlessly with your existing workflow\n\n### Why Bumpit?\n\n#### vs semantic-release\n- Lighter weight and faster\n- Language-agnostic by design\n- More flexible version formatting\n- Simpler configuration\n- Works without Node.js\n- Custom command execution\n\n#### vs custom scripts\n- Battle-tested and maintained\n- Proper conventional commit parsing\n- Rich configuration options\n- GitHub Action support\n- No reinventing the wheel\n- Zero dependencies in your project\n\n## Quick Start\n\n### CLI Installation\n```bash\ngo install github.com/crazywolf132/bumpit@latest\n```\n\n### Basic Usage\n\n1. **CLI**: Run bumpit with a command template\n```bash\n# Create a git tag\nbumpit \"git tag ${version}\"\n\n# Update package.json\nbumpit \"npm version ${version}\"\n\n# Update any version file\nbumpit \"sed -i '' 's/version = .*/version = \\\"${version}\\\"/' version.txt\"\n```\n\n2. **GitHub Action**: Add to your workflow\n```yaml\n- name: Update version\n  uses: crazywolf132/bumpit@v1\n  with:\n    github_token: ${{ secrets.GITHUB_TOKEN }}\n```\n\n## Configuration Deep Dive\n\n### Version Format Control\n\nBumpit gives you complete control over your version format through the `.bumpit.yaml` configuration:\n\n```yaml\n# Version Formatting\nversion_prefix: \"v\"               # Prefix for version (e.g., v1.0.0)\nversion_format: \"{major}.{minor}.{patch}\"  # Version number format\npre_release: \"beta.1\"            # Pre-release suffix (e.g., v1.0.0-beta.1)\nbuild_metadata: \"20230815\"       # Build metadata (e.g., v1.0.0+20230815)\n\n# Commit Analysis\ncommit_types:\n  major:                         # Triggers major version bump (1.0.0 -\u003e 2.0.0)\n    - \"BREAKING CHANGE\"\n    - \"major\"\n  minor:                         # Triggers minor version bump (1.0.0 -\u003e 1.1.0)\n    - \"feat\"\n  patch:                         # Triggers patch version bump (1.0.0 -\u003e 1.0.1)\n    - \"fix\"\n    - \"chore\"\n    - \"docs\"\n    - \"style\"\n    - \"refactor\"\n    - \"perf\"\n    - \"test\"\n\n# Behavior\ndefault_command: \"git tag ${version}\"  # Default command if none specified\ngit:\n  tag_pattern: \"v*\"              # Pattern for finding version tags\n  auto_push: false              # Auto-push new tags\n\n# Output\noutput:\n  debug: false                  # Enable debug logging\n  color: true                   # Colorize output\n```\n\n### Version Format Examples\n\n```yaml\n# Standard semver: v1.2.3\nversion_prefix: \"v\"\nversion_format: \"{major}.{minor}.{patch}\"\n\n# No prefix: 1.2.3\nversion_prefix: \"\"\nversion_format: \"{major}.{minor}.{patch}\"\n\n# Custom format: 0.1.2\nversion_prefix: \"\"\nversion_format: \"0.{major}.{minor}\"\n\n# With pre-release: v1.2.3-alpha.1\nversion_prefix: \"v\"\nversion_format: \"{major}.{minor}.{patch}\"\npre_release: \"alpha.1\"\n\n# With build metadata: v1.2.3+20230815\nversion_prefix: \"v\"\nversion_format: \"{major}.{minor}.{patch}\"\nbuild_metadata: \"20230815\"\n\n# Combined: v1.2.3-beta.1+20230815\nversion_prefix: \"v\"\nversion_format: \"{major}.{minor}.{patch}\"\npre_release: \"beta.1\"\nbuild_metadata: \"20230815\"\n```\n\n## Advanced Use Cases\n\n### Monorepo Support\nBumpit has built-in support for monorepo versioning. See [examples/config-examples/monorepo.yaml](examples/config-examples/monorepo.yaml) and [examples/workflows/monorepo.yml](examples/workflows/monorepo.yml) for examples.\n\n### Pre-releases\nCreate beta, alpha, or RC versions with pre-release identifiers. See [examples/workflows/pre-release.yml](examples/workflows/pre-release.yml) for an example.\n\n### Environment Variables\nBumpit supports environment variables in configuration values:\n- `${GITHUB_RUN_NUMBER}` - Use in pre-release for build numbers\n- `${GITHUB_SHA}` - Use in build metadata for commit hashes\n- `${PKG_NAME}` - Use in monorepo setups for package names\n\n### Custom Version Formats\nCreate your own version format to match your needs:\n```yaml\n# Standard: v1.2.3\nversion_format: \"{major}.{minor}.{patch}\"\n\n# Calendar versioning: v2024.01.1\nversion_format: \"{now:%Y}.{now:%m}.{patch}\"\n\n# Custom prefix: release-1.2.3\nversion_prefix: \"release-\"\nversion_format: \"{major}.{minor}.{patch}\"\n```\n\n### Integration Examples\n- **Node.js**: `bumpit \"npm version ${version}\"`\n- **Python**: `bumpit \"sed -i '' 's/version = .*/version = \\\"${version}\\\"/' setup.py\"`\n- **Gradle**: `bumpit \"./gradlew setVersion -Pversion=${version}\"`\n- **Maven**: `bumpit \"mvn versions:set -DnewVersion=${version}\"`\n- **Cargo**: `bumpit \"cargo set-version ${version}\"`\n\n## GitHub Action Reference\n\n### Inputs\n\n| Input | Description | Required | Default |\n|-------|-------------|----------|---------|\n| `version_prefix` | Prefix for version tags (e.g., \"v\") | No | \"v\" |\n| `version_format` | Format using {major}, {minor}, {patch} | No | \"{major}.{minor}.{patch}\" |\n| `pre_release` | Pre-release identifier (e.g., \"alpha.1\") | No | \"\" |\n| `build_metadata` | Build metadata to append | No | \"\" |\n| `config_file` | Path to custom config file | No | \"\" |\n| `auto_push` | Whether to push tags automatically | No | \"true\" |\n| `create_release` | Whether to create GitHub release | No | \"true\" |\n| `github_token` | GitHub token for releases | No | ${{ github.token }} |\n\n### Outputs\n\n| Output | Description |\n|--------|-------------|\n| `version` | The new version number |\n| `tag` | The new version tag |\n| `previous_version` | The previous version number |\n| `is_initial_version` | Whether this is the first version |\n\n### Advanced Usage\n\n```yaml\nname: Release\non:\n  push:\n    branches: [main]\n\njobs:\n  release:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n        with:\n          fetch-depth: 0\n\n      - name: Update version\n        id: version\n        uses: crazywolf132/bumpit@v1\n        with:\n          version_prefix: ''\n          version_format: '0.{major}.{minor}'\n          pre_release: 'beta.1'\n          build_metadata: ${{ github.sha }}\n          auto_push: true\n          create_release: true\n          github_token: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Use version information\n        run: |\n          echo \"New version: ${{ steps.version.outputs.version }}\"\n          echo \"New tag: ${{ steps.version.outputs.tag }}\"\n          echo \"Previous: ${{ steps.version.outputs.previous_version }}\"\n```\n\n## How It Works\n\n1. **Version Detection**: Finds the latest version tag in your git repository\n2. **Commit Analysis**: Reads all commits since that tag\n3. **Semantic Analysis**: Analyzes commits using conventional commit format:\n   - `BREAKING CHANGE:` or `major:` → Major version bump\n   - `feat:` → Minor version bump\n   - `fix:`, `chore:`, `docs:`, etc. → Patch version bump\n4. **Version Calculation**: Determines the next version using semantic versioning rules\n5. **Format Application**: Applies your custom version format\n6. **Command Execution**: Runs your specified command with the new version\n\nIf no previous version tag exists, it starts from `v0.0.0`.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbinbandit%2Fbumpit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbinbandit%2Fbumpit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbinbandit%2Fbumpit/lists"}