diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..e2814778131579de7bbcac4a686b26d27e9532b9 --- /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 0000000000000000000000000000000000000000..adf7e8a42cbb78e3d9311a680550ab9be28c087c --- /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 0000000000000000000000000000000000000000..9c8c11627882ab835e23a1b484f2d0b2c153ef26 --- /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 d1fd70032a7c6b715f43c833303485a417475112..a067f27c606d6a1da1b0f7d8fbb7567eb29a9b33 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 0000000000000000000000000000000000000000..ac8bb5d301bbb87ad004cc80d7fc07b692fd6996 --- /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 f9777c92986f09519065d4c3da6e16c5d5dfc1e3..9701c923de07065a0f0d9e36fbe3a0bb08fb6049 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 0000000000000000000000000000000000000000..237de6bf4aaf19ea163953d5bae8f68cfa71ac51 --- /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