Skip to content

Commit 4e5bbf9

Browse files
ArneLimburgnilshartmann96
authored andcommitted
feat: Use pact tags
1 parent 76b952a commit 4e5bbf9

10 files changed

Lines changed: 75 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>

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>

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: 9 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,10 @@ pipeline {
4850
}
4951
}
5052
steps {
51-
sh "mvn test pact:publish -DpactBroker.url=http://pact:9292 -B"
53+
sh """
54+
mvn test -B
55+
pact-broker publish target/pacts --broker-base-url=http://pact:9292 --consumer-app-version=${env.PACT_VERSION} --auto-detect-version-properties
56+
"""
5257
}
5358
}
5459
stage ('Test providers') {
@@ -132,6 +137,9 @@ pipeline {
132137
} else {
133138
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'"
134139
}
140+
sh "pact-broker create-or-update-pacticipant --broker-base-url=http://pact:9292 --name=customer-service --main-branch=main"
141+
sh "pact-broker create-or-update-version --broker-base-url=http://pact:9292 --pacticipant=customer-service --version=${env.PACT_VERSION}"
142+
sh "pact-broker record-deployment --broker-base-url=http://pact:9292 --pacticipant=customer-service --environment=${env.STAGE} --version=${env.PACT_VERSION}"
135143
}
136144
}
137145
}

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>

delivery-service/Jenkinsfile

Lines changed: 11 additions & 5 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,9 @@ 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
78+
pact-broker publish target/pacts --broker-base-url=http://pact:9292 --consumer-app-version=${env.PACT_VERSION} --auto-detect-version-properties
7579
"""
7680
}
7781
}
@@ -88,7 +92,6 @@ pipeline {
8892
}
8993
}
9094
steps {
91-
sh "mvn pact:publish -DpactBroker.url=http://pact:9292 -Dpact.verifier.publishResults=true -B"
9295
build job: "address-validation-service/${env.BRANCH_NAME}", parameters: [booleanParam(name: 'verifyPacts', value: true)]
9396
}
9497
}
@@ -145,15 +148,15 @@ pipeline {
145148
}
146149
stage ('Deploy') {
147150
when {
148-
expression {
149-
params.verifyPacts == false
150-
}
151151
anyOf {
152152
not {
153153
branch 'main'
154154
}
155155
environment name: 'PERFORM_RELEASE', value: 'true'
156156
}
157+
expression {
158+
params.verifyPacts == false
159+
}
157160
}
158161
steps {
159162
script {
@@ -162,6 +165,9 @@ pipeline {
162165
} else {
163166
sh "sshpass -p 'jenkins' ssh -o 'StrictHostKeyChecking=no' -p 2222 -q jenkins:jenkins@test '[ -f ~/delivery-service-distribution/bin/meecrowave.sh ] && ~/delivery-service-distribution/bin/meecrowave.sh stop && rm -rf ~/delivery-service-distribution/; unzip ~/artifacts/delivery-service/${env.SNAPSHOT_VERSION}/delivery-service-meecrowave-distribution.zip -d ~/; export JAKARTA_PERSISTENCE_JDBC_URL=jdbc:postgresql://delivery-db-test:5432/postgres; nohup ~/delivery-service-distribution/bin/meecrowave.sh start --http=8083'"
164167
}
168+
sh "pact-broker create-or-update-pacticipant --broker-base-url=http://pact:9292 --name=delivery-service --main-branch=main"
169+
sh "pact-broker create-or-update-version --broker-base-url=http://pact:9292 --pacticipant=delivery-service --version=${env.PACT_VERSION}"
170+
sh "pact-broker record-deployment --broker-base-url=http://pact:9292 --pacticipant=delivery-service --environment=${env.STAGE} --version=${env.PACT_VERSION}"
165171
}
166172
}
167173
}

delivery-service/pom.xml

Lines changed: 5 additions & 3 deletions
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
<hibernate.version>7.2.2.Final</hibernate.version>
@@ -138,13 +139,13 @@
138139
<dependency>
139140
<groupId>au.com.dius.pact.consumer</groupId>
140141
<artifactId>junit5</artifactId>
141-
<version>4.6.15</version>
142+
<version>4.6.19</version>
142143
<scope>test</scope>
143144
</dependency>
144145
<dependency>
145146
<groupId>au.com.dius.pact.provider</groupId>
146147
<artifactId>junit5</artifactId>
147-
<version>4.6.15</version>
148+
<version>4.6.19</version>
148149
<scope>test</scope>
149150
</dependency>
150151
<dependency>
@@ -176,6 +177,7 @@
176177
<configuration>
177178
<systemPropertyVariables>
178179
<pact.provider.version>${project.version}</pact.provider.version>
180+
<pact.tag>${pact.tag}</pact.tag>
179181
<pactBroker.url>${pactBroker.url}</pactBroker.url>
180182
<jakarta.persistence.jdbc.url>jdbc:h2:mem:delivery</jakarta.persistence.jdbc.url>
181183
<jakarta.persistence.jdbc.driver>org.h2.Driver</jakarta.persistence.jdbc.driver>
@@ -215,7 +217,7 @@
215217
<plugin>
216218
<groupId>au.com.dius.pact.provider</groupId>
217219
<artifactId>maven</artifactId>
218-
<version>4.3.5</version>
220+
<version>4.6.19</version>
219221
<configuration>
220222
<pactBrokerUrl>${pactBroker.url}</pactBrokerUrl>
221223
</configuration>

0 commit comments

Comments
 (0)