From 2c59c6f9a51b92c37e4ade151a7cfc030de8134f Mon Sep 17 00:00:00 2001
From: KADDOUR Sidi Mohammed <sidi-mohammed.kaddour@inria.fr>
Date: Wed, 18 Dec 2024 16:55:17 +0100
Subject: [PATCH] update readme.md

---
 .gitlab-ci.yml | 61 +++++++++++++++++++++++++++++---------------------
 1 file changed, 35 insertions(+), 26 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f83aa09..ba8e171 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,48 +4,57 @@ stages:
   - deploy
 
 variables:
-  DOCKER_USERNAME: "medkaddour"
-  TAG: "latest"
-  DEPLOY_ENV: "local"  # Change to 'cloud' if deploying to the cloud
+  DOCKER_REGISTRY: "registry.gitlab.com"
+  PROJECT_NAME: "surveillance-system"
+  K8S_NAMESPACE: "surveillance-system"
 
-before_script:
-  - echo "Setting up environment..."
-
-# Build stage: Build the Docker images
+# Build stage: Builds Docker images for all services
 build:
   stage: build
+  services:
+    - docker:dind
+  image: docker:stable
   script:
+    - echo "Logging in to Docker registry..."
+    - echo "$CI_REGISTRY_PASSWORD" | docker login $CI_REGISTRY -u "$CI_REGISTRY_USER" --password-stdin
     - echo "Building Docker images..."
-    - docker build -t ${DOCKER_USERNAME}/camera:${TAG} ./services/camera
-    - docker build -t ${DOCKER_USERNAME}/motion_detector:${TAG} ./services/motion_detector
-    - docker build -t ${DOCKER_USERNAME}/object_recognizer:${TAG} ./services/object_recognizer
+    - docker build -t $CI_REGISTRY_IMAGE/camera:latest ./services/camera
+    - docker build -t $CI_REGISTRY_IMAGE/motion_detector:latest ./services/motion_detector
+    - docker build -t $CI_REGISTRY_IMAGE/object_recognizer:latest ./services/object_recognizer
+    - echo "Pushing Docker images to registry..."
+    - docker push $CI_REGISTRY_IMAGE/camera:latest
+    - docker push $CI_REGISTRY_IMAGE/motion_detector:latest
+    - docker push $CI_REGISTRY_IMAGE/object_recognizer:latest
   only:
     - main
 
-# Test stage: Run unit tests (optional, can be customized based on your services)
+# Test stage: Runs tests for each service
 test:
   stage: test
+  image: python:3.9
+  before_script:
+    - pip install pytest
   script:
-    - echo "Running tests..."
-    - docker run ${DOCKER_USERNAME}/camera:${TAG} pytest tests/
-    - docker run ${DOCKER_USERNAME}/motion_detector:${TAG} pytest tests/
-    - docker run ${DOCKER_USERNAME}/object_recognizer:${TAG} pytest tests/
+    - echo "Running tests for Camera service..."
+    - pytest ./services/camera/tests
+    - echo "Running tests for Motion Detection service..."
+    - pytest ./services/motion_detector/tests
+    - echo "Running tests for Object Recognizer service..."
+    - pytest ./services/object_recognizer/tests
   only:
     - main
 
-# Deploy stage: Deploy using Docker Compose
+# Deploy stage: Deploys services to Kubernetes
 deploy:
   stage: deploy
+  image: bitnami/kubectl:latest
+  before_script:
+    - echo "$KUBE_CONFIG" | base64 -d > kubeconfig
+    - export KUBECONFIG=$(pwd)/kubeconfig
   script:
-    - echo "Deploying the system..."
-    - if [ "$DEPLOY_ENV" == "local" ]; then
-        docker-compose -f ./deploy/docker-compose/docker-compose.yml down --volumes --remove-orphans;
-        docker-compose -f ./deploy/docker-compose/docker-compose.yml up -d --build --force-recreate;
-      fi
-    - if [ "$DEPLOY_ENV" == "cloud" ]; then
-        docker-compose -f ./deploy/docker-compose/docker-compose.yml down --volumes --remove-orphans;
-        docker-compose -f ./deploy/docker-compose/docker-compose.yml pull --ignore-pull-failures;
-        docker-compose -f ./deploy/docker-compose/docker-compose.yml up -d --build --force-recreate;
-      fi
+    - echo "Deploying to Kubernetes namespace $K8S_NAMESPACE..."
+    - kubectl apply -f k8s/deployment.yaml
+    - kubectl apply -f k8s/service.yaml
+    - echo "Deployment completed."
   only:
     - main
-- 
GitLab