From 737214ea002ff5d45af10baf8755e20c314e4303 Mon Sep 17 00:00:00 2001 From: Rithwik9889 Date: Fri, 18 Sep 2026 18:21:51 +1000 Subject: [PATCH 1/2] Trigger CI pipeline - small change to course-service --- .gitignore | 3 ++- course-service/app/main.py | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 4299cd1a..4551d169 100644 --- a/.gitignore +++ b/.gitignore @@ -196,4 +196,5 @@ cython_debug/ .cursorignore .cursorindexingignore -node_modules/ \ No newline at end of file +node_modules/ +terraform/ \ No newline at end of file diff --git a/course-service/app/main.py b/course-service/app/main.py index 7c8cbfb2..31e388a2 100644 --- a/course-service/app/main.py +++ b/course-service/app/main.py @@ -1,3 +1,4 @@ +# CI trigger test - Rithwik 225379656 import logging import time from contextlib import asynccontextmanager From 9afebf17749b233d7d7ff67bb67b8c2f09e9847b Mon Sep 17 00:00:00 2001 From: Rithwik9889 Date: Fri, 25 Sep 2026 23:53:26 +1000 Subject: [PATCH 2/2] Add CI/CD pipeline and update frontend heading --- .github/workflows/ci-cd.yml | 57 ++++++++++++++++++++++ docker-compose.yml | 34 +++++++++++++- frontend/src/pages/Login.jsx | 2 +- kubernetes/configmap.yml | 21 +++++++++ kubernetes/deployment.yml | 91 ++++++++++++++++++++++++++++++++++++ kubernetes/service.yml | 35 ++++++++++++++ prometheus.yml | 11 +++++ 7 files changed, 249 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/ci-cd.yml create mode 100644 kubernetes/configmap.yml create mode 100644 kubernetes/deployment.yml create mode 100644 kubernetes/service.yml create mode 100644 prometheus.yml diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml new file mode 100644 index 00000000..87748c33 --- /dev/null +++ b/.github/workflows/ci-cd.yml @@ -0,0 +1,57 @@ +name: CI/CD Pipeline + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Login to ACR + uses: azure/docker-login@v1 + with: + login-server: ${{ secrets.ACR_LOGIN_SERVER }} + username: ${{ secrets.ACR_USERNAME }} + password: ${{ secrets.ACR_PASSWORD }} + + - name: Build and push course-service + run: | + docker build -t ${{ secrets.ACR_LOGIN_SERVER }}/course-service:${{ github.sha }} -t ${{ secrets.ACR_LOGIN_SERVER }}/course-service:latest ./course-service + docker push ${{ secrets.ACR_LOGIN_SERVER }}/course-service:${{ github.sha }} + docker push ${{ secrets.ACR_LOGIN_SERVER }}/course-service:latest + + - name: Build and push frontend + run: | + docker build -t ${{ secrets.ACR_LOGIN_SERVER }}/frontend:${{ github.sha }} -t ${{ secrets.ACR_LOGIN_SERVER }}/frontend:latest ./frontend + docker push ${{ secrets.ACR_LOGIN_SERVER }}/frontend:${{ github.sha }} + docker push ${{ secrets.ACR_LOGIN_SERVER }}/frontend:latest + + deploy: + needs: build + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/main' + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up kubectl + uses: azure/setup-kubectl@v3 + + - name: Deploy to AKS + run: | + mkdir -p $HOME/.kube + echo "${{ secrets.KUBE_CONFIG }}" | base64 -d > $HOME/.kube/config + kubectl apply -f kubernetes/ + kubectl rollout restart deployment/course-service + kubectl rollout restart deployment/frontend + + - name: Verify deployment + run: | + kubectl rollout status deployment/course-service --timeout=120s + kubectl rollout status deployment/frontend --timeout=120s \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index e1d3379c..a1580042 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -232,6 +232,38 @@ services: networks: - koalatech-network + prometheus: + image: prom/prometheus:latest + container_name: prometheus + ports: + - "9090:9090" + volumes: + - ./prometheus.yml:/etc/prometheus/prometheus.yml + networks: + - koalatech-network + + grafana: + image: grafana/grafana:latest + container_name: grafana + ports: + - "3001:3000" + depends_on: + - prometheus + networks: + - koalatech-network + + cadvisor: + image: gcr.io/cadvisor/cadvisor:latest + container_name: cadvisor + ports: + - "8080:8080" + volumes: + - //var/run:/var/run:ro + - //sys:/sys:ro + - //var/lib/docker/:/var/lib/docker:ro + networks: + - koalatech-network + networks: koalatech-network: driver: bridge @@ -241,4 +273,4 @@ volumes: student-db-data: lecturer-db-data: course-db-data: - enrollment-db-data: \ No newline at end of file + enrollment-db-data: diff --git a/frontend/src/pages/Login.jsx b/frontend/src/pages/Login.jsx index 1132741c..3bdd68cf 100644 --- a/frontend/src/pages/Login.jsx +++ b/frontend/src/pages/Login.jsx @@ -93,7 +93,7 @@ const Login = () => { variant="h4" gutterBottom > - KoalaTech University + KoalaTech University - V2 Deployed