Skip to content

Build Versioning tool that works specifically with git and teamcity

Notifications You must be signed in to change notification settings

funfair-tech/funfair-build-version

Repository files navigation

Build Version

Simpler/faster git specific version builder

Build Status

Branch Status
main Build: Pre-Release
release Build: Release

Release Notes/Changelog

View changelog

Installation

Install as a global tool

dotnet tool install FunFair.BuildVersion

To update to latest released version

dotnet tool update FunFair.BuildVersion

Install as a local tool

dotnet new tool-manifest
dotnet tool install FunFair.BuildVersion --local

To update to latest released version

dotnet tool update FunFair.BuildVersion --local

Supported Branch formats

Supports release and hotfix branches in the following formats

  • release/version
  • release/package/version
  • release-platform/package/version
  • release-platform/version
  • hotfix/version
  • hotfix/package/version
  • hotfix-platform/package/version
  • hotfix-platform/version

version can be in the following formats:

  • 1
  • 1.2
  • 1.2.3

Output Release Formats

  • Release branches: 1.2.3.4;
    • where 4 is a build number passed to the tool
  • Pre-Release branches 1.2.3.4-tag
    • where 4 is a build number passed to the tool
    • where tag is generated from the branch name (or matching branch for a pull request if it can be located)

Tag restrictions

  • Maximum length before truncating after any processing: 15 characters
  • Non alphanumeric characters are replaced with -
  • Multiple - consecutive characters are shrunk to a single one
  • removes the top folder of the branch when using branches like feature/name so that tag is processed on name only
  • For Pull requests, if a branch cannot be located by its SHA hash then the tag will become pr-id where id is the id of the pull request
  • if no suitable tag can be generated the tag prerelease will be used.

Command line arguments

  -x, --WarningsAsErrors    (Default: false) Whether warnings should be errors
  -b, --BuildNumber         (Default: -1) The build number (use BUILD_NUMBER envrionment variable)
  -s, --ReleaseSuffix       (Default: ) The release suffix
  -p, --Package             (Default: ) The package being released
  --help                    Display this help screen.
  --version                 Display version information.

Running without arguments

This will attempt to retrieve the build number (counter) from an environment variable:

  • BUILD_NUMBER (Set by CI tools like TeamCity)
dotnet buildversion

Running with release branches in format /release/version

dotnet buildversion --BuildNumber 272

or

dotnet buildversion --b272

Running with release branches in format /release-product/version

dotnet buildversion --BuildNumber 272 --ReleaseSuffix "product"

or

dotnet buildversion -b272  -s"product"

Running with release branches in format /release-product/package/version

dotnet buildversion --BuildNumber 272 --ReleaseSuffix "product" --Package "package"

or

dotnet buildversion -b272  -s"product" -p"package"

Running with release branches in format /release/package/version

dotnet buildversion --BuildNumber 272 --Package "package"

or

dotnet buildversion -b272 -p"package"

Integrations

TeamCity

  • Picks up the BUILD_NUMBER environment variable for the build number
  • If TEAMCITY_VERSION environment variable is defined then the system.build.version and buildNumber variables will be set to match the build version that the tool produces

GitHub Actions

  • If GITHUB_ENV environment variable is defined then the BUILD_VERSION environment variable will be set to match the build version that the tool produces.