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