From 7d5ed56dea893d3b3aff5c1b6cbf2f751a87de78 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Pailharey?= <rpailharey@grandlyon.com>
Date: Tue, 11 Apr 2023 16:00:02 +0200
Subject: [PATCH] cicd: automated client deployment

---
 .gitlab-ci.yml                                | 37 +++++++++++++++++++
 .../ecolyo-agent-client-deployment.yml        | 27 ++++++++++++++
 k8s/services/ecolyo-agent-client-service.yml  | 12 ++++++
 3 files changed, 76 insertions(+)
 create mode 100644 k8s/deployments/ecolyo-agent-client-deployment.yml
 create mode 100644 k8s/services/ecolyo-agent-client-service.yml

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3c2465f2..a509cf1e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -12,6 +12,7 @@ variables:
 stages:
   - quality
   - build
+  - deploy
 
 build-test:
   stage: build
@@ -63,3 +64,39 @@ sonarqube:
       -Dsonar.login=${SONAR_TOKEN}
       -Dsonar.cpd.exclusions=tests/**,src/**/*.spec.ts*
       -Dsonar.qualitygate.wait=true
+
+deploy_rec:
+  stage: deploy
+  before_script:
+    - NAMESPACE=ns-ecolyo-bo-r01-syn
+    - sed -i "s/{{IMAGE_TAG}}/dev/" ./k8s/deployments/ecolyo-agent-client-deployment.yml
+    - export KUBECONFIG=$KUBE_CONFIG_REC
+  script:
+    - find k8s/ -name '*.yml' -exec sed -i "s/{{NS}}/$NAMESPACE/g" {} \;
+
+    - oc create secret -n $NAMESPACE docker-registry llle-project --docker-server=$CI_REGISTRY --docker-username=llle-project --docker-password=$TOKEN_PULL_IMAGE --dry-run=client -o yaml | oc apply -f -
+
+    - oc apply -f k8s/deployments
+    - oc apply -f k8s/services
+  tags:
+    - ns-ecolyo-bo-r01-syn
+  only:
+    - dev
+
+deploy_prod:
+  stage: deploy
+  before_script:
+    - NAMESPACE=ns-ecolyo-bo-p01-syn
+    - sed -i "s/{{IMAGE_TAG}}/master/" ./k8s/deployments/ecolyo-agent-client-deployment.yml
+    - export KUBECONFIG=$KUBE_CONFIG_PROD
+  script:
+    - find k8s/ -name '*.yml' -exec sed -i "s/{{NS}}/$NAMESPACE/g" {} \;
+
+    - oc create secret -n $NAMESPACE docker-registry llle-project --docker-server=$CI_REGISTRY --docker-username=llle-project --docker-password=$TOKEN_PULL_IMAGE --dry-run=client -o yaml | oc apply -f -
+
+    - oc apply -f k8s/deployments
+    - oc apply -f k8s/services
+  tags:
+    - ns-ecolyo-bo-p01-syn
+  only:
+    - master
diff --git a/k8s/deployments/ecolyo-agent-client-deployment.yml b/k8s/deployments/ecolyo-agent-client-deployment.yml
new file mode 100644
index 00000000..d4c81ef1
--- /dev/null
+++ b/k8s/deployments/ecolyo-agent-client-deployment.yml
@@ -0,0 +1,27 @@
+---
+kind: Deployment
+apiVersion: apps/v1
+metadata:
+  name: ecolyo-agent-client
+  namespace: {{NS}}
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: ecolyo-agent-client
+  template:
+    metadata:
+      labels:
+        app: ecolyo-agent-client
+    spec:
+      containers:
+        - name: ecolyo-agent-client
+          image: registry.forge.grandlyon.com/web-et-numerique/factory/llle_project/backoffice-client:{{IMAGE_TAG}}
+          imagePullPolicy: Always
+          ports:
+            - containerPort: 8080
+              protocol: TCP
+      nodeSelector:
+        node-role.kubernetes.io/worker: ''
+      imagePullSecrets:
+        - name: llle-project
diff --git a/k8s/services/ecolyo-agent-client-service.yml b/k8s/services/ecolyo-agent-client-service.yml
new file mode 100644
index 00000000..f9a6defa
--- /dev/null
+++ b/k8s/services/ecolyo-agent-client-service.yml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: ecolyo-agent-client-service
+  namespace: {{NS}}
+spec:
+  selector:
+    app: ecolyo-agent-client
+  ports:
+    - protocol: TCP
+      port: 80
+      targetPort: 8080
-- 
GitLab