Skip to content

Commit 6cd45b9

Browse files
ArneLimburgnilshartmann96
authored andcommitted
feat: Use pact tags
1 parent 1f17856 commit 6cd45b9

15 files changed

Lines changed: 107 additions & 21 deletions

File tree

address-validation-service/Jenkinsfile

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ pipeline {
1616
PERFORM_RELEASE = "${env.SNAPSHOT_VERSION.contains('-SNAPSHOT') && env.BRANCH_NAME == 'main' && !env.LAST_COMMIT_MESSAGE.startsWith('update version to ')}"
1717
RELEASE_VERSION = "${env.SNAPSHOT_VERSION.contains('-SNAPSHOT') ? env.SNAPSHOT_VERSION.substring(0, env.SNAPSHOT_VERSION.lastIndexOf('-SNAPSHOT')) : SNAPSHOT_VERSION}"
1818
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}"
1920
ROOT_DIRECTORY = "${params.verifyPacts == true && env.BRANCH_NAME == 'main' && env.SNAPSHOT_VERSION.endsWith("-SNAPSHOT") ? 'target/checkout' : '.'}"
21+
STAGE = "${env.BRANCH_NAME == 'main' ? 'production' : 'test'}"
2022
}
2123

2224
triggers {
@@ -71,7 +73,8 @@ pipeline {
7173
steps {
7274
sh """
7375
cd ${ROOT_DIRECTORY}
74-
mvn test -DpactBroker.url=http://pact:9292 -Dpact.verifier.publishResults=true -B
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
7578
"""
7679
}
7780
}
@@ -128,15 +131,15 @@ pipeline {
128131
}
129132
stage ('Deploy') {
130133
when {
131-
expression {
132-
params.verifyPacts == false
133-
}
134134
anyOf {
135135
not {
136136
branch 'main'
137137
}
138138
environment name: 'PERFORM_RELEASE', value: 'true'
139139
}
140+
expression {
141+
params.verifyPacts == false
142+
}
140143
}
141144
steps {
142145
script {
@@ -145,6 +148,9 @@ pipeline {
145148
} else {
146149
sh "sshpass -p 'jenkins' ssh -o 'StrictHostKeyChecking=no' -p 2222 -q jenkins:jenkins@test '[ -f ~/address-validation-service-distribution/bin/meecrowave.sh ] && ~/address-validation-service-distribution/bin/meecrowave.sh stop && rm -rf ~/address-validation-service-distribution/; unzip ~/artifacts/address-validation-service/${env.SNAPSHOT_VERSION}/address-validation-service-meecrowave-distribution.zip -d ~/; nohup ~/address-validation-service-distribution/bin/meecrowave.sh start --http=8084'"
147150
}
151+
sh "pact-broker create-or-update-pacticipant --broker-base-url=http://pact:9292 --name=address-validation-service --main-branch=main"
152+
sh "pact-broker create-or-update-version --broker-base-url=http://pact:9292 --pacticipant=address-validation-service --version=${env.PACT_VERSION}"
153+
sh "pact-broker record-deployment --broker-base-url=http://pact:9292 --pacticipant=address-validation-service --environment=${env.STAGE} --version=${env.PACT_VERSION}"
148154
}
149155
}
150156
}

address-validation-service/pom.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
<failOnMissingWebXml>false</failOnMissingWebXml>
2121
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2222
<pactBroker.url>http://localhost:5050</pactBroker.url>
23+
<pact.tag>develop</pact.tag>
2324
<meecrowave.version>2.0.0</meecrowave.version>
2425
<deltaspike.version>1.9.6</deltaspike.version>
2526
<junit.version>5.8.2</junit.version>
@@ -104,7 +105,7 @@
104105
<dependency>
105106
<groupId>au.com.dius.pact.provider</groupId>
106107
<artifactId>junit5</artifactId>
107-
<version>4.3.5</version>
108+
<version>4.6.19</version>
108109
<scope>test</scope>
109110
</dependency>
110111
<dependency>
@@ -135,6 +136,7 @@
135136
<configuration>
136137
<systemPropertyVariables>
137138
<pact.provider.version>${project.version}</pact.provider.version>
139+
<pact.tag>${pact.tag}</pact.tag>
138140
<pactBroker.url>${pactBroker.url}</pactBroker.url>
139141
</systemPropertyVariables>
140142
</configuration>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# This file contains the meecrowave default configuration
2+
# More on http://openwebbeans.apache.org/meecrowave/meecrowave-core/cli.html
3+
4+
tomcat-access-log-pattern = %h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"
5+
http=8084

address-validation-service/src/test/java/de/openknowledge/sample/address/AddressValidationServiceTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
import au.com.dius.pact.provider.junitsupport.Provider;
3232
import au.com.dius.pact.provider.junitsupport.State;
3333
import au.com.dius.pact.provider.junitsupport.loader.PactBroker;
34+
import au.com.dius.pact.provider.junitsupport.loader.PactBrokerConsumerVersionSelectors;
35+
import au.com.dius.pact.provider.junitsupport.loader.SelectorBuilder;
3436

3537
@IgnoreNoPactsToVerify
3638
@Provider("address-validation-service")
@@ -41,6 +43,15 @@ public class AddressValidationServiceTest {
4143
@ConfigurationInject
4244
private Meecrowave.Builder config;
4345

46+
@PactBrokerConsumerVersionSelectors
47+
public static SelectorBuilder consumerVersionSelectors() {
48+
SelectorBuilder selectorBuilder = new SelectorBuilder()
49+
.mainBranch()
50+
.deployedOrReleased();
51+
ofNullable(System.getenv("BRANCH_NAME")).ifPresent(selectorBuilder::branch);
52+
return selectorBuilder;
53+
}
54+
4455
@BeforeEach
4556
public void setUp(PactVerificationContext verificationContext) {
4657
ofNullable(verificationContext)

billing-service/Jenkinsfile

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ pipeline {
1616
PERFORM_RELEASE = "${env.SNAPSHOT_VERSION.contains('-SNAPSHOT') && env.BRANCH_NAME == 'main' && !env.LAST_COMMIT_MESSAGE.startsWith('update version to ')}"
1717
RELEASE_VERSION = "${env.SNAPSHOT_VERSION.contains('-SNAPSHOT') ? env.SNAPSHOT_VERSION.substring(0, env.SNAPSHOT_VERSION.lastIndexOf('-SNAPSHOT')) : SNAPSHOT_VERSION}"
1818
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}"
1920
ROOT_DIRECTORY = "${params.verifyPacts == true && env.BRANCH_NAME == 'main' && env.SNAPSHOT_VERSION.endsWith("-SNAPSHOT") ? 'target/checkout' : '.'}"
21+
STAGE = "${env.BRANCH_NAME == 'main' ? 'production' : 'test'}"
2022
}
2123

2224
triggers {
@@ -71,7 +73,8 @@ pipeline {
7173
steps {
7274
sh """
7375
cd ${ROOT_DIRECTORY}
74-
mvn test -DpactBroker.url=http://pact:9292 -Dpact.verifier.publishResults=true -B
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
7578
"""
7679
}
7780
}
@@ -128,15 +131,15 @@ pipeline {
128131
}
129132
stage ('Deploy') {
130133
when {
131-
expression {
132-
params.verifyPacts == false
133-
}
134134
anyOf {
135135
not {
136136
branch 'main'
137137
}
138138
environment name: 'PERFORM_RELEASE', value: 'true'
139139
}
140+
expression {
141+
params.verifyPacts == false
142+
}
140143
}
141144
steps {
142145
script {
@@ -145,6 +148,9 @@ pipeline {
145148
} else {
146149
sh "sshpass -p 'jenkins' ssh -o 'StrictHostKeyChecking=no' -p 2222 -q jenkins:jenkins@test '[ -f ~/billing-service-distribution/bin/meecrowave.sh ] && ~/billing-service-distribution/bin/meecrowave.sh stop && rm -rf ~/billing-service-distribution/; unzip ~/artifacts/billing-service/${env.SNAPSHOT_VERSION}/billing-service-meecrowave-distribution.zip -d ~/; nohup ~/billing-service-distribution/bin/meecrowave.sh start --http=8082'"
147150
}
151+
sh "pact-broker create-or-update-pacticipant --broker-base-url=http://pact:9292 --name=billing-service --main-branch=main"
152+
sh "pact-broker create-or-update-version --broker-base-url=http://pact:9292 --pacticipant=billing-service --version=${env.PACT_VERSION}"
153+
sh "pact-broker record-deployment --broker-base-url=http://pact:9292 --pacticipant=billing-service --environment=${env.STAGE} --version=${env.PACT_VERSION}"
148154
}
149155
}
150156
}

billing-service/pom.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2222
<meecrowave.version>2.0.0</meecrowave.version>
2323
<pactBroker.url>http://localhost:5050</pactBroker.url>
24+
<pact.tag>develop</pact.tag>
2425
<deltaspike.version>1.9.6</deltaspike.version>
2526
<junit.version>5.8.2</junit.version>
2627
</properties>
@@ -104,7 +105,7 @@
104105
<dependency>
105106
<groupId>au.com.dius.pact.provider</groupId>
106107
<artifactId>junit5</artifactId>
107-
<version>4.3.5</version>
108+
<version>4.6.19</version>
108109
<scope>test</scope>
109110
</dependency>
110111
<dependency>
@@ -135,6 +136,7 @@
135136
<configuration>
136137
<systemPropertyVariables>
137138
<pact.provider.version>${project.version}</pact.provider.version>
139+
<pact.tag>${pact.tag}</pact.tag>
138140
<pactBroker.url>${pactBroker.url}</pactBroker.url>
139141
</systemPropertyVariables>
140142
</configuration>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# This file contains the meecrowave default configuration
2+
# More on http://openwebbeans.apache.org/meecrowave/meecrowave-core/cli.html
3+
4+
tomcat-access-log-pattern = %h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"
5+
http=8084

billing-service/src/test/java/de/openknowledge/sample/address/BillingAddressServiceTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
import au.com.dius.pact.provider.junitsupport.Provider;
3232
import au.com.dius.pact.provider.junitsupport.State;
3333
import au.com.dius.pact.provider.junitsupport.loader.PactBroker;
34+
import au.com.dius.pact.provider.junitsupport.loader.PactBrokerConsumerVersionSelectors;
35+
import au.com.dius.pact.provider.junitsupport.loader.SelectorBuilder;
3436

3537
@IgnoreNoPactsToVerify
3638
@Provider("billing-service")
@@ -41,6 +43,15 @@ public class BillingAddressServiceTest {
4143
@ConfigurationInject
4244
private Meecrowave.Builder config;
4345

46+
@PactBrokerConsumerVersionSelectors
47+
public static SelectorBuilder consumerVersionSelectors() {
48+
SelectorBuilder selectorBuilder = new SelectorBuilder()
49+
.mainBranch()
50+
.deployedOrReleased();
51+
ofNullable(System.getenv("BRANCH_NAME")).ifPresent(selectorBuilder::branch);
52+
return selectorBuilder;
53+
}
54+
4455
@BeforeEach
4556
public void setUp(PactVerificationContext verificationContext) {
4657
ofNullable(verificationContext)

customer-service/Jenkinsfile

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ pipeline {
1212
PERFORM_RELEASE = "${env.SNAPSHOT_VERSION.contains('-SNAPSHOT') && env.BRANCH_NAME == 'main' && !env.LAST_COMMIT_MESSAGE.startsWith('update version to ')}"
1313
RELEASE_VERSION = "${env.SNAPSHOT_VERSION.contains('-SNAPSHOT') ? env.SNAPSHOT_VERSION.substring(0, env.SNAPSHOT_VERSION.lastIndexOf('-SNAPSHOT')) : SNAPSHOT_VERSION}"
1414
VERSION = "${env.BRANCH_NAME == 'main' && !env.LAST_COMMIT_MESSAGE.startsWith('update version to ') ? env.RELEASE_VERSION : env.SNAPSHOT_VERSION}"
15+
PACT_VERSION = "${env.RELEASE_VERSION}+${env.GIT_COMMIT}"
16+
STAGE = "${env.BRANCH_NAME == 'main' ? 'production' : 'test'}"
1517
}
1618

1719
triggers {
@@ -48,7 +50,11 @@ pipeline {
4850
}
4951
}
5052
steps {
51-
sh 'mvn test pact:publish -DpactBroker.url=http://pact:9292 -Dpact.verifier.publishResults=true -B'
53+
sh """
54+
mvn test -DpactBroker.url=http://pact:9292 -Dpact.verifier.publishResults=true \
55+
-Dpact.provider.branch=${env.BRANCH_NAME} -Dpact.provider.version=${env.PACT_VERSION} -B
56+
pact-broker publish target/pacts --broker-base-url=http://pact:9292 --consumer-app-version=${env.PACT_VERSION} --auto-detect-version-properties
57+
"""
5258
}
5359
}
5460
stage ('Test providers') {
@@ -132,6 +138,9 @@ pipeline {
132138
} else {
133139
sh "sshpass -p 'jenkins' ssh -o 'StrictHostKeyChecking=no' -p 2222 -q jenkins:jenkins@test '[ -f ~/customer-service-distribution/bin/meecrowave.sh ] && ~/customer-service-distribution/bin/meecrowave.sh stop && rm -rf ~/customer-service-distribution/; unzip ~/artifacts/customer-service/${env.SNAPSHOT_VERSION}/customer-service-meecrowave-distribution.zip -d ~/; nohup ~/customer-service-distribution/bin/meecrowave.sh start --http=8081'"
134140
}
141+
sh "pact-broker create-or-update-pacticipant --broker-base-url=http://pact:9292 --name=customer-service --main-branch=main"
142+
sh "pact-broker create-or-update-version --broker-base-url=http://pact:9292 --pacticipant=customer-service --version=${env.PACT_VERSION}"
143+
sh "pact-broker record-deployment --broker-base-url=http://pact:9292 --pacticipant=customer-service --environment=${env.STAGE} --version=${env.PACT_VERSION}"
135144
}
136145
}
137146
}

customer-service/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@
140140
<dependency>
141141
<groupId>au.com.dius.pact.consumer</groupId>
142142
<artifactId>junit5</artifactId>
143-
<version>4.3.5</version>
143+
<version>4.6.19</version>
144144
<scope>test</scope>
145145
</dependency>
146146
<dependency>
@@ -206,7 +206,7 @@
206206
<plugin>
207207
<groupId>au.com.dius.pact.provider</groupId>
208208
<artifactId>maven</artifactId>
209-
<version>4.3.5</version>
209+
<version>4.6.19</version>
210210
<configuration>
211211
<pactBrokerUrl>${pactBroker.url}</pactBrokerUrl>
212212
</configuration>

0 commit comments

Comments
 (0)