From c8c1fc389325f4bd99252c692af8ebd6d0555d69 Mon Sep 17 00:00:00 2001
From: FORESTIER Fabien <fabien.forestier@soprasteria.com>
Date: Thu, 21 Feb 2019 13:59:11 +0100
Subject: [PATCH] Rename env file, add docker image registry management,
 staging build and deploy on manual trigger

---
 .gitlab-ci.yml                                | 82 ++++++++++---------
 angular.json                                  | 10 +--
 docker-compose-development.tests.yml          |  2 +-
 docker-compose.yml                            |  8 +-
 package.json                                  |  6 +-
 ...ironment.rec.ts => environment.staging.ts} |  0
 6 files changed, 58 insertions(+), 50 deletions(-)
 rename src/environments/{environment.rec.ts => environment.staging.ts} (100%)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index cee6215c..b538742b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,68 +4,76 @@ stages:
   - deploy
   - post-deploy
 
-test_development:
+test:
   stage: test
   only: 
-    - master
+    - development
   script:
-    - docker-compose --project-name data-reloaded-dev-testing -f docker-compose-development.tests.yml build
-    - docker-compose --project-name data-reloaded-dev-testing -f docker-compose-development.tests.yml up -d
+    - docker-compose -f docker-compose-development.tests.yml build
+    - docker-compose --project-name portail-data-dev-testing -f docker-compose-development.tests.yml up -d
 
 build_development:
   stage: build
   only:
-    - master
-    - sandbox
+    - development
   script:
-    - export NODE_ENV=DEV
+    - export TAG=dev
     - export NGINX_PORT=8081
-    - docker-compose --project-name data-reloaded-dev build --build-arg env=dev nginx-app
+    - docker-compose build --build-arg env=dev nginx-app
+    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+    - docker-compose push
+
+build_staging:
+  stage: build
+  only:
+    - development
+  when: manual
+  script:
+    - export TAG=staging
+    - export NGINX_PORT=8080
+    - docker-compose build --build-arg env=staging nginx-app
+    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+    - docker-compose push
 
 deploy_development:
   stage: deploy
   only:
-    - master
-    - sandbox
+    - development
   script:
-    - export NODE_ENV=DEV
+    - export TAG=dev
     - export NGINX_PORT=8081
     - export MATOMO_SITE_ID=1
     - export MATOMO_SERVER_URL=https://matomo-intothesky.alpha.grandlyon.com
-    - docker-compose --project-name data-reloaded-dev up -d
+    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+    - docker-compose pull
+    - docker-compose --project-name portail-data-${TAG} up -d
   environment:
     name: development
     url: https://data-reloaded-dev.alpha.grandlyon.com
 
+deploy_staging:
+  stage: deploy
+  only:
+    - development
+  when: manual
+  script:
+  - export TAG=staging
+  - export NGINX_PORT=8080
+  - export MATOMO_SITE_ID=3
+  - export MATOMO_SERVER_URL=https://matomo-intothesky.alpha.grandlyon.com
+  - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+  - docker-compose pull
+  - docker-compose --project-name portail-data-${TAG} up -d
+  environment:
+    name: staging
+    url: https://data-reloaded-rec.alpha.grandlyon.com
+
 code_analysis:
   stage: post-deploy
   only:
-    - master
+    - development
   before_script:
     - export PATH=$PATH:/usr/local/bin/sonar-scanner-3.2.0.1227-linux/bin/
     - export NODE_PATH=$NODE_PATH:`npm root -g`
   script:
-    - sonar-scanner -D sonar.projectKey=data-reloaded-1-neo-dgl2018 -D sonar.sources=.
-
-build_staging:
-  stage: build
-  only:
-    - staging
-  script:
-    - export NODE_ENV=REC
-    - export NGINX_PORT=8080
-    - docker-compose --project-name data-reloaded-rec build --build-arg env=rec nginx-app
-
-deploy_staging:
-  stage: deploy
-  only:
-    - staging
-  script:
-    - export NODE_ENV=REC
-    - export NGINX_PORT=8080
-    - export MATOMO_SITE_ID=3
-    - export MATOMO_SERVER_URL=https://matomo-intothesky.alpha.grandlyon.com
-    - docker-compose --project-name data-reloaded-rec up -d
-  environment:
-    name: staging
-    url: https://data-reloaded-rec.alpha.grandlyon.com
\ No newline at end of file
+    - sonar-scanner -D sonar.projectKey=data-reloaded-1-neo-dgl2018 -D sonar.sources=.
\ No newline at end of file
diff --git a/angular.json b/angular.json
index 9f079276..976d9dbb 100644
--- a/angular.json
+++ b/angular.json
@@ -85,7 +85,7 @@
               "fileReplacements": [
                 {
                   "replace": "src/environments/environment.ts",
-                  "with": "src/environments/environment.rec.ts"
+                  "with": "src/environments/environment.staging.ts"
                 }
               ]
             },
