-
Notifications
You must be signed in to change notification settings - Fork 1
152 lines (125 loc) · 4.15 KB
/
ci-maven.yml
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: Java CI with Maven
on:
workflow_dispatch:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build_api_gateway:
runs-on: ubuntu-latest
# https://stackoverflow.com/a/70448851
permissions: write-all
steps:
- uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: maven
- name: Build api-gateway with Maven
run: mvn -B package --file api-gateway/pom.xml
- name: Start minikube
uses: medyagh/setup-minikube@master
- name: Try the cluster !
run: kubectl get pods -A
- name: Build image
run: |
eval $(minikube -p minikube docker-env)
docker build -f ./api-gateway/Dockerfile -t api-gateway .
echo -n "verifying images:"
docker images
- name: Deploy to minikube
run:
kubectl apply -f ./api-gateway/.helm/templates/k8s-api-gateway-app.yaml
- name: Test service URLs
run: |
minikube service list
minikube service api-gateway-service --url
build_openai_service:
runs-on: ubuntu-latest
# https://stackoverflow.com/a/70448851
permissions: write-all
steps:
- uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: maven
- name: Build openai-service with Maven
run: mvn -B package --file openai-service/pom.xml
build_payment_service:
runs-on: ubuntu-latest
# https://stackoverflow.com/a/70448851
permissions: write-all
steps:
- uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: maven
- name: Build payment-service with Maven
run: mvn -B package --file payment-service/pom.xml
build_service_registry:
runs-on: ubuntu-latest
# https://stackoverflow.com/a/70448851
permissions: write-all
steps:
- uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: maven
- name: Build service-registry with Maven
run: mvn -B package --file service-registry/pom.xml
build_student_service:
runs-on: ubuntu-latest
# https://stackoverflow.com/a/70448851
permissions: write-all
steps:
- uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: maven
- name: Build student-service with Maven
run: mvn -B package --file student-service/pom.xml
build_swagger_application:
runs-on: ubuntu-latest
# https://stackoverflow.com/a/70448851
permissions: write-all
steps:
- uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: maven
- name: Build swagger-application with Maven
run: mvn -B package --file swagger-application/pom.xml
success-job:
runs-on: ubuntu-latest
if: ${{ always() && contains(join(needs.*.result, ','), 'success') }}
needs: [ build_api_gateway, build_openai_service, build_payment_service, build_service_registry, build_student_service, build_swagger_application ]
steps:
- name: Build is Succeeded
env:
NEEDS: ${{ toJSON(needs) }}
run: |
echo "$NEEDS"