diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 236e9fc1fd..697bd29be3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -7,190 +7,194 @@
# Define stages
stages:
- # - BuildAndTest
- # - E2E
+ - BuildAndTest
+ - E2E
- DeployStaging
- DeployProduction
- SmokeTest
- Rollback
-# ##BACKEND
-# lint_n_audit_backend:
-# stage: BuildAndTest
-# script:
-# - cd backend
-# - npm install --dev
-# - npm run lint
-# # - npm run audit
-# - cd ..
+##BACKEND
+lint_n_audit_backend:
+ stage: BuildAndTest
+ script:
+ - cd backend
+ - npm install --dev
+ - npm run lint
+ # - npm run audit
+ - cd ..
-# build_n_test_backend:
-# stage: BuildAndTest
-# script:
-# - sudo docker stop $(sudo docker ps -aq) || echo 'No docker containers'
-# - sudo docker rm $(sudo docker ps -aq) || echo 'No docker containers'
-# - sudo docker run --name mongo -p 27017:27017 -d mongo:3.4
-# - sudo docker build -t fyipe-project/backend:3.0.$CI_PIPELINE_IID ./backend
-# - sudo docker run --name fyipe --network container:mongo fyipe-project/backend:3.0.$CI_PIPELINE_IID npm test
+build_n_test_backend:
+ stage: BuildAndTest
+ script:
+ - sudo docker stop $(sudo docker ps -aq) || echo 'No docker containers'
+ - sudo docker rm $(sudo docker ps -aq) || echo 'No docker containers'
+ - sudo docker run --name mongo -p 27017:27017 -d mongo:3.4
+ - sudo docker build -t fyipe-project/backend:3.0.$CI_PIPELINE_IID ./backend
+ - sudo docker run --name fyipe --network container:mongo fyipe-project/backend:3.0.$CI_PIPELINE_IID npm test
-# ##DASHBOARD
-# lint_n_audit_dashboard:
-# stage: BuildAndTest
-# script:
-# - cd dashboard
-# - npm install --dev
-# - npm run lint
-# # - npm run audit
-# - cd ..
+##DASHBOARD
+lint_n_audit_dashboard:
+ stage: BuildAndTest
+ script:
+ - cd dashboard
+ - npm install --dev
+ - npm run lint
+ # - npm run audit
+ - cd ..
-# build_n_test_dashboard:
-# stage: BuildAndTest
-# script:
-# - echo "Setup machine for running puppeteer tests"
-# - sudo docker stop $(sudo docker ps -aq) || echo 'No docker containers'
-# - sudo docker rm $(sudo docker ps -aq) || echo 'No docker containers'
-# - sudo docker run --name mongo -p 27017:27017 -d mongo:3.4
-# - sudo docker build -t fyipe-project/backend:3.0.$CI_PIPELINE_IID ./backend
-# - sudo docker run --env-file ./backend/.env.development --net=host -d fyipe-project/backend:3.0.$CI_PIPELINE_IID
-# - sudo docker build -t fyipe-project/accounts:3.0.$CI_PIPELINE_IID ./accounts
-# - sudo docker run -p 3003:3003 -d fyipe-project/accounts:3.0.$CI_PIPELINE_IID
-# - sudo docker build -t fyipe-project/dashboard:3.0.$CI_PIPELINE_IID ./dashboard
-# - sudo docker run -p 3000:3000 -d fyipe-project/dashboard:3.0.$CI_PIPELINE_IID
-# - sudo docker ps
-# - cd dashboard
-# - npm install
-# - npm run jest
+build_n_test_dashboard:
+ stage: BuildAndTest
+ script:
+ - echo "Setup machine for running puppeteer tests"
+ - sudo docker stop $(sudo docker ps -aq) || echo 'No docker containers'
+ - sudo docker rm $(sudo docker ps -aq) || echo 'No docker containers'
+ - sudo docker run --name mongo -p 27017:27017 -d mongo:3.4
+ - sudo docker build -t fyipe-project/backend:3.0.$CI_PIPELINE_IID ./backend
+ - sudo docker run --env-file ./backend/.env.development --net=host -d fyipe-project/backend:3.0.$CI_PIPELINE_IID
+ - sudo docker build -t fyipe-project/accounts:3.0.$CI_PIPELINE_IID ./accounts
+ - sudo docker run -p 3003:3003 -d fyipe-project/accounts:3.0.$CI_PIPELINE_IID
+ - sudo docker build -t fyipe-project/dashboard:3.0.$CI_PIPELINE_IID ./dashboard
+ - sudo docker run -p 3000:3000 -d fyipe-project/dashboard:3.0.$CI_PIPELINE_IID
+ - sudo docker ps
+ - cd dashboard
+ - npm install
+ - npm run jest
-# ##ZAPIER
-# lint_n_audit_zapier:
-# stage: BuildAndTest
-# script:
-# - cd zapier
-# - npm install --dev
-# - npm run lint
-# - npm run audit
-# - cd ..
+##ZAPIER
+lint_n_audit_zapier:
+ stage: BuildAndTest
+ script:
+ - cd zapier
+ - npm install --dev
+ - npm run lint
+ - npm run audit
+ - cd ..
-# build_n_test_zapier:
-# stage: BuildAndTest
-# script:
-# - echo "No test implemented"
+build_n_test_zapier:
+ stage: BuildAndTest
+ script:
+ - echo "No test implemented"
-# ## STATUS PAGE
-# lint_n_audit_statuspage:
-# stage: BuildAndTest
-# script:
-# - cd status-page
-# - npm install --dev
-# - npm run lint
-# - npm run audit
-# - cd ..
+## STATUS PAGE
+lint_n_audit_statuspage:
+ stage: BuildAndTest
+ script:
+ - cd status-page
+ - npm install --dev
+ - npm run lint
+ - npm run audit
+ - cd ..
-# build_n_test_statuspage:
-# stage: BuildAndTest
-# script:
-# - echo "Setup machine for running puppeteer tests"
-# - sudo docker stop $(sudo docker ps -aq) || echo 'No docker containers'
-# - sudo docker rm $(sudo docker ps -aq) || echo 'No docker containers'
-# - sudo docker run --name mongo -p 27017:27017 -d mongo:3.4
-# - sudo docker build -t fyipe-project/backend:3.0.$CI_PIPELINE_IID ./backend
-# - sudo docker run --net=host -d fyipe-project/backend:3.0.$CI_PIPELINE_IID
-# - sudo docker build -t fyipe-project/status-page:3.0.$CI_PIPELINE_IID ./status-page
-# - sudo docker run -p 3006:3006 -d fyipe-project/status-page:3.0.$CI_PIPELINE_IID
-# - sudo docker ps
-# - cd backend
-# - npm install
-# - cd ..
-# - cd status-page
-# - npm install
-# - curl localhost:3006
-# - npm run jest
+build_n_test_statuspage:
+ stage: BuildAndTest
+ script:
+ - echo "Setup machine for running puppeteer tests"
+ - sudo docker stop $(sudo docker ps -aq) || echo 'No docker containers'
+ - sudo docker rm $(sudo docker ps -aq) || echo 'No docker containers'
+ - sudo docker run --name mongo -p 27017:27017 -d mongo:3.4
+ - sudo docker build -t fyipe-project/backend:3.0.$CI_PIPELINE_IID ./backend
+ - sudo docker run --net=host -d fyipe-project/backend:3.0.$CI_PIPELINE_IID
+ - sudo docker build -t fyipe-project/status-page:3.0.$CI_PIPELINE_IID ./status-page
+ - sudo docker run -p 3006:3006 -d fyipe-project/status-page:3.0.$CI_PIPELINE_IID
+ - sudo docker ps
+ - cd backend
+ - npm install
+ - cd ..
+ - cd status-page
+ - npm install
+ - curl localhost:3006
+ - npm run jest
-# ## ACCOUNTS
-# lint_n_audit_accounts:
-# stage: BuildAndTest
-# script:
-# - cd accounts
-# - npm install --dev
-# - npm run lint
-# - npm run audit
-# - cd ..
+## ACCOUNTS
+lint_n_audit_accounts:
+ stage: BuildAndTest
+ script:
+ - cd accounts
+ - npm install --dev
+ - npm run lint
+ - npm run audit
+ - cd ..
-# build_n_test_accounts:
-# stage: BuildAndTest
-# script:
-# - echo "Setup machine for running puppeteer tests"
-# - sudo docker stop $(sudo docker ps -aq) || echo 'No docker containers'
-# - sudo docker rm $(sudo docker ps -aq) || echo 'No docker containers'
-# - sudo docker run --name mongo -p 27017:27017 -d mongo:3.4
-# - sudo docker build -t fyipe-project/backend:3.0.$CI_PIPELINE_IID ./backend
-# - sudo docker run --env-file ./backend/.env.development --net=host -d fyipe-project/backend:3.0.$CI_PIPELINE_IID
-# - sudo docker build -t fyipe-project/accounts:3.0.$CI_PIPELINE_IID ./accounts
-# - sudo docker run -p 3003:3003 -d fyipe-project/accounts:3.0.$CI_PIPELINE_IID
-# - sudo docker build -t fyipe-project/dashboard:3.0.$CI_PIPELINE_IID ./dashboard
-# - sudo docker run -p 3000:3000 -d fyipe-project/dashboard:3.0.$CI_PIPELINE_IID
-# - sudo docker ps
-# - cd accounts
-# - npm install
-# - npm run jest
+build_n_test_accounts:
+ stage: BuildAndTest
+ script:
+ - echo "Setup machine for running puppeteer tests"
+ - sudo docker stop $(sudo docker ps -aq) || echo 'No docker containers'
+ - sudo docker rm $(sudo docker ps -aq) || echo 'No docker containers'
+ - sudo docker run --name mongo -p 27017:27017 -d mongo:3.4
+ - sudo docker build -t fyipe-project/backend:3.0.$CI_PIPELINE_IID ./backend
+ - sudo docker run --env-file ./backend/.env.development --net=host -d fyipe-project/backend:3.0.$CI_PIPELINE_IID
+ - sudo docker build -t fyipe-project/accounts:3.0.$CI_PIPELINE_IID ./accounts
+ - sudo docker run -p 3003:3003 -d fyipe-project/accounts:3.0.$CI_PIPELINE_IID
+ - sudo docker build -t fyipe-project/dashboard:3.0.$CI_PIPELINE_IID ./dashboard
+ - sudo docker run -p 3000:3000 -d fyipe-project/dashboard:3.0.$CI_PIPELINE_IID
+ - sudo docker ps
+ - cd accounts
+ - npm install
+ - npm run jest
-# ## HOME
-# lint_n_audit_home:
-# stage: BuildAndTest
-# script:
-# - cd home
-# - npm install --dev
-# - npm run lint
-# - npm run audit
-# - cd ..
+## HOME
+lint_n_audit_home:
+ stage: BuildAndTest
+ script:
+ - cd home
+ - npm install --dev
+ - npm run lint
+ - npm run audit
+ - cd ..
-# build_n_test_home:
-# stage: BuildAndTest
-# script:
-# - echo "No test implemented"
+build_n_test_home:
+ stage: BuildAndTest
+ script:
+ - echo "No test implemented"
-# ## PROBE
-# lint_n_audit_probe:
-# stage: BuildAndTest
-# script:
-# - cd probe
-# - npm install --dev
-# - npm run lint
-# - npm run audit
-# - cd ..
+## PROBE
+lint_n_audit_probe:
+ stage: BuildAndTest
+ script:
+ - cd probe
+ - npm install --dev
+ - npm run lint
+ - npm run audit
+ - cd ..
-# build_n_test_probe:
-# stage: BuildAndTest
-# script:
-# - echo "No test implemented"
+build_n_test_probe:
+ stage: BuildAndTest
+ script:
+ - echo "No test implemented"
-# ##E2E Stage.
-# e2e_test:
-# stage: E2E
-# script:
-# - chmod +x ./kubernetes/ci/setup-machine.sh
-# - ./kubernetes/ci/setup-machine.sh
-# - chmod +x ./kubernetes/ci/setup.sh
-# - ./kubernetes/ci/setup.sh
-# - export ACCOUNTS_URL=`sudo kubectl describe svc accounts | grep Endpoints | cut -d ":" -f 2`
-# - export BACKEND_URL=`sudo kubectl describe svc backend | grep Endpoints | cut -d ":" -f 2`
-# - export DASHBOARD_URL=`sudo kubectl describe svc dashboard | grep Endpoints | cut -d ":" -f 2`
-# - export HOME_URL=`sudo kubectl describe svc home | grep Endpoints | cut -d ":" -f 2`
-# - export STATUSPAGE_URL=`sudo kubectl describe svc status-page | grep Endpoints | cut -d ":" -f 2`
-# - echo ACCOUNTS_URL=$ACCOUNTS_URL
-# - echo BACKEND_URL=$BACKEND_URL
-# - echo DASHBOARD_URL=$DASHBOARD_URL
-# - echo HOME_URL=$HOME_URL
-# - echo STATUSPAGE_URL=$STATUSPAGE_URL
-# - chmod +x ./kubernetes/ci/hosts-setup.sh
-# - ./kubernetes/ci/hosts-setup.sh
+##E2E Stage.
+e2e_test:
+ stage: E2E
+ script:
+ - chmod +x ./kubernetes/ci/setup-machine.sh
+ - ./kubernetes/ci/setup-machine.sh
+ - chmod +x ./kubernetes/ci/setup.sh
+ - ./kubernetes/ci/setup.sh
+ - export ACCOUNTS_URL=`sudo kubectl describe svc accounts | grep Endpoints | cut -d ":" -f 2`
+ - export BACKEND_URL=`sudo kubectl describe svc backend | grep Endpoints | cut -d ":" -f 2`
+ - export DASHBOARD_URL=`sudo kubectl describe svc dashboard | grep Endpoints | cut -d ":" -f 2`
+ - export HOME_URL=`sudo kubectl describe svc home | grep Endpoints | cut -d ":" -f 2`
+ - export STATUSPAGE_URL=`sudo kubectl describe svc status-page | grep Endpoints | cut -d ":" -f 2`
+ - export APIDOCS_URL=`sudo kubectl describe svc api-docs | grep Endpoints | cut -d ":" -f 2`
+ - echo ACCOUNTS_URL=$ACCOUNTS_URL
+ - echo BACKEND_URL=$BACKEND_URL
+ - echo DASHBOARD_URL=$DASHBOARD_URL
+ - echo HOME_URL=$HOME_URL
+ - echo STATUSPAGE_URL=$STATUSPAGE_URL
+ - chmod +x ./kubernetes/ci/hosts-setup.sh
+ - ./kubernetes/ci/hosts-setup.sh
+ - cd smoke-test
+ - npm i
+ - npm run test
-# only:
-# refs:
-# - release
-# - master
+ only:
+ refs:
+ - release
+ - master
# DEPLOYMENT STAGE - BACKEND
deploy_staging_backend:
diff --git a/accounts/index.js b/accounts/index.js
index d05c8f4dc8..be4234354e 100755
--- a/accounts/index.js
+++ b/accounts/index.js
@@ -1,10 +1,26 @@
const express = require('express');
const path = require('path');
const app = express();
+const envfile = require('envfile');
+const fs = require('fs');
+var child_process = require('child_process');
+
+var env = {
+ REACT_APP_FYIPE_HOSTED: process.env.FYIPE_HOSTED,
+ REACT_APP_HOST: process.env.HOST,
+ REACT_APP_DASHBOARD_HOST: process.env.DASHBOARD_HOST,
+ REACT_APP_BACKEND_HOST: process.env.BACKEND_HOST
+}
+
+fs.writeFileSync('.env', envfile.stringifySync(env));
+
+child_process.execSync('react-env', {
+ stdio: [0, 1, 2]
+});
app.use(express.static(path.join(__dirname, 'build')));
-app.get('/*', function(req, res) {
+app.get('/*', function (req, res) {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
diff --git a/accounts/package-lock.json b/accounts/package-lock.json
index f84dcc6a16..dc73838f7e 100644
--- a/accounts/package-lock.json
+++ b/accounts/package-lock.json
@@ -928,6 +928,29 @@
"to-fast-properties": "^2.0.0"
}
},
+ "@beam-australia/react-env": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@beam-australia/react-env/-/react-env-2.1.2.tgz",
+ "integrity": "sha512-gXcCGGGb2oRM/oeqT861JXsSTJjOxGTBMkj7J5ujEBb6Vmv5I108NcALPYYdGdzFCV6ebdVP+E5k0W1xAbzA7w==",
+ "requires": {
+ "cross-spawn": "^6.0.5",
+ "dotenv": "^8.0.0",
+ "dotenv-expand": "^5.1.0",
+ "minimist": "^1.2.0"
+ },
+ "dependencies": {
+ "dotenv": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.1.0.tgz",
+ "integrity": "sha512-GUE3gqcDCaMltj2++g6bRQ5rBJWtkWTmqmD0fo1RnnMuUqHNCt2oTPeDnS9n6fKYvlhn7AeBkb38lymBtWBQdA=="
+ },
+ "dotenv-expand": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
+ "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA=="
+ }
+ }
+ },
"@cnakazawa/watch": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz",
@@ -1782,6 +1805,15 @@
"resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
"integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM="
},
+ "ambi": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ambi/-/ambi-5.0.0.tgz",
+ "integrity": "sha512-NYJzHMsZU7clGY2lH11U+2PEllFDW66qnUukXYbyF8ZJ0B0CXVNfKHUvkUp+gsaNPBW8FqEFX5l64LTlUvI2pw==",
+ "requires": {
+ "editions": "^2.1.0",
+ "typechecker": "^4.3.0"
+ }
+ },
"ansi-colors": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
@@ -4834,6 +4866,22 @@
"stream-shift": "^1.0.0"
}
},
+ "eachr": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/eachr/-/eachr-3.2.0.tgz",
+ "integrity": "sha1-LDXkPqCGUW95l8+At6pk1VpKRIQ=",
+ "requires": {
+ "editions": "^1.1.1",
+ "typechecker": "^4.3.0"
+ },
+ "dependencies": {
+ "editions": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz",
+ "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg=="
+ }
+ }
+ },
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -4843,6 +4891,15 @@
"safer-buffer": "^2.1.0"
}
},
+ "editions": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/editions/-/editions-2.1.3.tgz",
+ "integrity": "sha512-xDZyVm0A4nLgMNWVVLJvcwMjI80ShiH/27RyLiCnW1L273TcJIA25C4pwJ33AWV01OX6UriP35Xu+lH4S7HWQw==",
+ "requires": {
+ "errlop": "^1.1.1",
+ "semver": "^5.6.0"
+ }
+ },
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -4922,6 +4979,25 @@
"resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
"integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY="
},
+ "envfile": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/envfile/-/envfile-3.0.0.tgz",
+ "integrity": "sha512-LdL/WLZutuZedarG3Knu4v4RC7kZpC+dSdv9tVj0B8q11K0T0pLczRYxhmyVpApRRXWQnz5Fldrtnu/RzbCHPA==",
+ "requires": {
+ "ambi": "^5.0.0",
+ "eachr": "^3.1.0",
+ "editions": "^2.1.3",
+ "typechecker": "^4.0.1"
+ }
+ },
+ "errlop": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/errlop/-/errlop-1.1.1.tgz",
+ "integrity": "sha512-WX7QjiPHhsny7/PQvrhS5VMizXXKoKCS3udaBp8gjlARdbn+XmK300eKBAAN0hGyRaTCtRpOaxK+xFVPUJ3zkw==",
+ "requires": {
+ "editions": "^2.1.2"
+ }
+ },
"errno": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
@@ -13445,6 +13521,14 @@
"mime-types": "~2.1.24"
}
},
+ "typechecker": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-4.7.0.tgz",
+ "integrity": "sha512-4LHc1KMNJ6NDGO+dSM/yNfZQRtp8NN7psYrPHUblD62Dvkwsp3VShsbM78kOgpcmMkRTgvwdKOTjctS+uMllgQ==",
+ "requires": {
+ "editions": "^2.1.0"
+ }
+ },
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
diff --git a/accounts/package.json b/accounts/package.json
index 2addd41ef1..a7e0f97baf 100755
--- a/accounts/package.json
+++ b/accounts/package.json
@@ -3,6 +3,7 @@
"version": "0.1.0",
"private": true,
"dependencies": {
+ "@beam-australia/react-env": "^2.1.2",
"@trendmicro/react-dropdown": "^1.3.0",
"axios": "^0.18.0",
"browserslist": "^4.6.1",
@@ -12,6 +13,7 @@
"components": "^0.1.0",
"connected-react-router": "^4.5.0",
"creditcard-generator": "0.0.7",
+ "envfile": "^3.0.0",
"express": "^4.16.4",
"faker": "^4.1.0",
"file-saver": "^2.0.1",
diff --git a/accounts/public/index.html b/accounts/public/index.html
index d902108201..0bcae5c6dc 100755
--- a/accounts/public/index.html
+++ b/accounts/public/index.html
@@ -29,6 +29,7 @@
+