@@ -149,7 +149,7 @@
               "i18nLocale": "en",
               "baseHref": "/en/"
             },
-            "recette-fr": {
+            "staging-fr": {
               "optimization": true,
               "outputHashing": "all",
               "sourceMap": false,
@@ -162,7 +162,7 @@
               "fileReplacements": [
                 {
                   "replace": "src/environments/environment.ts",
-                  "with": "src/environments/environment.rec.ts"
+                  "with": "src/environments/environment.staging.ts"
                 },
                 {
                   "replace": "src/i18n/geosource/geosource.ts",
@@ -187,7 +187,7 @@
               "i18nLocale": "fr",
               "baseHref": "/fr/"
             },
-            "recette-en": {
+            "staging-en": {
               "optimization": true,
               "outputHashing": "all",
               "sourceMap": false,
@@ -200,7 +200,7 @@
               "fileReplacements": [
                 {
                   "replace": "src/environments/environment.ts",
-                  "with": "src/environments/environment.rec.ts"
+                  "with": "src/environments/environment.staging.ts"
                 }
               ],
               "outputPath": "dist/en",
diff --git a/docker-compose-development.tests.yml b/docker-compose-development.tests.yml
index 5d6a0a97..28307883 100644
--- a/docker-compose-development.tests.yml
+++ b/docker-compose-development.tests.yml
@@ -1,4 +1,4 @@
-version: "2"
+version: "3"
 
 services:
   nginx-test:
diff --git a/docker-compose.yml b/docker-compose.yml
index 86cb7bff..eced1698 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,11 +1,11 @@
-version: "2"
+version: "3"
 
 services:
   nginx-app:
-    container_name: nginx-app-${NODE_ENV}
+    container_name: nginx-app-${TAG}
     restart: unless-stopped
-    build:
-      context: ./
+    build: .
+    image: registry.alpha.grandlyon.com/refonte-data/portail-data:${TAG}
     volumes: 
       - ./nginx.conf.template:/etc/nginx/nginx.conf.template
     ports: 
diff --git a/package.json b/package.json
index 88eeef01..dfd1652e 100644
--- a/package.json
+++ b/package.json
@@ -7,9 +7,9 @@
     "start-aot-fr": "ng serve --configuration=aot-fr",
     "start-aot-en": "ng serve --configuration=aot-en",
     "build-i18n:dev": "for lang in en fr; do ng build --prod --build-optimizer --configuration=development-$lang; done",
-    "build-i18n:rec": "for lang in en fr; do ng build --prod --build-optimizer --configuration=recette-$lang; done",
-    "win-build-i18n:fr": "ng build --prod --build-optimizer --configuration=recette-fr",
-    "win-build-i18n:en": "ng build --prod --build-optimizer --configuration=recette-en",
+    "build-i18n:rec": "for lang in en fr; do ng build --prod --build-optimizer --configuration=staging-$lang; done",
+    "win-build-i18n:fr": "ng build --prod --build-optimizer --configuration=staging-fr",
+    "win-build-i18n:en": "ng build --prod --build-optimizer --configuration=staging-en",
     "win-build-i18n": "npm run win-build-i18n:en && npm run win-build-i18n:fr",
     "test": "ng test --browsers=Chrome --code-coverage=true",
     "test:ci": "ng test --browsers=ChromeHeadlessCI --code-coverage=true --watch=false",
diff --git a/src/environments/environment.rec.ts b/src/environments/environment.staging.ts
similarity index 100%
rename from src/environments/environment.rec.ts
rename to src/environments/environment.staging.ts
-- 
GitLab