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 Started

Why 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 }}