From 63829f3d077ff3c4b74e25f88cdd4c3b909d0331 Mon Sep 17 00:00:00 2001
From: Bilel El Yaagoubi <bilel.el-yaagoubi@student-cs.fr>
Date: Sun, 5 Jun 2022 00:37:31 +0200
Subject: [PATCH] Configure CI

---
 .gitlab-ci.yml         | 57 ++++++++++++++++++++++++++++++++++++++++++
 backend/.dockerignore  |  5 ++++
 backend/Dockerfile     | 16 ++++++++++++
 backend/package.json   |  3 ++-
 frontend/.dockerignore |  7 ++++++
 frontend/.gitignore    |  1 +
 frontend/Dockerfile    | 22 ++++++++++++++++
 7 files changed, 110 insertions(+), 1 deletion(-)
 create mode 100644 .gitlab-ci.yml
 create mode 100644 backend/.dockerignore
 create mode 100644 backend/Dockerfile
 create mode 100644 frontend/.dockerignore
 create mode 100644 frontend/Dockerfile

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..e281477
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,57 @@
+stages:
+  - lint
+  - build
+
+.eslint:
+  image: node:16.14.0-alpine
+  stage: lint
+  script:
+    - cd $CONTEXT
+    # install packages
+    - npm install
+    # Run eslint
+    - npm run lint
+
+.build:
+  stage: build
+  rules:
+    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+    - if: $CI_COMMIT_BRANCH
+  image:
+    name: gcr.io/kaniko-project/executor:debug
+    entrypoint: [""]
+  script:
+    - if [ $CI_COMMIT_BRANCH = $CI_DEFAULT_BRANCH ] ; then
+    - TAG="latest" ; else
+    - TAG=$CI_COMMIT_BRANCH ; fi
+    - mkdir -p /kaniko/.docker
+    - echo "{\"auths\":{\"${REGISTRY}\":{\"auth\":\"$(printf "%s:%s" "robot\$${REGISTRY_USERNAME}" "${REGISTRY_PASSWORD}" | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json
+    - >-
+      /kaniko/executor
+      --context $CONTEXT
+      --dockerfile $CONTEXT/Dockerfile
+      --destination "${REGISTRY}/$IMAGE_NAME:${TAG}"
+      --cache
+
+lint-front:
+  extends: .eslint
+  variables:
+    CONTEXT: frontend/
+
+lint-back:
+  extends: .eslint
+  variables:
+    CONTEXT: backend/
+
+build-front:
+  extends: .build
+  variables:
+    CONTEXT: frontend/
+    IMAGE_NAME: front
+
+build-back:
+  allow_failure: true
+  extends: .build
+  variables:
+    CONTEXT: backend/
+    IMAGE_NAME: back
diff --git a/backend/.dockerignore b/backend/.dockerignore
new file mode 100644
index 0000000..adf7e8a
--- /dev/null
+++ b/backend/.dockerignore
@@ -0,0 +1,5 @@
+.dockerignore
+.env.example
+.eslintrc.js
+Dockerfile
+.gitignore
diff --git a/backend/Dockerfile b/backend/Dockerfile
new file mode 100644
index 0000000..9c8c116
--- /dev/null
+++ b/backend/Dockerfile
@@ -0,0 +1,16 @@
+FROM node:12.4
+
+WORKDIR /usr/src/app
+
+COPY package.json package-lock.json ./
+
+RUN npm install
+
+COPY . .
+
+RUN touch .env
+
+EXPOSE 3000
+
+ENTRYPOINT echo "PORT=$PORT" >> .env && echo "NODE_ENV=$NODE_ENV" >> .env \
+                && echo "MONGO_DB_URL=$MONGO_DB_URL" >> .env && node server.js
\ No newline at end of file
diff --git a/backend/package.json b/backend/package.json
index d1fd700..a067f27 100644
--- a/backend/package.json
+++ b/backend/package.json
@@ -5,7 +5,8 @@
   "scripts": {
     "dev": "dotenv nodemon ./server.js",
     "start": "dotenv node ./server.js",
-    "lint": "eslint . --fix"
+    "lint": "eslint . ",
+    "format": "eslint . --fix"
   },
   "dependencies": {
     "cors": "^2.8.5",
diff --git a/frontend/.dockerignore b/frontend/.dockerignore
new file mode 100644
index 0000000..ac8bb5d
--- /dev/null
+++ b/frontend/.dockerignore
@@ -0,0 +1,7 @@
+.dockerignore
+.env.development
+.eslintrc.js
+.prettierrc
+Dockerfile
+node_modules
+dist
\ No newline at end of file
diff --git a/frontend/.gitignore b/frontend/.gitignore
index f9777c9..9701c92 100644
--- a/frontend/.gitignore
+++ b/frontend/.gitignore
@@ -5,3 +5,4 @@ node_modules
 # local env files
 .env.local
 .env.*.local
+.env
\ No newline at end of file
diff --git a/frontend/Dockerfile b/frontend/Dockerfile
new file mode 100644
index 0000000..237de6b
--- /dev/null
+++ b/frontend/Dockerfile
@@ -0,0 +1,22 @@
+FROM node:16 as build
+
+WORKDIR /frontend
+
+COPY package.json package-lock.json ./
+
+RUN npm install
+
+COPY . .
+
+RUN touch .env
+
+RUN echo "VUE_APP_BACKEND_BASE_URL=webroot.example.com" >> .env
+
+RUN npm run build
+
+FROM nginxinc/nginx-unprivileged:latest
+
+COPY --chown=nginx --from=build /frontend/dist/ /usr/share/nginx/html
+
+ENTRYPOINT sed -i -e "s/webroot.example.com/$VUE_APP_BACKEND_BASE_URL/g" /usr/share/nginx/html/js/app.*.js \
+        && nginx -g 'daemon off;'
\ No newline at end of file
-- 
GitLab