From 18752f0884143b3911a5ac9d8f0481712686d183 Mon Sep 17 00:00:00 2001
From: Yanis Hessini <hessini.yanis@gmail.com>
Date: Thu, 2 Feb 2023 16:27:52 +0100
Subject: [PATCH] CI CD avec Arise

---
 .gitignore         |  3 ++-
 .gitlab-ci.yml     | 34 ++++++++++++++++++++++++++++++++++
 docker-compose.yml | 25 ++++++++++++++++++++-----
 dockerfile_adminer |  1 +
 dockerfile_nginx   |  1 +
 www/data/memo.json |  2 +-
 www/test.php       | 24 ++++++++++++++++++++++++
 7 files changed, 83 insertions(+), 7 deletions(-)
 create mode 100644 .gitlab-ci.yml
 create mode 100644 dockerfile_adminer
 create mode 100644 dockerfile_nginx
 create mode 100644 www/test.php

diff --git a/.gitignore b/.gitignore
index 0794bd9..45d5ad9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
 log/access.log
-log/error.log
\ No newline at end of file
+log/error.log
+composer/
\ No newline at end of file
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..2a8ba28
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,34 @@
+image: debian:latest
+
+stages:
+  - validate
+  - build
+  - deploy
+
+validate_job:  
+  stage: validate
+  script: 
+    - echo "Testing with PHP Unit"
+
+build_job:
+  stage: build
+  script: 
+    - echo "Building with Docker"
+    - docker-compose build
+    - docker-compose push
+    - echo "Docker images pushed to Docker Hub"
+
+deploy_job:
+  stage: deploy
+  before_script:
+    - apt update
+    - apt install sshpass
+  script: 
+    - echo "Deploying to OVH Server"
+    - sshpass -p 'fipa' ssh root@141.94.166.114
+    - cd nosql-memo
+    - git pull
+    - docker-compose pull
+    - docker-compose up -d
+
+
diff --git a/docker-compose.yml b/docker-compose.yml
index 5c25480..16d5f73 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -2,7 +2,9 @@ version: '3.9'
 
 services:
   nginx-memo:
-    image: nginx:stable-alpine
+    build:
+      dockerfile: dockerfile_nginx
+    image: itsjanis/nginx-memo:latest
     container_name: nginx-memo
     volumes:
     - "./www:/usr/share/nginx/html:ro"
@@ -17,6 +19,7 @@ services:
   php:
     build:
       dockerfile: dockerfile_php
+    image: itsjanis/php-memo:latest
     depends_on:
       - redis-memo
       - postgresql-memo
@@ -30,11 +33,13 @@ services:
   postgresql-memo:
     build:
       dockerfile: dockerfile_postgres
+    image: itsjanis/postgresql-memo:latest
     restart: unless-stopped
     container_name: postgresql-memo
     environment:
       POSTGRES_USER: admin
       POSTGRES_PASSWORD: password
+      POSTGRES_DB: memo
     ports:
     - published: 5432
       target: 5432
@@ -46,12 +51,12 @@ services:
 
   redis-memo:
     build:
-      dockerfile: dockerfile_redis
-      
+      dockerfile: dockerfile_redis    
+    image: itsjanis/redis-memo:latest  
     restart: unless-stopped
     container_name: redis-memo
     ports:
-    - published: 6379
+    - published: 6380
       target: 6379
     volumes:
     - ./www/data/redis_data/taches.redis:/redisdata/data/taches.redis
@@ -63,7 +68,9 @@ services:
 
 
   adminer-memo:
-    image: adminer
+    build:
+      dockerfile: dockerfile_adminer
+    image: itsjanis/adminer-memo:latest
     restart: unless-stopped
     container_name: adminer-memo
     ports:
@@ -71,6 +78,14 @@ services:
       target: 8080
     networks:
       - databases
+
+  # composer-memo:
+  #   image: composer:1.9.3
+  #   environment:
+  #     - COMPOSER_CACHE_DIR=/app/var/cache/composer
+  #   volumes:
+  #     - ./composer:/app
+  #   # restart: never
   
 volumes:
   postgres_data:
