Skip to content

streetlightvision/versioneer

Repository files navigation

Gradle versioneer plugin

This plugin allow you to define the version of your projet from git references.

These flavors are SemVer, Maven version and RPM version.

Configuration:

versioneer {
  envs = [] // get branch name from these environment variables
  branchParser = { branch -> ['type', 'serie']} // custom parsing branch
  prefix = 'v' // release tag must be prefixed by this string
  strategy = 'minor' // default strategy when upgrading version is involved
  build = 1 // build number given by CI... mostly used by RPM Version
  flavor = 'semver' // which flavor must be exposed into project.version?
}

Branch naming

There are 3 types of branchs:

  • release branches, which are found by this regex release[/-](?<serie>.+)
  • feature branches, which are found by this regex feature[/-](?<serie>.+)
  • the others

Release branches

Release branches should be in the form:

release/MAJOR[.MINOR[.PATCH]]

And their tags should be in the form:

vMAJOR[.MINOR[.PATCH]]-PRERELEASE

This kind of branch naming is allowed but may result in clumsy versions:

release/MAJOR[.MINOR[.PATCH]]-PRERELEASE

Workflow examples

Implement features in future release 1.2.0:

action semantic version
created branch release/1.2 1.2.0-dev.1+HASH
after X feature merges 1.2.0-dev.1+HASH
after tagging v1.2.0-alpha.1 on HEAD 1.2.0-alpha.1
after X feature merges 1.2.0-alpha.1+post.X.HASH
after tagging v1.2.0-beta.1 on HEAD 1.2.0-beta.1
after X feature merges 1.2.0-beta.1+post.X.HASH
after tagging v1.2.0-rc.1 on HEAD 1.2.0-rc.1
after tagging v1.2.0 on HEAD 1.2.0

Parsing examples

with git history:

* e585849 - (HEAD -> release/0.x, tag: v0.0.1)
* 2d5214c -
* 07cc598 -

it will be parsed as:

versioneer.info.branch release/0.x
versioneer.info.type release
versioneer.info.serie 0.x
versioneer.info.closestTag 0.0.1
versioneer.info.distance 0
versioneer.info.hash e585849
versioneer.info.semver 0.0.1
versioneer.info.maven 0.0.1
versioneer.info.rpm 0.0.1-1

with git history:

* e754a0b - (HEAD -> release/0.x)
* e585849 - (tag: v0.0.1)
* 2d5214c -
* 07cc598 -

it will be parsed as:

versioneer.info.branch release/0.x
versioneer.info.type release
versioneer.info.serie 0.x
versioneer.info.closestTag 0.0.1
versioneer.info.distance 1
versioneer.info.hash e754a0b
versioneer.info.semver 0.0.1+post.1.e754a0b
versioneer.info.maven 0.1.0-ALPHA-0-SNAPSHOT
versioneer.info.rpm 0.0.1-1.post.1.e754a0b

Releases

No releases published

Packages

No packages published

Languages