From acd02deb0816010fa5f30578d307419da8284f5a Mon Sep 17 00:00:00 2001 From: Blair Vanderlugt Date: Sat, 10 Apr 2021 12:17:16 -0700 Subject: [PATCH 1/2] builds for docker --- Dockerfile | 12 ++++++------ nginx.conf | 47 ++++++++++++++++++++++++++++++++++++++++------- set-env.ts | 4 ---- 3 files changed, 46 insertions(+), 17 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1d8fa2a..39ebebe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,3 @@ -### STAGE 1: Build ### # defining version of the base image FROM node:alpine as build @@ -6,15 +5,16 @@ FROM node:alpine as build WORKDIR /app # copying the json files into the image -COPY package*.json ./ +COPY package*.json . +COPY patch-webpack.js . RUN npm install - # copying rest of project + COPY . . # running build script -RUN npm run build --prod +RUN npm run build:prod ### STAGE 2: Setup ### # defining nginx image version @@ -27,8 +27,8 @@ RUN rm -rf /usr/share/nginx/html/* COPY --from=build /app/dist/cic-staff-client /usr/share/nginx/html # copy nginx configuration file -COPY nginx.conf /etc/nginx/conf.d/default.conf +COPY nginx.conf /etc/nginx/ -EXPOSE 80 443 +EXPOSE 80 CMD [ "nginx", "-g", "daemon off;" ] diff --git a/nginx.conf b/nginx.conf index 1a12d7b..7cdc644 100644 --- a/nginx.conf +++ b/nginx.conf @@ -1,8 +1,41 @@ -server { - listen 80; - location / { - root /usr/share/nginx/html; - index index.html index.htm; - try_files $uri $uri/ /index.html =404; - } + +user nginx; +worker_processes 1; + +error_log /var/log/nginx/error.log warn; +pid /var/run/nginx.pid; + + +events { + worker_connections 1024; +} + + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + #tcp_nopush on; + + keepalive_timeout 65; + + #gzip on; + + include /etc/nginx/conf.d/*.conf; + + server { + listen 80; + location / { + root /usr/share/nginx/html; + index index.html index.htm; + try_files $uri $uri/ /index.html =404; + } + } } diff --git a/set-env.ts b/set-env.ts index fce0e37..754d897 100644 --- a/set-env.ts +++ b/set-env.ts @@ -36,10 +36,6 @@ function setConfigs(configs): void { }); } -if (!process.env.CIC_REGISTRY_ADDRESS) { - console.error(colors.red('All the required environment variables were not provided!')); - process.exit(-1); -} if (isProduction) { console.log(colors.cyan('Running in production environment!')); From f7f251a2eb567516874e355b9cae04bfaa93ded6 Mon Sep 17 00:00:00 2001 From: Blair Vanderlugt Date: Sat, 10 Apr 2021 19:35:50 +0000 Subject: [PATCH 2/2] Update .gitlab-ci.yml --- .gitlab-ci.yml | 218 ++++++++++++++++++++++++++++--------------------- 1 file changed, 125 insertions(+), 93 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fcd7d56..a3ab6bb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,102 +1,134 @@ stages: - - install - build - - test - - package + # - test + # - package -cache: - key: - files: - - package-lock.json - paths: - - node_modules/ - policy: pull - -image: node:alpine +image: + name: gcr.io/kaniko-project/executor:debug + entrypoint: [""] variables: - PROJECT_PATH: "$CI_PROJECT_DIR" - APP_OUTPUT_PATH: "$CI_PROJECT_DIR/dist/cic-staff-client" - OUTPUT_PATH: "$CI_PROJECT_DIR/dist" - CLI_VERSION: 10.2.0 + KANIKO_CACHE_ARGS: "--cache=true --cache-copy-layers=true --cache-ttl=24h" -install_dependencies: - stage: install - tags: - - docker - script: - - npm install -g @angular/cli@$CLI_VERSION - - npm install - only: - refs: - - merge_requests - - master - changes: - - package-lock.json - -build: +ng_build_merge_request: stage: build - tags: - - docker - script: - - npm ng build --prod - after_script: - - mv $PROJECT_PATH/nginx.conf $PROJECT_PATH/default.conf - - cp $PROJECT_PATH/default.conf $APP_OUTPUT_PATH - - cp $PROJECT_PATH/Dockerfile $APP_OUTPUT_PATH - artifacts: - name: "cic-staff-client-pipeline" - expire_in: 1 days - paths: - - $APP_OUTPUT_PATH - -test:karma: - stage: test - allow_failure: false - tags: - - docker - before_script: - - apk add chromium - - export CHROME_BIN=/usr/bin/chromium-browser - script: - - npm ng test --code-coverage --progress false --watch false --browsers=GitlabChromeHeadless - coverage: '/Statements\s+:\s\d+.\d+%/' - artifacts: - name: "tests-and-coverage" - reports: - junit: - - $OUTPUT_PATH/tests/junit-test-results.xml - cobertura: - - $OUTPUT_PATH/coverage/cobetura-coverage.xml - paths: - - coverage/ - -test:e2e: - stage: test - allow_failure: false - tags: - - docker - script: - - npm ng e2e - -test:nglint: - stage: test - tags: - - docker - script: - - npm ng lint - -docker-build: - stage: package - image: docker:latest - services: - - docker:dind variables: - IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA" - before_script: - - docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY script: - - docker build -t $IMAGE_TAG -f Dockerfile . - - docker push $IMAGE_TAG - only: - - master + - mkdir -p /kaniko/.docker + - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > "/kaniko/.docker/config.json" + - /kaniko/executor --context . $KANIKO_CACHE_ARGS --cache-repo $CI_REGISTRY_IMAGE --no-push + rules: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: always + +ng_build: + stage: build + variables: + IMAGE_TAG_BASE: $CI_REGISTRY_IMAGE:$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA + LATEST_TAG: $CI_REGISTRY_IMAGE:latest + script: + - export IMAGE_TAG="$IMAGE_TAG_BASE-$(date +%F.%H%M%S)" + - mkdir -p /kaniko/.docker + - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > "/kaniko/.docker/config.json" + - /kaniko/executor --context . $KANIKO_CACHE_ARGS --destination $IMAGE_TAG --destination $CI_REGISTRY_IMAGE/$APP_NAME:latest + rules: + - if: $CI_COMMIT_BRANCH == "master" + when: always + + +# cache: +# key: +# files: +# - package-lock.json +# paths: +# - node_modules/ +# policy: pull + +# image: node:alpine + +# variables: +# PROJECT_PATH: "$CI_PROJECT_DIR" +# APP_OUTPUT_PATH: "$CI_PROJECT_DIR/dist/cic-staff-client" +# OUTPUT_PATH: "$CI_PROJECT_DIR/dist" +# CLI_VERSION: 10.2.0 + +# install_dependencies: +# stage: install +# tags: +# - docker +# script: +# - npm install -g @angular/cli@$CLI_VERSION +# - npm install +# only: +# refs: +# - merge_requests +# - master +# changes: +# - package-lock.json + +# build: +# stage: build +# tags: +# - docker +# script: +# - npm ng build --prod +# after_script: +# - mv $PROJECT_PATH/nginx.conf $PROJECT_PATH/default.conf +# - cp $PROJECT_PATH/default.conf $APP_OUTPUT_PATH +# - cp $PROJECT_PATH/Dockerfile $APP_OUTPUT_PATH +# artifacts: +# name: "cic-staff-client-pipeline" +# expire_in: 1 days +# paths: +# - $APP_OUTPUT_PATH + +# test:karma: +# stage: test +# allow_failure: false +# tags: +# - docker +# before_script: +# - apk add chromium +# - export CHROME_BIN=/usr/bin/chromium-browser +# script: +# - npm ng test --code-coverage --progress false --watch false --browsers=GitlabChromeHeadless +# coverage: '/Statements\s+:\s\d+.\d+%/' +# artifacts: +# name: "tests-and-coverage" +# reports: +# junit: +# - $OUTPUT_PATH/tests/junit-test-results.xml +# cobertura: +# - $OUTPUT_PATH/coverage/cobetura-coverage.xml +# paths: +# - coverage/ + +# test:e2e: +# stage: test +# allow_failure: false +# tags: +# - docker +# script: +# - npm ng e2e + +# test:nglint: +# stage: test +# tags: +# - docker +# script: +# - npm ng lint + +# docker-build: +# stage: package +# image: docker:latest +# services: +# - docker:dind +# variables: +# IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA" +# before_script: +# - docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY +# script: +# - docker build -t $IMAGE_TAG -f Dockerfile . +# - docker push $IMAGE_TAG +# only: +# - master