Skip to content

Commit b646b58

Browse files
ArneLimburgnilshartmann96
authored andcommitted
feat: Use webhooks
1 parent a84bce5 commit b646b58

File tree

32 files changed

+709
-111
lines changed

32 files changed

+709
-111
lines changed

address-validation-service/Jenkinsfile

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
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+
211
pipeline {
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') {
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: address-validation-deployment
5+
labels:
6+
app: address-validation-service
7+
spec:
8+
replicas: 1
9+
selector:
10+
matchLabels:
11+
app: address-validation-service
12+
template:
13+
metadata:
14+
labels:
15+
app: address-validation-service
16+
spec:
17+
containers:
18+
- name: address-validation
19+
image: address-validation:latest
20+
ports:
21+
- containerPort: 4003
22+
name: http
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
apiVersion: kustomize.config.k8s.io/v1beta1
2+
kind: Kustomization
3+
4+
resources:
5+
- deployment.yaml
6+
- service.yaml
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: address-validation-service
5+
spec:
6+
selector:
7+
app: address-validation-service
8+
type: NodePort
9+
ports:
10+
- protocol: TCP
11+
port: 4003
12+
targetPort: 4003
13+
nodePort: 30090
14+
name: service
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
apiVersion: kustomize.config.k8s.io/v1beta1
2+
kind: Kustomization
3+
4+
namespace: prod
5+
6+
resources:
7+
- ../../base
8+
9+
patches:
10+
- target:
11+
version: v1
12+
kind: Service
13+
name: address-validation-service
14+
path: ./patches/port-patch.yaml
15+
16+
images:
17+
- name: address-validation
18+
newName: localhost:30010/address-validation
19+
newTag: 1.1.0-SNAPSHOT
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: address-validation-service
5+
spec:
6+
selector:
7+
app: address-validation-service
8+
type: NodePort
9+
ports:
10+
- protocol: TCP
11+
port: 4003
12+
targetPort: 4003
13+
nodePort: 31090
14+
name: service
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: kustomize.config.k8s.io/v1beta1
2+
kind: Kustomization
3+
4+
namespace: test
5+
6+
resources:
7+
- ../../base
8+
9+
images:
10+
- name: address-validation
11+
newName: localhost:30010/address-validation
12+
newTag: 1.1.0-SNAPSHOT

address-validation-service/src/test/pacts/delivery-service-address-validation-service.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@
140140
],
141141
"metadata": {
142142
"pact-jvm": {
143-
"version": "4.6.15"
143+
"version": "4.6.19"
144144
},
145145
"pactSpecification": {
146146
"version": "4.0"

billing-service/Jenkinsfile

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
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+
211
pipeline {
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: 'billing-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') {
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: billing-deployment
5+
labels:
6+
app: billing-service
7+
spec:
8+
replicas: 1
9+
selector:
10+
matchLabels:
11+
app: billing-service
12+
template:
13+
metadata:
14+
labels:
15+
app: billing-service
16+
spec:
17+
containers:
18+
- name: billing
19+
image: billing:latest
20+
ports:
21+
- containerPort: 4001
22+
name: http

0 commit comments

Comments
 (0)