diff --git a/dockerfile_adminer b/dockerfile_adminer
new file mode 100644
index 0000000..63adb13
--- /dev/null
+++ b/dockerfile_adminer
@@ -0,0 +1 @@
+FROM adminer
\ No newline at end of file
diff --git a/dockerfile_nginx b/dockerfile_nginx
new file mode 100644
index 0000000..e05ebda
--- /dev/null
+++ b/dockerfile_nginx
@@ -0,0 +1 @@
+FROM nginx:stable-alpine
\ No newline at end of file
diff --git a/www/data/memo.json b/www/data/memo.json
index 1609ee2..a8c4296 100644
--- a/www/data/memo.json
+++ b/www/data/memo.json
@@ -1 +1 @@
-{"5defb94651ea3":{"texte":"finir le tp de prog web","accomplie":true,"dateAjout":"2019-12-10T15:27:02.000Z"},"5defb9a88e9a3":{"texte":"finir le tp d'animation ","accomplie":false,"dateAjout":"2019-12-10T15:28:40.000Z"},"5defbc36499e1":{"texte":"finir le tp de design","accomplie":true,"dateAjout":"2019-12-10T15:39:34.000Z"},"5defbc4b20c23":{"texte":"finir le tp de bdd","accomplie":false,"dateAjout":"2019-12-10T15:39:55.000Z"},"5defbc7418ff8":{"texte":"finir le tp de vid\u00e9o ","accomplie":true,"dateAjout":"2019-12-10T15:40:36.000Z"},"63763c41d6d4f":{"texte":"pr\u00e9parer la pr\u00e9sentation d'anglais","accomplie":true,"dateAjout":"2022-11-17 13:50:57"},"63764775e6206":{"texte":"finir projet nosql","accomplie":false,"dateAjout":"2022-11-17 14:38:45"},"637648750c469":{"texte":"finir projet web services","accomplie":false,"dateAjout":"2022-11-17 14:43:01"},"637648842e03f":{"texte":"appr\u00e9cier la puissance de docker","accomplie":false,"dateAjout":"2022-11-17 14:43:16"},"637652f339886":{"texte":"finir le projet nosql","accomplie":false,"dateAjout":"2022-11-17 15:27:47"},"6376543653b77":{"texte":"finir la pr\u00e9sentation en anglais","accomplie":true,"dateAjout":"2022-11-17 15:33:10"},"6376587328a8d":{"texte":"test","accomplie":false,"dateAjout":"2022-11-17 15:51:15"},"6376543154534":{"accomplie":false},"6376542bcaa53":{"accomplie":false},"6379276f2048f":{"texte":"test","accomplie":false,"dateAjout":"2022-11-19 18:58:55"},"63792c429807b":{"texte":"test","accomplie":false,"dateAjout":"2022-11-19 19:19:30"},"6379310f77d68":{"texte":"test","accomplie":false,"dateAjout":"2022-11-19 19:39:59"}}
\ No newline at end of file
+{"5defb94651ea3":{"texte":"finir le tp de prog web","accomplie":true,"dateAjout":"2019-12-10T15:27:02.000Z"},"5defb9a88e9a3":{"texte":"finir le tp d'animation ","accomplie":false,"dateAjout":"2019-12-10T15:28:40.000Z"},"5defbc36499e1":{"texte":"finir le tp de design","accomplie":true,"dateAjout":"2019-12-10T15:39:34.000Z"},"5defbc4b20c23":{"texte":"finir le tp de bdd","accomplie":false,"dateAjout":"2019-12-10T15:39:55.000Z"},"5defbc7418ff8":{"texte":"finir le tp de vid\u00e9o ","accomplie":true,"dateAjout":"2019-12-10T15:40:36.000Z"},"63763c41d6d4f":{"texte":"pr\u00e9parer la pr\u00e9sentation d'anglais","accomplie":true,"dateAjout":"2022-11-17 13:50:57"},"63764775e6206":{"texte":"finir projet nosql","accomplie":false,"dateAjout":"2022-11-17 14:38:45"},"637648750c469":{"texte":"finir projet web services","accomplie":false,"dateAjout":"2022-11-17 14:43:01"},"637648842e03f":{"texte":"appr\u00e9cier la puissance de docker","accomplie":false,"dateAjout":"2022-11-17 14:43:16"},"637652f339886":{"texte":"finir le projet nosql","accomplie":false,"dateAjout":"2022-11-17 15:27:47"},"6376543653b77":{"texte":"finir la pr\u00e9sentation en anglais","accomplie":true,"dateAjout":"2022-11-17 15:33:10"},"6376587328a8d":{"texte":"test","accomplie":false,"dateAjout":"2022-11-17 15:51:15"},"6376543154534":{"accomplie":false},"6376542bcaa53":{"accomplie":true},"6379276f2048f":{"texte":"test","accomplie":false,"dateAjout":"2022-11-19 18:58:55"},"63792c429807b":{"texte":"test","accomplie":false,"dateAjout":"2022-11-19 19:19:30"},"6379310f77d68":{"texte":"test","accomplie":false,"dateAjout":"2022-11-19 19:39:59"},"63caa478534b2":{"accomplie":true}}
\ No newline at end of file
diff --git a/www/test.php b/www/test.php
new file mode 100644
index 0000000..bdaabcc
--- /dev/null
+++ b/www/test.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+// Path: nosql-memo\www\test.php
+
+use PHPUnit\Framework\TestCase;
+// test de la connexion à la base de données PostgreSQL
+
+final class databases {
+	public function testPostgres(): void {
+		$config = "pgsql:host=postgresql-memo;port=5432;dbname=postgres";
+		$username = "admin";
+		$password = "password";
+
+		$db_connection = new PDO($config, $username, $password);
+
+		$this->assertInstanceOf(PDO::class, $db_connection);
+	}
+
+	public function testRedis(): void {
+		$redis = new Redis();
+		$redis->connect('redis-memo', 6379);
+
+		$this->assertInstanceOf(Redis::class, $redis);
+	}
+}
\ No newline at end of file
-- 
GitLab