diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f2eb1bd3c5c336c62d110d5a93bb6624ab7de367..4868ca4a151976f678844d6a094958e6290de1a3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,124 +1,9 @@ -stages: - - prepare - - test - - build - - dockerize - - deploy - -default: - image: nikolaik/python-nodejs:python3.11-nodejs19-alpine - cache: &cache - key: - files: - - pnpm-lock.yaml - paths: - - .pnpm-store - - ./node_modules/ - - ./apps/web/node_modules/ - - ./libs/shared/node_modules/ - policy: pull - -before_script: - - npm i -g pnpm - - pnpm config set store-dir .pnpm-store - - apk add --no-cache --virtual .build-deps build-base g++ cairo-dev jpeg-dev pango-dev giflib-dev - - apk add --no-cache --virtual .runtime-deps cairo jpeg pango giflib - -install:js: - stage: prepare - interruptible: true - cache: - <<: *cache - policy: push - script: - - pnpm install -# only: -# changes: -# - pnpm-lock.yaml -# - .gitlab-ci.yml -# - apps/**/* -# - libs/**/* - # refs: - # - main - # - merge_requests - -.distributed: - interruptible: true - cache: - <<: *cache - before_script: - - npm i -g pnpm - - apk add --update git - artifacts: - paths: - - .pnpm-store - rules: - # - if: $CI_COMMIT_BRANCH == "main" - # - if: $CI_COMMIT_BRANCH == "merge_requests" - - changes: - - apps/**/* - - libs/**/* - - .gitlab-ci.yml - -lint: - stage: test - extends: .distributed - script: - - pnpm lint - -test: - stage: test - extends: .distributed - script: - - pnpm test - -build-prod: - stage: build - extends: .distributed - rules: - # - if: $CI_COMMIT_BRANCH == "main" - - changes: - - apps/**/* - - libs/**/* - - .gitlab-ci.yml - artifacts: - paths: - - .pnpm-store - - dist/apps/web - script: - - pnpm build - -build-docker: - image: docker:latest - services: - - name: docker:dind - alias: dockerdaemon - before_script: - - '' - stage: dockerize - tags: - - docker - # only: - # - main - script: - - echo "$CI_REGISTRY_PASSWORD" | docker login https://$CI_REGISTRY --username $CI_REGISTRY_USER --password-stdin - - cd ./apps/web - - docker build --progress plain -t $CI_REGISTRY/graphpolaris/frontend:latest . - - docker push $CI_REGISTRY/graphpolaris/frontend:latest - dependencies: - - build-prod - variables: - # Tell docker CLI how to talk to Docker daemon. - DOCKER_HOST: tcp://dockerdaemon:2375/ - # Use the overlayfs driver for improved performance. - DOCKER_DRIVER: overlay2 - # Disable TLS since we're running inside local network. - DOCKER_TLS_CERTDIR: "" - -# deploy: -# stage: deploy -# script: -# - ./deploy.sh -# # only: -# # - main -# environment: production +variables: + CONTAINER_IMAGE: "graphpolaris/frontend" + IMAGE_TAG_HELM_FILE: "helm/staging/graphpolaris-frontend/values.yaml" + IMAGE_TAG_HELM_FILE_VARIABLE: "image.tag" + +include: + - project: 'graphpolaris/pipelines' + ref: main + file: 'docker-build-push.yml' diff --git a/Dockerfile b/Dockerfile index b9ba18921c5640e3c63e289fc41b00281b9324cd..85f1344cf3a5d5a225bc03a4a2387d1d9ac741c2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,18 @@ -# Prepare nginx -FROM nginx:1.19-alpine +FROM node:lts-slim AS base +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable +COPY . /app WORKDIR /app -COPY ./apps/web/dist /usr/share/nginx/html +FROM base AS build +RUN pnpm install --frozen-lockfile +# Fixes: FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory +ENV NODE_OPTIONS="--max-old-space-size=4096" +RUN pnpm run build -RUN rm /etc/nginx/conf.d/default.conf -COPY nginx/nginx.conf /etc/nginx/conf.d - -# Fire up nginx +FROM nginx:1.25-alpine +COPY --from=build /app/apps/web/dist /usr/share/nginx/html +COPY ./nginx/nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]