Automate Your Versioning Workflow
Versify is a simple, yet powerful tool for Go projects that automates semantic versioning based on your commit messages. Spend less time tagging and more time coding.
Get StartedWhy Versify?
Conventional Commits
Leverages the Conventional Commits specification to automatically determine version bumps.
Git-Powered
Works seamlessly with your existing Git workflow. No extra configuration needed.
Simple & Fast
A single binary that analyzes your commit history and suggests the next version in seconds.
Installation
Download the pre-compiled binary for your OS from the latest release page or use the commands below.
Linux (amd64)
Linux (arm64)
macOS (amd64)
Windows (amd64, PowerShell)
Usage
Once installed, navigate to your Git repository and run the command with the desired flags. The tool outputs the final version to stdout and logs its progress to stderr.
versify [flags]
Command-Line Flags
| Flag | Description | Default |
|---|---|---|
--prefix |
The prefix for the version tag (e.g., `v`, `k8s`). | `v` |
--baseline |
A specific version to use as the starting point, instead of the latest Git tag. | (empty) |
--add-suffix |
Always add a suffix to the new version (e.g., for pre-releases or build metadata). | `false` |
--suffix-format |
The format for the suffix when --add-suffix is used. Options: `short-hash`, `datetime`. |
`short-hash` |
Example (stderr)
$ versify
--- SemVer Version Bumper (Conventional Commits) ---
Last released version: v0.1.2
Analyzing commits since v0.1.2...
Determined BUMP: MINOR (Found 'feat:' commit)
Example (stdout)
v0.2.0
CI/CD Integration
Automate your release process by using Versify in your pipeline. Choose your preferred method below.
Usage as a GitHub Action
The easiest way to integrate Versify is by using the official GitHub Action. This is the recommended approach for most users.
name: Create Release
on:
push:
branches:
- main
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get Next Version
id: get_version
uses: OpScaleHub/versify@v1
- name: Create Git Tag and GitHub Release
if: steps.get_version.outputs.should_bump == 'true'
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ steps.get_version.outputs.new_version }}
name: Release ${{ steps.get_version.outputs.new_version }}
body: "See CHANGELOG for details."
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Manual CI/CD Integration
If you prefer not to use the GitHub Action or are using a different CI/CD platform, you can download and run the binary directly.
name: Create Release
on:
push:
branches:
- main
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Download and Install Versify
run: |
curl -L "https://github.com/OpScaleHub/versify/releases/latest/download/versify-linux-amd64" -o versify
chmod +x versify
sudo mv versify /usr/local/bin/
- name: Get Next Version
id: get_version
run: |
VERSION=$(versify)
if [[ -z "$VERSION" ]]; then
echo "No version change detected."
echo "version=" >> $GITHUB_OUTPUT
else
echo "New version found: $VERSION"
echo "version=$VERSION" >> $GITHUB_OUTPUT
fi
- name: Create Git Tag and GitHub Release
if: steps.get_version.outputs.version
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ steps.get_version.outputs.version }}
name: Release ${{ steps.get_version.outputs.version }}
body: "See CHANGELOG for details."
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}