From afbceb28a3e7001665401a672ec826b2374977f4 Mon Sep 17 00:00:00 2001 From: Krzysiek Bielicki Date: Fri, 29 Mar 2019 17:16:32 +0100 Subject: [PATCH] adds option to create new rc version in incrementPrerelase incrementor * [issue #286] Create rc1 in case of no rc version in incrementPrerelase strategy * [issue #286] initialPreReleaseIfNotOnPrerelease to create rc version, old behavior when absent --- docs/configuration/version.md | 11 +++++++++- .../PredefinedVersionIncrementer.groovy | 5 +++++ .../PredefinedVersionIncrementerTest.groovy | 20 +++++++++++++++++-- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/docs/configuration/version.md b/docs/configuration/version.md index 180d4f26..0d573efd 100644 --- a/docs/configuration/version.md +++ b/docs/configuration/version.md @@ -195,7 +195,7 @@ number is incremented. There are other predefined rules: - *incrementMinorIfNotOnRelease* - increment patch number if on release branch. Increment minor otherwise - *incrementPrerelease* - increment pre-release suffix if possible - (-rc1 to -rc2). Increment patch otherwise + (-rc1 to -rc2). Add `initialPreReleaseIfNotOnPrerelease` to increment patch with prerelase version. Increment patch otherwise You can set one of predefined rules via `scmVersion.versionIncrementer` method: @@ -253,6 +253,15 @@ it's set to `release/.+`): versionIncrementer 'incrementMinorIfNotOnRelease', [releaseBranchPattern: 'release.*'] } +### incrementPrerelease + +This rule uses additional parameter `initialPreReleaseIfNotOnPrerelease` (by default +it's empty): + + scmVersion { + versionIncrementer 'incrementPrerelease', [initialPreReleaseIfNotOnPrerelease: 'rc1'] + } + ## Decorating Decorating phase happens only when version is read (and deserialized). diff --git a/src/main/groovy/pl/allegro/tech/build/axion/release/domain/PredefinedVersionIncrementer.groovy b/src/main/groovy/pl/allegro/tech/build/axion/release/domain/PredefinedVersionIncrementer.groovy index e028d4a9..8686adab 100644 --- a/src/main/groovy/pl/allegro/tech/build/axion/release/domain/PredefinedVersionIncrementer.groovy +++ b/src/main/groovy/pl/allegro/tech/build/axion/release/domain/PredefinedVersionIncrementer.groovy @@ -43,6 +43,11 @@ enum PredefinedVersionIncrementer { .build() } } + + if (config.initialPreReleaseIfNotOnPrerelease != null) { + return context.currentVersion.incrementPatchVersion(String.valueOf(config.initialPreReleaseIfNotOnPrerelease)) + } + return context.currentVersion.incrementPatchVersion() }), diff --git a/src/test/groovy/pl/allegro/tech/build/axion/release/domain/PredefinedVersionIncrementerTest.groovy b/src/test/groovy/pl/allegro/tech/build/axion/release/domain/PredefinedVersionIncrementerTest.groovy index a4f521d3..e4dbc21b 100644 --- a/src/test/groovy/pl/allegro/tech/build/axion/release/domain/PredefinedVersionIncrementerTest.groovy +++ b/src/test/groovy/pl/allegro/tech/build/axion/release/domain/PredefinedVersionIncrementerTest.groovy @@ -41,15 +41,31 @@ class PredefinedVersionIncrementerTest extends Specification { expect: versionIncrementerFor('branchSpecific', ['release.*': 'incrementPatch', 'master': 'incrementMinor'])(context) == Version.valueOf('0.2.0') } - + def "should increment prerelease version when incrementPrerelease rule used"() { given: VersionIncrementerContext context = new VersionIncrementerContext(Version.valueOf('0.1.0-rc1'), scmPosition('master')) - + expect: versionIncrementerFor('incrementPrerelease')(context) == Version.valueOf('0.1.0-rc2') } + def "should increment patch version when incrementPrerelease rule used and currentVersion is not rc"() { + given: + VersionIncrementerContext context = new VersionIncrementerContext(Version.valueOf('0.1.0'), scmPosition('master')) + + expect: + versionIncrementerFor('incrementPrerelease')(context) == Version.valueOf('0.1.1') + } + + def "should create prerelease version when incrementPrerelease rule used with initialPreReleaseIfNotOnPrerelease"() { + given: + VersionIncrementerContext context = new VersionIncrementerContext(Version.valueOf('0.1.0'), scmPosition('master')) + + expect: + versionIncrementerFor('incrementPrerelease', [initialPreReleaseIfNotOnPrerelease: 'rc1'])(context) == Version.valueOf('0.1.1-rc1') + } + def "should increment prerelease version even when it has leading zeroes when incrementPrerelease rule used"() { given: VersionIncrementerContext context = new VersionIncrementerContext(Version.valueOf('0.1.0-rc01'), scmPosition('master'))