-
Notifications
You must be signed in to change notification settings - Fork 38
131 lines (116 loc) · 7.65 KB
/
build.yml
File metadata and controls
131 lines (116 loc) · 7.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
name: Build
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
permissions:
contents: read
id-token: write
jobs:
build:
runs-on: ubuntu-latest
env:
PACT_CLI_IMG: pactfoundation/pact-cli:0.12.3.0
PACT_BROKER_URL: localhost:9292
steps:
- uses: actions/checkout@v6
- name: Start dependencies with docker-compose
run: docker compose -f pact-tools/pact-broker/docker-compose.yml up -d
- name: Set up JDK
uses: actions/setup-java@v5.2.0
with:
java-version: 19
distribution: 'adopt'
- name: Cache
uses: actions/cache@v5
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Build welcome-member-email-service
run: |
# build
mvn clean verify -pl welcome-member-email-service -Pcode-coverage -Pstatic-code-analysis
# verify pacts
## No pacts to verify
# create pacts
mvn verify -pl welcome-member-email-service -Pconsumer-pacts
docker run --rm --net host -v `pwd`/welcome-member-email-service/target/pacts:/target/pacts ${PACT_CLI_IMG} publish /target/pacts --consumer-app-version `git rev-parse --short HEAD` --tag `git rev-parse --abbrev-ref HEAD` --broker-base-url ${PACT_BROKER_URL} --broker-username=rw_user --broker-password=rw_pass
# simulate that we run the providers' support pipelines
## simulate that there is a prod version of the provider deployed
docker run --rm --net host ${PACT_CLI_IMG} broker create-version-tag --auto-create-version --pacticipant special-membership-service --version `git rev-parse --short HEAD` --tag prod --broker-base-url ${PACT_BROKER_URL} --broker-username=rw_user --broker-password=rw_pass
## verify pacts of welcome member email service that were just published
mvn verify -pl special-membership-service -Pprovider-pacts -Dpact.verifier.publishResults=true -Dpact.provider.version=`git rev-parse --short HEAD` -Dpactbroker.consumers=welcome-member-email-service -Dpactbroker.tags=`git rev-parse --abbrev-ref HEAD` -Dpactbroker.user=rw_user -Dpactbroker.pass=rw_pass
# meanwhile, this is happening in the welcome member email service pipeline
# can-i-deploy
docker run --rm --net host ${PACT_CLI_IMG} broker can-i-deploy -v --pacticipant welcome-member-email-service --version `git rev-parse --short HEAD` --to prod --broker-base-url ${PACT_BROKER_URL} --broker-username=rw_user --broker-password=rw_pass
# tag pacts as production
docker run --rm --net host ${PACT_CLI_IMG} broker create-version-tag --pacticipant welcome-member-email-service --version `git rev-parse --short HEAD` --tag prod --broker-base-url ${PACT_BROKER_URL} --broker-username=rw_user --broker-password=rw_pass
- name: Build special-membership-service
run: |
# build
mvn clean verify -pl special-membership-service -Pcode-coverage -Pstatic-code-analysis
# verify pacts
mvn verify -pl special-membership-service -Pprovider-pacts -Dpact.verifier.publishResults=true -Dpact.provider.version=`git rev-parse --short HEAD` -Dpactbroker.tags=prod -Dpactbroker.user=rw_user -Dpactbroker.pass=rw_pass
# create pacts
mvn verify -pl special-membership-service -Pconsumer-pacts
docker run --rm --net host -v `pwd`/special-membership-service/target/pacts:/target/pacts ${PACT_CLI_IMG} publish /target/pacts --consumer-app-version `git rev-parse --short HEAD` --tag `git rev-parse --abbrev-ref HEAD` --broker-base-url ${PACT_BROKER_URL} --broker-username=rw_user --broker-password=rw_pass
# simulate that we run the providers' support pipelines
## simulate that there is a prod version of the provider deployed
docker run --rm --net host ${PACT_CLI_IMG} broker create-version-tag --auto-create-version --pacticipant credit-score-service --version `git rev-parse --short HEAD` --tag prod --broker-base-url ${PACT_BROKER_URL} --broker-username=rw_user --broker-password=rw_pass
## verify pacts of special membership service that were just published
mvn verify -pl credit-score-service -Pprovider-pacts -Dpact.verifier.publishResults=true -Dpact.provider.version=`git rev-parse --short HEAD` -Dpactbroker.consumers=special-membership-service -Dpactbroker.tags=`git rev-parse --abbrev-ref HEAD` -Dpactbroker.user=rw_user -Dpactbroker.pass=rw_pass
# meanwhile, this is happening in the special membership service pipeline
# can-i-deploy
docker run --rm --net host ${PACT_CLI_IMG} broker can-i-deploy -v --pacticipant special-membership-service --version `git rev-parse --short HEAD` --to prod --broker-base-url ${PACT_BROKER_URL} --broker-username=rw_user --broker-password=rw_pass
# tag pacts as production
docker run --rm --net host ${PACT_CLI_IMG} broker create-version-tag --pacticipant special-membership-service --version `git rev-parse --short HEAD` --tag prod --broker-base-url ${PACT_BROKER_URL} --broker-username=rw_user --broker-password=rw_pass
- name: Build credit-score-service
run: |
# build
mvn clean verify -pl credit-score-service -Pcode-coverage -Pstatic-code-analysis
# verify pacts
mvn verify -pl credit-score-service -Pprovider-pacts -Dpact.verifier.publishResults=true -Dpact.provider.version=`git rev-parse --short HEAD` -Dpactbroker.tags=prod -Dpactbroker.user=rw_user -Dpactbroker.pass=rw_pass
# create pacts
## no pacts to create
# can-i-deploy
## no need to run since it doesn't create any pacts
# tag pacts as production
docker run --rm --net host ${PACT_CLI_IMG} broker create-version-tag --pacticipant credit-score-service --version `git rev-parse --short HEAD` --tag prod --broker-base-url ${PACT_BROKER_URL} --broker-username=rw_user --broker-password=rw_pass
- name: Code Coverage Report welcome-member-email-service
if: ${{ github.actor != 'dependabot[bot]' }}
uses: qltysh/qlty-action/coverage@v2
with:
oidc: true
files: |
welcome-member-email-service/target/site/jacoco/jacoco.xml
welcome-member-email-service/target/site/jacoco-it/jacoco.xml
add-prefix: welcome-member-email-service/src/main/java/
tag: welcome-member-email-service
- name: Code Coverage Report special-membership-service
if: ${{ github.actor != 'dependabot[bot]' }}
uses: qltysh/qlty-action/coverage@v2
with:
oidc: true
files: |
special-membership-service/target/site/jacoco/jacoco.xml
special-membership-service/target/site/jacoco-it/jacoco.xml
add-prefix: special-membership-service/src/main/java/
tag: special-membership-service
- name: Code Coverage Report credit-score-service
if: ${{ github.actor != 'dependabot[bot]' }}
uses: qltysh/qlty-action/coverage@v2
with:
oidc: true
files: |
credit-score-service/target/site/jacoco/jacoco.xml
credit-score-service/target/site/jacoco-it/jacoco.xml
add-prefix: credit-score-service/src/main/java/
tag: credit-score-service
- name: Stop dependencies with docker-compose
run: docker compose -f pact-tools/pact-broker/docker-compose.yml down
if: always()