From f3c344572c2ec9515e6a4f956883896f8863bd8c Mon Sep 17 00:00:00 2001 From: guidezSeb Date: Sat, 16 Jan 2021 13:59:01 +0100 Subject: [PATCH] :construction_worker: add CI + dockerfile --- .circleci/config.yml | 101 +++++++++++++++++++++++++++++++++++++++++++ Dockerfile | 11 +++++ 2 files changed, 112 insertions(+) create mode 100644 .circleci/config.yml create mode 100644 Dockerfile diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..3c0d2d4 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,101 @@ +version: 2.1 +jobs: + install: + docker: + - image: circleci/node:9.5 + steps: + - checkout + - restore_cache: + keys: + - yarn-packages-{{ checksum "yarn.lock" }}-{{ .Environment.CACHE_VERSION }} + - yarn-packages + - run: yarn global add node-gyp && yarn install + - save_cache: + key: yarn-packages-{{ checksum "yarn.lock" }}-{{ .Environment.CACHE_VERSION }} + paths: + - node_modules + test: + docker: + - image: circleci/node:9.5 + steps: + - checkout + - restore_cache: + keys: + - yarn-packages-{{ checksum "yarn.lock" }}-{{ .Environment.CACHE_VERSION }} + - run: + name: Launch the test + command: yarn test + prod-build: + docker: + - image: circleci/node:9.5 + steps: + - checkout + - restore_cache: + keys: + - yarn-packages-{{ checksum "yarn.lock" }}-{{ .Environment.CACHE_VERSION }} + - run: + name: Build to production + command : yarn run build + - run: + name: Copy to workspace + command: cp dist/ /tmp/dist -r + - store_artifacts: + path: /tmp/dist + - persist_to_workspace: + root: /tmp + paths: + - dist + deploy-netlify: + docker: + - image: circleci/node:9.5 + working_directory: ~/deploy-netlfify + steps: + - attach_workspace: + at: /tmp + - run: + name: install cli + command: sudo npm install -g --silent netlify-cli + - run: + name: Deploy app + command: netlify deploy --prod --auth $NETLIFY_AUTH_TOKEN --dir=/tmp/dist --site $NETLIFY_SITE_ID + docker-build-push: + working_directory: /dockerapp + docker: + - image: docker:17.05.0-ce-git + steps: + - checkout + - setup_remote_docker + - run: + name: dockerize the app + command: docker build --cache-from=app -t app . + - run: + name: Login to docker hub + command: docker login -u $DOCKER_HUB_USERNAME -p $DOCKER_HUB_PASSWORD + - run: + name: add tag app to docker hub build num + command: docker tag app $DOCKER_HUB_USERNAME/tp-devops-front:$CIRCLE_BUILD_NUM + - run: + name: add tag app to docker hub latest + command: docker tag app $DOCKER_HUB_USERNAME/tp-devops-front:latest + - run: + name: Publish app to docker hub build num + command: docker push $DOCKER_HUB_USERNAME/tp-devops-front:$CIRCLE_BUILD_NUM + - run: + name: Publish app to docker hub latest + command: docker push $DOCKER_HUB_USERNAME/tp-devops-front:latest + +workflows: + build_deploy: + jobs: + - install + - prod-build: + requires: + - install + - deploy-netlify: + context: netlify_devops_tp_final + requires: + - prod-build + - docker-build-push: + context: Docker + requires: + - install \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..08fc84c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM node:9.5 + +WORKDIR /app + +RUN yarn install + +COPY . . + +EXPOSE 2020 + +CMD ["yarn", "serve"] \ No newline at end of file