Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
21db60f
Add CI/CD pipeline for Java application
Ross1832 Mar 24, 2026
1d5625d
Change runner to self-hosted for CI jobs
Ross1832 Mar 24, 2026
f883e22
Add config-server deployment configuration
Ross1832 Mar 24, 2026
36db3ec
Delete .github/workflows/maven-build.yml
Ross1832 Mar 24, 2026
e003358
Update Docker Hub login in pipeline configuration
Ross1832 Mar 24, 2026
0405a59
Run all tests in CI pipeline
Ross1832 Mar 24, 2026
1a22a7f
Modify build image settings in pipeline.yml
Ross1832 Mar 24, 2026
ce31e1f
Update image name in pipeline configuration
Ross1832 Mar 24, 2026
7a115ea
Update config-server image reference
Ross1832 Mar 24, 2026
4b37353
Add cleanup step for local Docker images
Ross1832 Mar 24, 2026
cf6e2ee
Enable continue-on-error for image cleanup step
Ross1832 Mar 24, 2026
dfdeeb7
Update pipeline.yml
Ross1832 Mar 24, 2026
921ce7e
Add discovery server deployment configuration
Ross1832 Mar 24, 2026
74e60f0
Add api-gateway deployment configuration
Ross1832 Mar 24, 2026
87fcf3f
Add customers-service deployment configuration
Ross1832 Mar 24, 2026
156bbb9
Add vets-service deployment configuration
Ross1832 Mar 24, 2026
bed4900
Add visits-service deployment configuration
Ross1832 Mar 24, 2026
ec49151
Add admin-server deployment configuration
Ross1832 Mar 24, 2026
b76d8d7
Fix formatting issue in pipeline.yml
Ross1832 Mar 24, 2026
2d6bcf8
Add cleanup step before Docker image build
Ross1832 Mar 24, 2026
5118973
Add genai-service deployment configuration
Ross1832 Mar 24, 2026
dc0e7f5
Add config-server service configuration
Ross1832 Mar 24, 2026
3fad9c1
Create discovery-server-service.yaml
Ross1832 Mar 24, 2026
c31e958
Add discovery server service configuration
Ross1832 Mar 24, 2026
8778078
Add api-gateway Service configuration
Ross1832 Mar 24, 2026
2c05251
Add Kubernetes service for customers-service
Ross1832 Mar 24, 2026
4a428ee
Add Kubernetes service definition for vets-service
Ross1832 Mar 24, 2026
7296351
Add visits-service Service definition in YAML
Ross1832 Mar 24, 2026
664be7a
Add admin-server service configuration
Ross1832 Mar 24, 2026
de7dc7f
Add Kubernetes service definition for genai-service
Ross1832 Mar 24, 2026
ce9ccbc
Fix formatting in admin-server-deployment.yaml
Ross1832 Mar 24, 2026
68e2bf2
Add CONFIG_SERVER_URL environment variable
Ross1832 Mar 25, 2026
cd7d70f
Add CONFIG_SERVER_URL environment variable
Ross1832 Mar 25, 2026
ffd6333
Add CONFIG_SERVER_URL environment variable
Ross1832 Mar 25, 2026
cd2062a
Add CONFIG_SERVER_URL environment variable
Ross1832 Mar 25, 2026
b3e7f58
Add CONFIG_SERVER_URL environment variable
Ross1832 Mar 25, 2026
00885e1
Add CONFIG_SERVER_URL environment variable
Ross1832 Mar 25, 2026
eaa4f2e
Add CONFIG_SERVER_URL environment variable
Ross1832 Mar 25, 2026
8ca3a27
Add SPRING_PROFILES_ACTIVE environment variable
Ross1832 Mar 25, 2026
6dc39c4
Add SPRING_PROFILES_ACTIVE environment variable
Ross1832 Mar 25, 2026
e01974a
Add SPRING_PROFILES_ACTIVE environment variable
Ross1832 Mar 25, 2026
17b4b00
Add SPRING_PROFILES_ACTIVE environment variable
Ross1832 Mar 25, 2026
3766620
Add SPRING_PROFILES_ACTIVE to visits service deployment
Ross1832 Mar 25, 2026
a4fa9fb
Add SPRING_PROFILES_ACTIVE environment variable
Ross1832 Mar 25, 2026
b500301
Add SPRING_PROFILES_ACTIVE environment variable
Ross1832 Mar 25, 2026
dc871ec
Change service type to NodePort with specified port
Ross1832 Mar 25, 2026
61845bd
Update environment variables for MySQL integration
Ross1832 Mar 27, 2026
fa11876
Update environment variables for MySQL integration
Ross1832 Mar 27, 2026
4013db7
Update environment variables for MySQL integration
Ross1832 Mar 27, 2026
ff29600
Create MySQL secret for petclinic application
Ross1832 Mar 27, 2026
56f1569
Add PersistentVolumeClaim for MySQL
Ross1832 Mar 27, 2026
727e907
Create mysql-statefulset.yaml
Ross1832 Mar 27, 2026
1797001
Create mysql-service.yaml
Ross1832 Mar 27, 2026
004e2ae
Update pipeline.yml
Ross1832 Mar 27, 2026
3259b47
Update pipeline.yml
Ross1832 Mar 27, 2026
5e71428
Update pipeline.yml
Ross1832 Mar 27, 2026
70dd075
Update pipeline.yml
Ross1832 Mar 27, 2026
a101ddb
Rename MySQL environment variables for Spring datasource
Ross1832 Mar 30, 2026
98100b7
Rename MySQL environment variables for datasource
Ross1832 Mar 30, 2026
cc1ff66
Rename MySQL environment variables for Spring datasource
Ross1832 Mar 30, 2026
8becdee
Fix formatting in application.yml
Ross1832 Mar 30, 2026
98ab554
Update deployment to increase replicas and add affinity
Ross1832 Mar 30, 2026
5bb3af4
Update admin server deployment for scaling and affinity
Ross1832 Mar 30, 2026
cf68624
Update api-gateway deployment for scaling and affinity
Ross1832 Mar 30, 2026
2e61a49
Update customers service deployment with replicas and affinity
Ross1832 Mar 30, 2026
1884b70
Update discovery server deployment with replicas and affinity
Ross1832 Mar 30, 2026
6a82fec
Add pod anti-affinity for config-server
Ross1832 Mar 30, 2026
9654b26
Implement pod anti-affinity for config-server
Ross1832 Mar 30, 2026
d6f4d99
Increase replicas for vets-service to 2
Ross1832 Mar 30, 2026
e37f317
Increase replicas for genai-service from 1 to 2
Ross1832 Mar 30, 2026
db5a83c
Update visits service deployment for scaling and affinity
Ross1832 Mar 30, 2026
829cfc6
Fix formatting in admin-server-deployment.yaml
Ross1832 Mar 30, 2026
bfb9f62
Remove config-server container from admin deployment
Ross1832 Mar 30, 2026
596adf4
Remove config-server container from api-gateway deployment
Ross1832 Mar 30, 2026
a4f7ae6
Remove config-server container from deployment
Ross1832 Mar 30, 2026
b5c72b0
Remove config-server container from deployment
Ross1832 Mar 30, 2026
fece5f3
Remove config-server container from deployment
Ross1832 Mar 30, 2026
6517d03
Remove config-server container from deployment
Ross1832 Mar 30, 2026
30bf77f
Remove config-server container from deployment
Ross1832 Mar 30, 2026
c78734a
Add separate deploy stages for dev and prod environments
Ross1832 Mar 30, 2026
81d58d0
dev environment and prod environment
Ross1832 Mar 30, 2026
fd5dc92
Merge branch 'main' of github.com:Ross1832/spring-petclinic-microserv…
Ross1832 Mar 30, 2026
1e26d8e
prod files
Ross1832 Mar 30, 2026
eb3c67c
prod&dev fix
Ross1832 Mar 30, 2026
a4f2b19
password fix
Ross1832 Mar 30, 2026
b4dfa32
Test pipeline after org transfer
Ross1832 Mar 30, 2026
bfd7b56
changes_test_show
Ross1832 Mar 31, 2026
9d929ec
something
Ross1832 Mar 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 0 additions & 29 deletions .github/workflows/maven-build.yml

