From acd02deb0816010fa5f30578d307419da8284f5a Mon Sep 17 00:00:00 2001 From: Blair Vanderlugt Date: Sat, 10 Apr 2021 12:17:16 -0700 Subject: [PATCH 1/9] 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/9] 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 From d173816dbc6a81800b5116109f7ac84935e84a2c Mon Sep 17 00:00:00 2001 From: Blair Vanderlugt Date: Sun, 11 Apr 2021 16:03:55 +0000 Subject: [PATCH 3/9] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a3ab6bb..4e60b45 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -30,7 +30,7 @@ ng_build: - 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 + - /kaniko/executor --context . $KANIKO_CACHE_ARGS --destination $IMAGE_TAG --destination $CI_REGISTRY_IMAGE:latest rules: - if: $CI_COMMIT_BRANCH == "master" when: always From b98818f0d5d367c3597d99112abff6d4b6883d77 Mon Sep 17 00:00:00 2001 From: Blair Vanderlugt Date: Sun, 11 Apr 2021 20:32:24 -0700 Subject: [PATCH 4/9] defaults for prod --- package.json | 4 ++-- src/environments/environment.prod.ts | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 2ba6a71..f939f7a 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,9 @@ "config:dev": "ts-node set-env.ts --environment=dev", "config:prod": "ts-node set-env.ts --environment=prod", "start:dev": "npm run config:dev && ng serve", - "start:prod": "npm run config:prod && ng serve", + "start:prod": "ng serve", "build:dev": "npm run config:dev && ng build", - "build:prod": "npm run config:prod && ng build --prod", + "build:prod": "ng build --prod", "test:dev": "npm run config:dev && ng test", "test:prod": "npm run config:prod && ng test", "lint": "ng lint", diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index 3612073..581f5be 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -1,3 +1,16 @@ +import {NgxLoggerLevel} from 'ngx-logger'; + export const environment = { - production: true + production: true, + bloxbergChainId: 8996, + logLevel: NgxLoggerLevel.ERROR, + serverLogLevel: NgxLoggerLevel.OFF, + loggingUrl: '', + cicMetaUrl: 'https://meta.dev.grassrootseconomics.net', + publicKeysUrl: 'https://dev.grassrootseconomics/.well-known/publickeys', + cicCacheUrl: 'https://cache.dev.grassrootseconomics.net', + web3Provider: 'ws://bloxberg-ws.dev.grassrootseconomics.net', + cicUssdUrl: 'https://ussd.dev.grassrootseconomics.net', + registryAddress: '0x6Ca3cB14aA6F761712E1C18646AfBA4d5Ae249E8', + trustedDeclaratorAddress: '0xEb3907eCad74a0013c259D5874AE7f22DcBcC95C' }; From d5dafbeb7def64bf4f5345ab363f8ede25780278 Mon Sep 17 00:00:00 2001 From: Blair Vanderlugt Date: Mon, 12 Apr 2021 07:53:12 -0700 Subject: [PATCH 5/9] defaults for dev + wss for prod --- src/environments/environment.prod.ts | 2 +- src/environments/environment.ts | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index 581f5be..22a7711 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -9,7 +9,7 @@ export const environment = { cicMetaUrl: 'https://meta.dev.grassrootseconomics.net', publicKeysUrl: 'https://dev.grassrootseconomics/.well-known/publickeys', cicCacheUrl: 'https://cache.dev.grassrootseconomics.net', - web3Provider: 'ws://bloxberg-ws.dev.grassrootseconomics.net', + web3Provider: 'wss://bloxberg-ws.dev.grassrootseconomics.net', cicUssdUrl: 'https://ussd.dev.grassrootseconomics.net', registryAddress: '0x6Ca3cB14aA6F761712E1C18646AfBA4d5Ae249E8', trustedDeclaratorAddress: '0xEb3907eCad74a0013c259D5874AE7f22DcBcC95C' diff --git a/src/environments/environment.ts b/src/environments/environment.ts index ffe8aed..1b784b6 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -1,3 +1,16 @@ +import {NgxLoggerLevel} from 'ngx-logger'; + export const environment = { - production: false + production: false, + bloxbergChainId: 8996, + logLevel: NgxLoggerLevel.ERROR, + serverLogLevel: NgxLoggerLevel.OFF, + loggingUrl: 'http://localhost:8000', + cicMetaUrl: 'https://meta.dev.grassrootseconomics.net', + publicKeysUrl: 'http://localhost:8000/keys.asc', + cicCacheUrl: 'https://cache.dev.grassrootseconomics.net', + web3Provider: 'ws://localhost:63546', + cicUssdUrl: 'https://ussd.dev.grassrootseconomics.net', + registryAddress: '0x6Ca3cB14aA6F761712E1C18646AfBA4d5Ae249E8', + trustedDeclaratorAddress: '0xEb3907eCad74a0013c259D5874AE7f22DcBcC95C' }; From 9a9b59513e43a569bfd26b5f601af0910463be77 Mon Sep 17 00:00:00 2001 From: Blair Vanderlugt Date: Mon, 12 Apr 2021 10:50:35 -0700 Subject: [PATCH 6/9] updated pub key ep --- src/environments/environment.prod.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index 22a7711..f38ded8 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -7,7 +7,7 @@ export const environment = { serverLogLevel: NgxLoggerLevel.OFF, loggingUrl: '', cicMetaUrl: 'https://meta.dev.grassrootseconomics.net', - publicKeysUrl: 'https://dev.grassrootseconomics/.well-known/publickeys', + publicKeysUrl: 'https://dev.grassrootseconomics.net/.well-known/publickeys/', cicCacheUrl: 'https://cache.dev.grassrootseconomics.net', web3Provider: 'wss://bloxberg-ws.dev.grassrootseconomics.net', cicUssdUrl: 'https://ussd.dev.grassrootseconomics.net', From 839594602467f57e5c270c5304060a151f673172 Mon Sep 17 00:00:00 2001 From: Blair Vanderlugt Date: Mon, 12 Apr 2021 13:36:35 -0700 Subject: [PATCH 7/9] prod configs --- src/environments/environment.prod.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index f38ded8..62f63f4 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -11,6 +11,6 @@ export const environment = { cicCacheUrl: 'https://cache.dev.grassrootseconomics.net', web3Provider: 'wss://bloxberg-ws.dev.grassrootseconomics.net', cicUssdUrl: 'https://ussd.dev.grassrootseconomics.net', - registryAddress: '0x6Ca3cB14aA6F761712E1C18646AfBA4d5Ae249E8', + registryAddress: '0xAf1B487491073C2d49136Db3FD87E293302CF839', trustedDeclaratorAddress: '0xEb3907eCad74a0013c259D5874AE7f22DcBcC95C' }; From c56111d73259012506240d67223cef3308566161 Mon Sep 17 00:00:00 2001 From: Blair Vanderlugt Date: Tue, 13 Apr 2021 16:29:31 -0700 Subject: [PATCH 8/9] added dev env and tested with build + serve --- angular.json | 11 +++++++++++ package.json | 10 ++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/angular.json b/angular.json index f916d4f..b6ab55a 100644 --- a/angular.json +++ b/angular.json @@ -69,6 +69,14 @@ "maximumError": "10kb" } ] + }, + "dev": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.dev.ts" + } + ] } } }, @@ -80,6 +88,9 @@ "configurations": { "production": { "browserTarget": "cic-staff-client:build:production" + }, + "dev": { + "browserTarget": "cic-staff-client:build:dev" } } }, diff --git a/package.json b/package.json index f939f7a..ff0c292 100644 --- a/package.json +++ b/package.json @@ -2,15 +2,13 @@ "name": "cic-staff-client", "version": "0.0.0", "scripts": { - "ng": "ng", "config:dev": "ts-node set-env.ts --environment=dev", "config:prod": "ts-node set-env.ts --environment=prod", - "start:dev": "npm run config:dev && ng serve", - "start:prod": "ng serve", - "build:dev": "npm run config:dev && ng build", + "start:dev": "ng serve -c dev", + "start:prod": "ng serve --prod", + "build:dev": "ng build -c dev", "build:prod": "ng build --prod", - "test:dev": "npm run config:dev && ng test", - "test:prod": "npm run config:prod && ng test", + "test:dev": "ng test", "lint": "ng lint", "e2e": "ng e2e", "postinstall": "node patch-webpack.js" From 248c7836a8562abf631da656e41f4a40ef87ff10 Mon Sep 17 00:00:00 2001 From: Blair Vanderlugt Date: Fri, 16 Apr 2021 23:26:42 +0000 Subject: [PATCH 9/9] Update Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 39ebebe..0eb2e17 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ RUN npm install COPY . . # running build script -RUN npm run build:prod +RUN npm run build:dev ### STAGE 2: Setup ### # defining nginx image version