From 744734d08ce8e0793c04548c55dc195e91e74e65 Mon Sep 17 00:00:00 2001
From: Nicolas Pernoud <npernoud@grandlyon.com>
Date: Thu, 26 Jan 2023 10:33:43 +0100
Subject: [PATCH] feat: continuous deployment

---
 .gitlab-ci.yml | 13 +++++++-
 deployment.yml | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 92 insertions(+), 1 deletion(-)
 create mode 100644 deployment.yml

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a5eec8a..33aa4ba 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,5 +1,6 @@
 stages:
   - integration-continue
+  - deploiement-continu
 
 build-et-push-image:
   variables:
@@ -12,4 +13,14 @@ build-et-push-image:
     - docker build --pull --label "created=$(date +'%Y-%m-%d')" -t "$CI_REGISTRY_IMAGE" .
     - docker push "$CI_REGISTRY_IMAGE"
   tags:
-    - build-push-to-registry
\ No newline at end of file
+    - build-push-to-registry
+
+deploiement-sur-openshift:
+  stage: deploiement-continu
+  script:
+    - export NO_PROXY=grandlyon.fr
+    - export KUBECONFIG=$KUBECONFIG_DEV
+    - oc apply -f deployment.yml
+    - oc delete pod -l app=demo-openshift
+  tags:
+    - ns-demo-d01
\ No newline at end of file
diff --git a/deployment.yml b/deployment.yml
new file mode 100644
index 0000000..4731502
--- /dev/null
+++ b/deployment.yml
@@ -0,0 +1,80 @@
+---
+# Déploiement de l'application
+kind: Deployment
+apiVersion: apps/v1
+metadata:
+  name: demo-openshift-deploy
+  namespace: ns-demo-d01
+  labels:
+    app: demo-openshift
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: demo-openshift
+  template:
+    metadata:
+      labels:
+        app: demo-openshift
+    spec:
+      containers:
+        - name: demo-openshift-app
+          image: registry.forge.grandlyon.com/npernoud/demo-openshift:latest
+          imagePullPolicy: Always
+          ports:
+            - containerPort: 8080
+              protocol: TCP
+          readinessProbe:
+            httpGet:
+              path: /
+              port: 8080
+            timeoutSeconds: 1
+          livenessProbe:
+            httpGet:
+              path: /
+              port: 8080
+          ressources:
+            requests:
+              memory: "50Mi"
+              cpu: 100m
+            limits:
+              memory: "128Mi"
+              cpu: 500m
+      imagePullSecrets:
+        - name: forge-secret
+---
+# Service : rends l'application visible par "elle même" au sein du cluster
+apiVersion: v1
+kind: Service
+metadata:
+  name: demo-openshift-service
+  namespace: ns-demo-d01
+spec:
+  selector:
+    app: demo-openshift
+  ports:
+    - name: 8080-tcp
+      protocol: TCP
+      port: 8080
+      targetPort: 8080
+---
+# Route : rends l'application visible à l'extérieur du cluster
+kind: Route
+apiVersion: route.openshift.io/v1
+metadata:
+  name: demo-openshift-route
+  namespace: ns-demo-d01
+  labels:
+    app: demo-openshift
+spec:
+  host: demo-openshift.air.grandlyon.fr
+  to:
+    kind: Service
+    name: demo-openshift-service
+    weight: 100
+  port:
+    targetPort: 8080-tcp
+  tls:
+    termination: edge
+    insecureEdgeTerminationPolicy: Redirect
+---
\ No newline at end of file
-- 
GitLab