From 6fc745880daba4491925f1168b05c92fe580a54a Mon Sep 17 00:00:00 2001
From: "lucas.landrecy" <lucas.landrecy@etu.hesge.ch>
Date: Sun, 25 May 2025 09:00:32 +0000
Subject: [PATCH] Update .gitlab-ci.yml file

---
 .gitlab-ci.yml | 108 ++++++++++++++++++++++---------------------------
 1 file changed, 49 insertions(+), 59 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 1180dc0..fcfb17a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,59 +1,49 @@
-stages:
-  - build
-  - push
-  - deploy
-
-variables:
-  DOCKER_DRIVER: overlay2
-  CLIENT_IMAGE: $CI_REGISTRY_IMAGE/client:$CI_COMMIT_SHORT_SHA
-  NEO4J_IMAGE: $CI_REGISTRY_IMAGE/neo4j:$CI_COMMIT_SHORT_SHA
-
-.default-docker-job:
-  image: docker:24.0
-  services:
-    - docker:24.0-dind
-  before_script:
-    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
-
-# Build both images
-build_client:
-  extends: .default-docker-job
-  stage: build
-  script:
-    - docker build -t $CLIENT_IMAGE ./client
-
-build_neo4j:
-  extends: .default-docker-job
-  stage: build
-  script:
-    - docker build -t $NEO4J_IMAGE ./neo4j
-
-# Push both images
-push_client:
-  extends: .default-docker-job
-  stage: push
-  script:
-    - docker push $CLIENT_IMAGE
-  needs: [build_client]
-
-push_neo4j:
-  extends: .default-docker-job
-  stage: push
-  script:
-    - docker push $NEO4J_IMAGE
-  needs: [build_neo4j]
-
-# Optional deployment (e.g., via kubectl or Helm)
-# deploy:
-#   stage: deploy
-#   image:
-#     name: bitnami/kubectl:latest
-#     entrypoint: [""]
-#   script:
-#     - echo "$KUBECONFIG" > kubeconfig.yaml
-#     - export KUBECONFIG=$CI_PROJECT_DIR/kubeconfig.yaml
-#     - kubectl set image deployment/client client-container=$CLIENT_IMAGE --namespace=mon-namespace
-#     - kubectl set image deployment/neo4j neo4j-container=$NEO4J_IMAGE --namespace=mon-namespace
-#   only:
-#     - main
-#   needs: [push_client, push_neo4j]
+name: CI/CD - Build & Deploy
+
+on:
+  push:
+    branches:
+      - main
+  workflow_dispatch:
+
+jobs:
+  build-and-deploy:
+    runs-on: ubuntu-latest
+
+    env:
+      DOCKER_IMAGE: ${{ secrets.DOCKER_USERNAME }}/neo4j-populator
+      KUBE_NAMESPACE: ${{ secrets.KUBE_NAMESPACE }}
+
+    steps:
+      - name: Checkout repository
+        uses: actions/checkout@v4
+
+      - name: Set up Docker Buildx
+        uses: docker/setup-buildx-action@v3
+
+      - name: Login to Docker Hub
+        uses: docker/login-action@v3
+        with:
+          username: ${{ secrets.DOCKER_USERNAME }}
+          password: ${{ secrets.DOCKER_PASSWORD }}
+
+      - name: Build and push image to Docker Hub
+        uses: docker/build-push-action@v5
+        with:
+          context: .
+          file: ./Dockerfile
+          push: true
+          tags: ${{ env.DOCKER_IMAGE }}:latest
+
+      - name: Delete old resources
+        run: |
+          kubectl -n $KUBE_NAMESPACE delete -f ./deployment-neo4j.yml --kubeconfig=.kube/config.yml --ignore-not-found
+          kubectl -n $KUBE_NAMESPACE delete -f ./neo4j-service.yml   --kubeconfig=.kube/config.yml --ignore-not-found
+          kubectl -n $KUBE_NAMESPACE delete -f ./job-db-populator.yml --kubeconfig=.kube/config.yml --ignore-not-found
+
+
+      - name: Deploy to Kubernetes
+        run: |
+          kubectl -n $KUBE_NAMESPACE apply -f ./deployment-neo4j.yml --kubeconfig=.kube/config.yml
+          kubectl -n $KUBE_NAMESPACE apply -f ./neo4j-service.yml --kubeconfig=.kube/config.yml
+          kubectl -n $KUBE_NAMESPACE apply -f ./job-db-populator.yml --kubeconfig=.kube/config.yml
\ No newline at end of file
-- 
GitLab