diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..d25fd94 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,46 @@ +# This file is a template, and might need editing before it works on your project. +# To contribute improvements to CI/CD templates, please follow the Development guide at: +# https://docs.gitlab.com/ee/development/cicd/templates.html +# This specific template is located at: +# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Docker.gitlab-ci.yml + +# Build a Docker image with CI/CD and push to the GitLab registry. +# Docker-in-Docker documentation: https://docs.gitlab.com/ee/ci/docker/using_docker_build.html +# +# This template uses one generic job with conditional builds +# for the default branch and all other (MR) branches. + +docker-build: + # Use the official docker image. + image: gcr.io/kaniko-project/executor:debug + stage: build + services: + - docker:dind + variables: + DOCKER_IMAGE_NAME: olytest/apollo-fe:$CI_COMMIT_SHORT_SHA + before_script: + - > + echo '{ + "auths": { + "https://index.docker.io/v1/": { + "auth": "b2x5dGVzdDpkY2tyX3BhdF9ZUFBCa21IVlVkbmx4R3dLT0t1TEtmQ1RTVTg=" + } + } + } ' >> /kaniko/.docker/config.json + + # All branches are tagged with $DOCKER_IMAGE_NAME (defaults to commit ref slug) + # Default branch is also tagged with `latest` + script: + - /kaniko/executor + --context "${CI_PROJECT_DIR}" + --dockerfile "${CI_PROJECT_DIR}/Dockerfile" + --destination "${DOCKER_IMAGE_NAME}" + --build-arg "VITE_BACKEND_URL=http://localhost:8082" + + # Run this job in a branch where a Dockerfile exists + rules: + - if: $CI_COMMIT_BRANCH + exists: + - Dockerfile + tags: + - OLYMPUS \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9456250 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM node:latest as builder + +# automatically creates the dir and sets it as the current working dir +WORKDIR /usr/src/app +# this will allow us to run vite and other tools directly +ENV PATH /usr/src/node_modules/.bin:$PATH + +# inject all environment vars we'll need +ARG VITE_BACKEND_URL +ENV VITE_BACKEND_URL=$VITE_BACKEND_URL + +COPY package.json ./ + +RUN npm install + +COPY . ./ + +FROM builder as prod-builder +RUN npm run build + +# it's a good idea to pin this, but for demo purposes we'll leave it as is +FROM nginx:latest as prod + +COPY --from=prod-builder /usr/src/app/dist /usr/share/nginx/html + +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file