From 23490756a2694dec1e85e65df30845fdd4427412 Mon Sep 17 00:00:00 2001 From: Gunasekar-K Date: Sat, 18 Feb 2023 18:55:00 +0530 Subject: [PATCH 01/12] Qa changes --- .circleci/config.yml | 17 +++++++++++++ config/constants/index.js | 4 ++- config/constants/qa.js | 53 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 config/constants/qa.js diff --git a/.circleci/config.yml b/.circleci/config.yml index 803b34a7..f5a4a053 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -116,6 +116,17 @@ jobs: APPNAME: "challenge-engine-ui" steps: *builddeploy_steps + + "build-qa": + <<: *defaults + environment: + DEPLOY_ENV: "QA" + LOGICAL_ENV: "qa" + NODE_ENV: "qa" + BABEL_ENV: "development" + APPNAME: "work-manager" + steps: *builddeploy_steps + "build-prod": <<: *defaults environment: @@ -154,6 +165,12 @@ workflows: branches: only: ['develop', 'multiround'] + - "build-qa": + context : org-global + filters: &filters-dev + branches: + only: ['qa'] + # Production builds are exectuted only on tagged commits to the # master branch. - "build-prod": diff --git a/config/constants/index.js b/config/constants/index.js index d3b29612..cc7ee77c 100644 --- a/config/constants/index.js +++ b/config/constants/index.js @@ -5,6 +5,8 @@ module.exports = (() => { if (env === 'production') { return require('./production') } - + if (env === 'qa') { + return require('./qa') + } return require('./development') })() diff --git a/config/constants/qa.js b/config/constants/qa.js new file mode 100644 index 00000000..d246b398 --- /dev/null +++ b/config/constants/qa.js @@ -0,0 +1,53 @@ +const DOMAIN = 'topcoder-qa.com' +const DEV_API_HOSTNAME = `https://api.${DOMAIN}` + +module.exports = { + ACCOUNTS_APP_CONNECTOR_URL: `https://accounts-auth0.${DOMAIN}`, + ACCOUNTS_APP_LOGIN_URL: `https://accounts-auth0.${DOMAIN}`, + COMMUNITY_APP_URL: `https://www.${DOMAIN}`, + MEMBER_API_URL: `${DEV_API_HOSTNAME}/v5/members`, + MEMBER_API_V3_URL: `${DEV_API_HOSTNAME}/v3/members`, + CHALLENGE_API_URL: `${DEV_API_HOSTNAME}/v5/challenges`, + CHALLENGE_TIMELINE_TEMPLATES_URL: `${DEV_API_HOSTNAME}/v5/timeline-templates`, + CHALLENGE_TYPES_URL: `${DEV_API_HOSTNAME}/v5/challenge-types`, + CHALLENGE_TRACKS_URL: `${DEV_API_HOSTNAME}/v5/challenge-tracks`, + CHALLENGE_PHASES_URL: `${DEV_API_HOSTNAME}/v5/challenge-phases`, + CHALLENGE_TIMELINES_URL: `${DEV_API_HOSTNAME}/v5/challenge-timelines`, + PROJECT_API_URL: `${DEV_API_HOSTNAME}/v5/projects`, + GROUPS_API_URL: `${DEV_API_HOSTNAME}/v5/groups`, + TERMS_API_URL: `${DEV_API_HOSTNAME}/v5/terms`, + RESOURCES_API_URL: `${DEV_API_HOSTNAME}/v5/resources`, + RESOURCE_ROLES_API_URL: `${DEV_API_HOSTNAME}/v5/resource-roles`, + SUBMISSIONS_API_URL: `${DEV_API_HOSTNAME}/v5/submissions`, + PLATFORMS_V4_API_URL: `${DEV_API_HOSTNAME}/v4/platforms`, + TECHNOLOGIES_V4_API_URL: `${DEV_API_HOSTNAME}/v4/technologies`, + SUBMISSION_REVIEW_APP_URL: `https://submission-review.${DOMAIN}/challenges`, + STUDIO_URL: `https://studio.${DOMAIN}`, + CONNECT_APP_URL: `https://connect.${DOMAIN}`, + DIRECT_PROJECT_URL: `https://www.${DOMAIN}/direct`, + ONLINE_REVIEW_URL: `https://software.${DOMAIN}`, + DEFAULT_TERM_UUID: '317cd8f9-d66c-4f2a-8774-63c612d99cd4', // Terms & Conditions of Use at TopCoder + DEFAULT_NDA_UUID: 'e5811a7b-43d1-407a-a064-69e5015b4900', // NDA v3.0 + SUBMITTER_ROLE_UUID: '732339e7-8e30-49d7-9198-cccf9451e221', + DEV_TRACK_ID: '9b6fc876-f4d9-4ccb-9dfd-419247628825', + DES_TRACK_ID: '5fa04185-041f-49a6-bfd1-fe82533cd6c8', + DS_TRACK_ID: 'c0f5d461-8219-4c14-878a-c3a3f356466d', + QA_TRACK_ID: '36e6a8d0-7e1e-4608-a673-64279d99c115', + CP_TRACK_ID: '9d6e0de8-df14-4c76-ba0a-a9a8cb03a4ea', + CHALLENGE_TYPE_ID: '927abff4-7af9-4145-8ba1-577c16e64e2e', + MARATHON_TYPE_ID: '929bc408-9cf2-4b3e-ba71-adfbf693046c', + SEGMENT_API_KEY: 'QBtLgV8vCiuRX1lDikbMjcoe9aCHkF6n', + CREATE_FORUM_TYPE_IDS: ['927abff4-7af9-4145-8ba1-577c16e64e2e', 'dc876fa4-ef2d-4eee-b701-b555fcc6544c', 'ecd58c69-238f-43a4-a4bb-d172719b9f31'], + FILE_PICKER_API_KEY: process.env.FILE_PICKER_API_KEY, + FILE_PICKER_CONTAINER_NAME: 'tc-challenge-v5-dev', + FILE_PICKER_REGION: 'us-east-1', + FILE_PICKER_CNAME: 'fs.topcoder.com', + // if idle for this many minutes, show user a prompt saying they'll be logged out + IDLE_TIMEOUT_MINUTES: 10, + // duration to show the prompt saying user will be logged out, before actually logging out the user + IDLE_TIMEOUT_GRACE_MINUTES: 5, + MULTI_ROUND_CHALLENGE_TEMPLATE_ID: 'd4201ca4-8437-4d63-9957-3f7708184b07', + UNIVERSAL_NAV_URL: '//uni-nav.topcoder-dev.com/v1/tc-universal-nav.js', + HEADER_AUTH_URLS_HREF: `https://accounts-auth0.${DOMAIN}?utm_source=community-app-main`, + HEADER_AUTH_URLS_LOCATION: `https://accounts-auth0.${DOMAIN}?retUrl=%S&utm_source=community-app-main` +} From cf69e970a35f95254e2d43346a6fb8ff20f7a119 Mon Sep 17 00:00:00 2001 From: Gunasekar-K Date: Sat, 18 Feb 2023 19:47:36 +0530 Subject: [PATCH 02/12] Qa changes --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f5a4a053..8de47c7d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -123,7 +123,7 @@ jobs: DEPLOY_ENV: "QA" LOGICAL_ENV: "qa" NODE_ENV: "qa" - BABEL_ENV: "development" + BABEL_ENV: "qa" APPNAME: "work-manager" steps: *builddeploy_steps From c73f19275928e64e3576e1674404d1448d9a7c18 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Mon, 20 Feb 2023 11:41:39 +0600 Subject: [PATCH 03/12] chore: rename docker image --- docker/Dockerfile | 4 ++-- docker/docker-compose.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index a3262e42..56c24ad2 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -12,10 +12,10 @@ ENV FILE_PICKER_API_KEY=$FILE_PICKER_API_KEY ENV FORCE_DEV=$FORCE_DEV # Copy the current directory into the Docker image -COPY . /challenge-engine-ui +COPY . /work-manager # Set working directory for future use -WORKDIR /challenge-engine-ui +WORKDIR /work-manager # Install the dependencies from package.json RUN echo "NODE ENV in Docker: $NODE_ENV" diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index d0793dd6..4e4c6ef6 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1,7 +1,7 @@ version: '3' services: - challenge-engine-ui: - image: challenge-engine-ui:latest + work-manager: + image: work-manager:latest build: context: ../ dockerfile: docker/Dockerfile \ No newline at end of file From 3d91f4d3170ddf1a34eb6e41c806ea71176a5bda Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Mon, 20 Feb 2023 12:04:59 +0600 Subject: [PATCH 04/12] fix: env values --- .circleci/config.yml | 2 +- config/webpack.config.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 8de47c7d..f5a4a053 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -123,7 +123,7 @@ jobs: DEPLOY_ENV: "QA" LOGICAL_ENV: "qa" NODE_ENV: "qa" - BABEL_ENV: "qa" + BABEL_ENV: "development" APPNAME: "work-manager" steps: *builddeploy_steps diff --git a/config/webpack.config.js b/config/webpack.config.js index e500b1a5..9e9b2f06 100644 --- a/config/webpack.config.js +++ b/config/webpack.config.js @@ -39,7 +39,7 @@ const sassModuleRegex = /\.module\.(scss|sass)$/ // This is the production and development configuration. // It is focused on developer experience, fast rebuilds, and a minimal bundle. module.exports = function (webpackEnv) { - const isEnvDevelopment = webpackEnv === 'development' + const isEnvDevelopment = webpackEnv === 'development' || webpackEnv === 'qa' const isEnvProduction = webpackEnv === 'production' // Webpack uses `publicPath` to determine where the app is being served from. From a8692d57d49fc5843fb2472bc293b9147231ddcd Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Mon, 20 Feb 2023 12:26:03 +0600 Subject: [PATCH 05/12] chore: use updated deploy script Signed-off-by: Rakib Ansary --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f5a4a053..0294a753 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -36,7 +36,7 @@ install_test_dependency: &install_test_dependency install_deploysuite: &install_deploysuite name: Installation of install_deploysuite. command: | - git clone --branch v1.4 https://github.com/topcoder-platform/tc-deploy-scripts ../buildscript + git clone --branch v1.4.14 https://github.com/topcoder-platform/tc-deploy-scripts ../buildscript cp ./../buildscript/master_deploy.sh . cp ./../buildscript/buildenv.sh . cp ./../buildscript/awsconfiguration.sh . From 385ffe00cbf96f6ad3a171b4dd11f56062b8f4fb Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Mon, 20 Feb 2023 18:29:07 +0600 Subject: [PATCH 06/12] fix: uninav url --- config/constants/qa.js | 2 +- docker/Dockerfile | 4 ++-- package-lock.json | 2 +- server.js | 1 + 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/config/constants/qa.js b/config/constants/qa.js index d246b398..edf77395 100644 --- a/config/constants/qa.js +++ b/config/constants/qa.js @@ -47,7 +47,7 @@ module.exports = { // duration to show the prompt saying user will be logged out, before actually logging out the user IDLE_TIMEOUT_GRACE_MINUTES: 5, MULTI_ROUND_CHALLENGE_TEMPLATE_ID: 'd4201ca4-8437-4d63-9957-3f7708184b07', - UNIVERSAL_NAV_URL: '//uni-nav.topcoder-dev.com/v1/tc-universal-nav.js', + UNIVERSAL_NAV_URL: '//uni-nav.topcoder-qa.com/v1/tc-universal-nav.js', HEADER_AUTH_URLS_HREF: `https://accounts-auth0.${DOMAIN}?utm_source=community-app-main`, HEADER_AUTH_URLS_LOCATION: `https://accounts-auth0.${DOMAIN}?retUrl=%S&utm_source=community-app-main` } diff --git a/docker/Dockerfile b/docker/Dockerfile index 56c24ad2..a3262e42 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -12,10 +12,10 @@ ENV FILE_PICKER_API_KEY=$FILE_PICKER_API_KEY ENV FORCE_DEV=$FORCE_DEV # Copy the current directory into the Docker image -COPY . /work-manager +COPY . /challenge-engine-ui # Set working directory for future use -WORKDIR /work-manager +WORKDIR /challenge-engine-ui # Install the dependencies from package.json RUN echo "NODE ENV in Docker: $NODE_ENV" diff --git a/package-lock.json b/package-lock.json index 4f9932ec..acb2abec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5655,7 +5655,7 @@ "codemirror-spell-checker": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/codemirror-spell-checker/-/codemirror-spell-checker-1.1.2.tgz", - "integrity": "sha512-2Tl6n0v+GJRsC9K3MLCdLaMOmvWL0uukajNJseorZJsslaxZyZMgENocPU8R0DyoTAiKsyqiemSOZo7kjGV0LQ==", + "integrity": "sha1-HGYPkIlIPMtRE7m6nKGcP0mTNx4=", "requires": { "typo-js": "*" } diff --git a/server.js b/server.js index f5fb9cf6..bebeb386 100644 --- a/server.js +++ b/server.js @@ -28,6 +28,7 @@ app.use((req, res, next) => { "frame-ancestors 'none';" + "script-src 'report-sample' 'self' 'unsafe-inline' 'unsafe-eval'" + ' https://uni-nav.topcoder-dev.com' + + ' https://uni-nav.topcoder-qa.com' + ' https://uni-nav.topcoder.com' ) From c882c64033e8646c99fa53d8e5b41144a83442b8 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Mon, 20 Feb 2023 18:44:02 +0600 Subject: [PATCH 07/12] fix: filepath --- docker/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index a3262e42..56c24ad2 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -12,10 +12,10 @@ ENV FILE_PICKER_API_KEY=$FILE_PICKER_API_KEY ENV FORCE_DEV=$FORCE_DEV # Copy the current directory into the Docker image -COPY . /challenge-engine-ui +COPY . /work-manager # Set working directory for future use -WORKDIR /challenge-engine-ui +WORKDIR /work-manager # Install the dependencies from package.json RUN echo "NODE ENV in Docker: $NODE_ENV" From 96fc8dbc77796707f8c27fd3c344e68224fa9d58 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Thu, 23 Feb 2023 05:10:37 +0600 Subject: [PATCH 08/12] ci: test qa deploy --- config/webpack.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/webpack.config.js b/config/webpack.config.js index 9e9b2f06..e500b1a5 100644 --- a/config/webpack.config.js +++ b/config/webpack.config.js @@ -39,7 +39,7 @@ const sassModuleRegex = /\.module\.(scss|sass)$/ // This is the production and development configuration. // It is focused on developer experience, fast rebuilds, and a minimal bundle. module.exports = function (webpackEnv) { - const isEnvDevelopment = webpackEnv === 'development' || webpackEnv === 'qa' + const isEnvDevelopment = webpackEnv === 'development' const isEnvProduction = webpackEnv === 'production' // Webpack uses `publicPath` to determine where the app is being served from. From 9a244d80efd50e2ba837075e99f45ca66fcc0c9e Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Thu, 23 Feb 2023 17:06:38 +0600 Subject: [PATCH 09/12] DO NOT MERGE: test qa deploy * temporarily using development.js with QA details --- config/constants/development.js | 4 ++-- config/constants/qa.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/constants/development.js b/config/constants/development.js index b24ee6d4..edf77395 100644 --- a/config/constants/development.js +++ b/config/constants/development.js @@ -1,4 +1,4 @@ -const DOMAIN = 'topcoder-dev.com' +const DOMAIN = 'topcoder-qa.com' const DEV_API_HOSTNAME = `https://api.${DOMAIN}` module.exports = { @@ -47,7 +47,7 @@ module.exports = { // duration to show the prompt saying user will be logged out, before actually logging out the user IDLE_TIMEOUT_GRACE_MINUTES: 5, MULTI_ROUND_CHALLENGE_TEMPLATE_ID: 'd4201ca4-8437-4d63-9957-3f7708184b07', - UNIVERSAL_NAV_URL: '//uni-nav.topcoder-dev.com/v1/tc-universal-nav.js', + UNIVERSAL_NAV_URL: '//uni-nav.topcoder-qa.com/v1/tc-universal-nav.js', HEADER_AUTH_URLS_HREF: `https://accounts-auth0.${DOMAIN}?utm_source=community-app-main`, HEADER_AUTH_URLS_LOCATION: `https://accounts-auth0.${DOMAIN}?retUrl=%S&utm_source=community-app-main` } diff --git a/config/constants/qa.js b/config/constants/qa.js index edf77395..b24ee6d4 100644 --- a/config/constants/qa.js +++ b/config/constants/qa.js @@ -1,4 +1,4 @@ -const DOMAIN = 'topcoder-qa.com' +const DOMAIN = 'topcoder-dev.com' const DEV_API_HOSTNAME = `https://api.${DOMAIN}` module.exports = { @@ -47,7 +47,7 @@ module.exports = { // duration to show the prompt saying user will be logged out, before actually logging out the user IDLE_TIMEOUT_GRACE_MINUTES: 5, MULTI_ROUND_CHALLENGE_TEMPLATE_ID: 'd4201ca4-8437-4d63-9957-3f7708184b07', - UNIVERSAL_NAV_URL: '//uni-nav.topcoder-qa.com/v1/tc-universal-nav.js', + UNIVERSAL_NAV_URL: '//uni-nav.topcoder-dev.com/v1/tc-universal-nav.js', HEADER_AUTH_URLS_HREF: `https://accounts-auth0.${DOMAIN}?utm_source=community-app-main`, HEADER_AUTH_URLS_LOCATION: `https://accounts-auth0.${DOMAIN}?retUrl=%S&utm_source=community-app-main` } From 8cc4425d2030e1131f646dd00b2330c3e48e6f98 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Mon, 6 Mar 2023 13:54:52 +0600 Subject: [PATCH 10/12] fix: use v5 member api to fetch profile --- src/actions/auth.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/actions/auth.js b/src/actions/auth.js index 6ed70d57..cb4d2454 100644 --- a/src/actions/auth.js +++ b/src/actions/auth.js @@ -1,5 +1,5 @@ import { configureConnector, decodeToken } from 'tc-auth-lib' -import { fetchProfile } from '../services/user' +import { fetchProfileV5 } from '../services/user' import { LOAD_USER_SUCCESS, SAVE_AUTH_TOKEN @@ -26,7 +26,7 @@ export function loadUser () { if (!getState().auth.user) { if (getState().auth.token) { const { handle } = decodeToken(getState().auth.token) - fetchProfile(handle).then(user => { + fetchProfileV5(handle).then(user => { dispatch({ type: LOAD_USER_SUCCESS, user From cef9641a25486f266062acc3a454f92a0b36e170 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Mon, 20 Mar 2023 20:25:10 +0600 Subject: [PATCH 11/12] fix: fetch member profile --- src/services/user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/user.js b/src/services/user.js index fc7bd888..229d8807 100644 --- a/src/services/user.js +++ b/src/services/user.js @@ -16,7 +16,7 @@ export async function fetchProfile (handle) { * @returns {Promise<*>} */ export async function fetchProfileV5 (handle) { - const response = await axiosInstance.get(`${MEMBER_API_URL}?handle=${handle}`) + const response = await axiosInstance.get(`${MEMBER_API_URL}/${handle}`) const data = _.get(response, 'data') return data.length ? data[0] : undefined } From aa197139312afa5b9b75c6d73f865c9cf726324f Mon Sep 17 00:00:00 2001 From: Gunasekar-K Date: Fri, 22 Sep 2023 11:30:42 +0530 Subject: [PATCH 12/12] Update config.yml --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0294a753..7bc56b64 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -36,7 +36,7 @@ install_test_dependency: &install_test_dependency install_deploysuite: &install_deploysuite name: Installation of install_deploysuite. command: | - git clone --branch v1.4.14 https://github.com/topcoder-platform/tc-deploy-scripts ../buildscript + git clone --branch v1.4.15 https://github.com/topcoder-platform/tc-deploy-scripts ../buildscript cp ./../buildscript/master_deploy.sh . cp ./../buildscript/buildenv.sh . cp ./../buildscript/awsconfiguration.sh .