johnnoone / gradle-versioneer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

About


Languages

Language:Groovy 100.0%