This file was deleted.

86 changes: 86 additions & 0 deletions .github/workflows/pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: CI/CD Pipeline

on:
push:
branches: [ main ]

jobs:
build-and-test:
runs-on: [self-hosted, Linux, X64, k8s]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Java 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: maven
- name: Run tests
run: mvn test --batch-mode -DskipTests

build-and-push:
runs-on: [self-hosted, Linux, X64, k8s]
needs: build-and-test
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Java 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: maven
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Clean up before build
run: docker image prune -a -f
continue-on-error: true
- name: Build and push images
run: |
for service in \
spring-petclinic-config-server \
spring-petclinic-discovery-server \
spring-petclinic-admin-server \
spring-petclinic-customers-service \
spring-petclinic-vets-service \
spring-petclinic-visits-service \
spring-petclinic-genai-service \
spring-petclinic-api-gateway; do

mvn spring-boot:build-image \
-pl $service \
-Dspring-boot.build-image.publish=true \
-Dspring-boot.build-image.imageName=ross1832/$service:latest \
--batch-mode \
-DskipTests

docker image rm ross1832/$service:latest || true
done

deploy-dev:
runs-on: [self-hosted, Linux, X64, k8s]
needs: build-and-push
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Deploy to dev
run: |
kubectl apply -f k8s/dev/ -n dev

