11#! /usr/bin/env groovy
2+
3+ def computePreviousRevision (releaseVersion ) {
4+ return Integer . parseInt(releaseVersion. substring(releaseVersion. lastIndexOf(" ." ) + 1 )) - 1
5+ }
6+
7+ def computePreviousVersion (previousRevision , releaseVersion ) {
8+ return releaseVersion. substring(0 , releaseVersion. lastIndexOf(" ." )) + " ." + previousRevision
9+ }
10+
211pipeline {
312 agent any
413
@@ -16,13 +25,33 @@ pipeline {
1625 PERFORM_RELEASE = " ${ env.SNAPSHOT_VERSION.contains('-SNAPSHOT') && env.BRANCH_NAME == 'main' && !env.LAST_COMMIT_MESSAGE.startsWith('update version to ')} "
1726 RELEASE_VERSION = " ${ env.SNAPSHOT_VERSION.contains('-SNAPSHOT') ? env.SNAPSHOT_VERSION.substring(0, env.SNAPSHOT_VERSION.lastIndexOf('-SNAPSHOT')) : SNAPSHOT_VERSION} "
1827 VERSION = " ${ env.BRANCH_NAME == 'main' && !env.LAST_COMMIT_MESSAGE.startsWith('update version to ') ? env.RELEASE_VERSION : env.SNAPSHOT_VERSION} "
19- PACT_VERSION = " ${ env.RELEASE_VERSION} + ${ env.GIT_COMMIT} "
28+ PACT_VERSION = " ${ env.BRANCH_NAME == 'main' ? env. RELEASE_VERSION : env.RELEASE_VERSION + '+' + env.GIT_COMMIT} "
2029 ROOT_DIRECTORY = " ${ params.verifyPacts == true && env.BRANCH_NAME == 'main' && env.SNAPSHOT_VERSION.endsWith("-SNAPSHOT") ? 'target/checkout' : '.'} "
2130 STAGE = " ${ env.BRANCH_NAME == 'main' ? 'production' : 'test'} "
31+ PREVIOUS_REVISION = computePreviousRevision(env. RELEASE_VERSION )
32+ PREVIOUS_VERSION = computePreviousVersion(env. PREVIOUS_REVISION , env. RELEASE_VERSION )
2233 }
2334
2435 triggers {
2536 pollSCM(" * * * * *" )
37+ GenericTrigger (
38+ genericRequestVariables : [
39+ [key : ' branch' , regexpFilter : ' ' ],
40+ [key : ' verifyPacts' , regexpFilter : ' ' ]
41+ ],
42+
43+ causeString : ' Triggered by web hook' ,
44+
45+ token : ' address-validation-service' ,
46+
47+ printContributedVariables : true ,
48+ printPostContent : true ,
49+
50+ silentResponse : false ,
51+
52+ regexpFilterText : ' $branch' ,
53+ regexpFilterExpression : " .*${ (env.BRANCH_NAME == 'main' ? 'main' : 'develop')} .*"
54+ )
2655 }
2756
2857 stages {
@@ -42,11 +71,9 @@ pipeline {
4271 echo " Building version ${ env.VERSION} "
4372 script {
4473 if (params. verifyPacts == true && env. BRANCH_NAME == ' main' && env. SNAPSHOT_VERSION . endsWith(" -SNAPSHOT" )) {
45- int previousRevision = Integer . parseInt(env. RELEASE_VERSION . substring(env. RELEASE_VERSION . lastIndexOf(" ." ) + 1 )) - 1
46- if (previousRevision >= 0 ) {
47- previousVersion = RELEASE_VERSION . substring(0 , env. RELEASE_VERSION . lastIndexOf(" ." )) + " ." + previousRevision
48- sh " mvn scm:checkout -DscmVersionType=tag -DscmVersion=${ previousVersion} "
49- echo " Testing against version ${ previousVersion} "
74+ if (Integer . parseInt(env. PREVIOUS_REVISION ) >= 0 ) {
75+ sh " mvn scm:checkout -DscmVersionType=tag -DscmVersion=${ env.PREVIOUS_VERSION} "
76+ echo " Testing against version ${ env.PREVIOUS_VERSION} "
5077 }
5178 } else if (env. PERFORM_RELEASE . equals(' true' ) && ! env. RELEASE_VERSION . equals(env. SNAPSHOT_VERSION )) {
5279 sh " mvn versions:set -DnewVersion=${ env.RELEASE_VERSION} -B"
@@ -71,11 +98,14 @@ pipeline {
7198 }
7299 }
73100 steps {
74- sh """
75- cd ${ ROOT_DIRECTORY}
76- mvn test -DpactBroker.url=http://pact:9292 -Dpact.verifier.publishResults=true \
77- -Dpact.provider.branch=${ env.BRANCH_NAME} -Dpact.provider.version=${ env.PACT_VERSION} -B
78- """
101+ script {
102+ version = Integer . parseInt(env. PREVIOUS_REVISION ) >= 0 ? env. PREVIOUS_VERSION : env. PACT_VERSION
103+ sh """
104+ cd ${ ROOT_DIRECTORY}
105+ mvn test -DpactBroker.url=http://pact:9292 -Dpact.verifier.publishResults=true \
106+ -Dpact.provider.branch=${ env.BRANCH_NAME} -Dpact.provider.version=${ version} -B
107+ """
108+ }
79109 }
80110 }
81111 stage (' Package' ) {
0 commit comments