deploy-prod:
runs-on: [self-hosted, Linux, X64, k8s]
needs: build-and-push
environment: prod
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Deploy to prod
run: |
kubectl apply -f k8s/prod/ -n prod
35 changes: 35 additions & 0 deletions k8s/dev/admin-server-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: admin-server
namespace: dev
spec:
replicas: 2
selector:
matchLabels:
app: admin-server
template:
metadata:
labels:
app: admin-server
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
app: admin-server
topologyKey: "kubernetes.io/hostname"
containers:
- name: admin-server
image: ross1832/spring-petclinic-admin-server:latest
imagePullPolicy: Always
env:
- name: CONFIG_SERVER_URL
value: http://config-server:8888/
- name: SPRING_PROFILES_ACTIVE
value: docker
ports:
- containerPort: 9090
11 changes: 11 additions & 0 deletions k8s/dev/admin-server-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: admin-server
namespace: dev
spec:
selector:
app: admin-server
ports:
- port: 9090
targetPort: 9090
35 changes: 35 additions & 0 deletions k8s/dev/api-gateway-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-gateway
namespace: dev
spec:
replicas: 2
selector:
matchLabels:
app: api-gateway
template:
metadata:
labels:
app: api-gateway
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
app: api-gateway
topologyKey: "kubernetes.io/hostname"
containers:
- name: api-gateway
image: ross1832/spring-petclinic-api-gateway:latest
imagePullPolicy: Always
env:
- name: CONFIG_SERVER_URL
value: http://config-server:8888/
- name: SPRING_PROFILES_ACTIVE
value: docker
ports:
- containerPort: 8080
13 changes: 13 additions & 0 deletions k8s/dev/api-gateway-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: v1
kind: Service
metadata:
name: api-gateway
namespace: dev
spec:
type: NodePort
selector:
app: api-gateway
ports:
- port: 8080
targetPort: 8080
nodePort: 30080
30 changes: 30 additions & 0 deletions k8s/dev/config-server-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: config-server
namespace: dev
spec:
replicas: 2
selector:
matchLabels:
app: config-server
template:
metadata:
labels:
app: config-server
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
app: config-server
topologyKey: "kubernetes.io/hostname"
containers:
- name: config-server
image: ross1832/spring-petclinic-config-server:latest
imagePullPolicy: Always
ports:
- containerPort: 8888
11 changes: 11 additions & 0 deletions k8s/dev/config-server-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: config-server
namespace: dev
spec:
selector:
app: config-server
ports:
- port: 8888
targetPort: 8888
41 changes: 41 additions & 0 deletions k8s/dev/customers-service-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: customers-service
namespace: dev
spec:
replicas: 2
selector:
matchLabels:
app: customers-service
template:
metadata:
labels:
app: customers-service
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
app: customers-service
topologyKey: "kubernetes.io/hostname"
containers:
- name: customers-service
image: ross1832/spring-petclinic-customers-service:latest
imagePullPolicy: Always
env:
- name: CONFIG_SERVER_URL
value: http://config-server:8888/
- name: SPRING_PROFILES_ACTIVE
value: docker,mysql
- name: SPRING_DATASOURCE_URL
value: jdbc:mysql://mysql:3306/petclinic?allowPublicKeyRetrieval=true&useSSL=false
- name: SPRING_DATASOURCE_USERNAME
value: root
- name: SPRING_DATASOURCE_PASSWORD
value: petclinic
ports:
- containerPort: 8081
11 changes: 11 additions & 0 deletions k8s/dev/customers-service-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: customers-service
namespace: dev
spec:
selector:
app: customers-service
ports:
- port: 8081
targetPort: 8081
35 changes: 35 additions & 0 deletions k8s/dev/discovery-server-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: discovery-server
namespace: dev
spec:
replicas: 2
selector:
matchLabels:
app: discovery-server
template:
metadata:
labels:
app: discovery-server
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
app: discovery-server
topologyKey: "kubernetes.io/hostname"
containers:
- name: discovery-server
image: ross1832/spring-petclinic-discovery-server:latest
imagePullPolicy: Always
env:
- name: CONFIG_SERVER_URL
value: http://config-server:8888/
- name: SPRING_PROFILES_ACTIVE
value: docker
ports:
- containerPort: 8761
11 changes: 11 additions & 0 deletions k8s/dev/discovery-server-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: discovery-server
namespace: dev
spec:
selector:
app: discovery-server
ports:
- port: 8761
targetPort: 8761
Loading