@docupace/pipeline 1.0.39-newrelease.13 → 1.0.39-newrelease.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,58 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ ENV=$1
5
+
6
+ if [ -z "$ENV" ]; then
7
+ echo "Usage: $0 <environment>"
8
+ exit 1
9
+ fi
10
+
11
+ TENANT_ID="docupace.onmicrosoft.com"
12
+ CLIENT_ID=$ARM_CLIENT_ID
13
+ CLIENT_SECRET=$ARM_CLIENT_SECRET
14
+ NEW_REDIRECT="https://docupace-$ENV-$SITE_NAME.us.auth0.com/login/callback"
15
+ APP_ID="auth0-$ENV-docupace"
16
+ APP_SCOPE="https://graph.microsoft.com/.default"
17
+ GRAPH_API="https://graph.microsoft.com/v1.0"
18
+
19
+ ACCESS_TOKEN=$(curl -s -X POST \
20
+ -H "Content-Type: application/x-www-form-urlencoded" \
21
+ -d "grant_type=client_credentials&client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&scope=$APP_SCOPE" \
22
+ https://login.microsoftonline.com/$TENANT_ID/oauth2/v2.0/token | jq -r '.access_token')
23
+
24
+ APP_DETAILS=$(curl -s -G "https://graph.microsoft.com/v1.0/applications" \
25
+ -H "Authorization: Bearer $ACCESS_TOKEN" \
26
+ -H "Content-Type: application/json" \
27
+ --data-urlencode "\$filter=appId eq '$CLIENT_ID'")
28
+
29
+ APP_ID=$(echo "$APP_DETAILS" | jq -r '.value[0].id')
30
+ echo "Application ID: $APP_ID"
31
+
32
+ CURRENT_REDIRECTS=$(echo "$APP_DETAILS" | jq -r '.value[0].web.redirectUris // []')
33
+ echo "Current redirect URIs: $CURRENT_REDIRECTS"
34
+
35
+ if echo "$CURRENT_REDIRECTS" | jq -e --arg uri "$NEW_REDIRECT" 'index($uri)' > /dev/null; then
36
+ echo "Redirect URI '$NEW_REDIRECT' already exists. No update needed."
37
+ else
38
+ UPDATED_REDIRECTS=$(echo "$CURRENT_REDIRECTS" | jq --arg uri "$NEW_REDIRECT" '. + [$uri]')
39
+ echo "Updated redirect URIs: $UPDATED_REDIRECTS"
40
+
41
+ UPDATE_REDIRECTS=$(curl -fs -X PATCH \
42
+ -H "Authorization: Bearer $ACCESS_TOKEN" \
43
+ -H "Content-Type: application/json" \
44
+ -d "{
45
+ \"web\": {
46
+ \"redirectUris\": $UPDATED_REDIRECTS
47
+ }
48
+ }" \
49
+ "https://graph.microsoft.com/v1.0/applications/$APP_ID")
50
+
51
+ if [ $? -eq 0 ]; then
52
+ echo "Successfully updated redirect URIs"
53
+ echo $UPDATE_REDIRECTS
54
+ else
55
+ echo "Failed to update redirect URIs"
56
+ echo $UPDATE_REDIRECTS
57
+ fi
58
+ fi
package/eslint.config.js CHANGED
@@ -10,7 +10,7 @@ export default [
10
10
  globals: {
11
11
  ...globals.browser,
12
12
  ...globals.node, // Add Node.js globals
13
- },
13
+ },g
14
14
  },
15
15
  },
16
16
  pluginJs.configs.recommended,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@docupace/pipeline",
3
- "version": "1.0.39-newrelease.13",
3
+ "version": "1.0.39-newrelease.14",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "type": "module",
package/src/auth0/cli.js CHANGED
@@ -15,7 +15,7 @@ const program = new Command();
15
15
 
16
16
  program
17
17
  .command(
18
- 'configureFromSite <fromSite> <toSite> <fromEnv> <toEnv> <deployUI> <deployGraphQLServer> <useNewDomain> <useS3> <deployCCUI>',
18
+ 'configureFromSite <fromSite> <toSite> <fromEnv> <toEnv> <deployUI> <deployGraphQLServer> <useNewDomain> <useS3Ui> <deployCCUI> <useS3Gq> ',
19
19
  )
20
20
  .description('Configure the Auth0 tenants in env for the given site')
21
21
  .action(
@@ -27,8 +27,9 @@ program
27
27
  deployUI,
28
28
  deployGraphQLServer,
29
29
  useNewDomain,
30
- useS3,
30
+ useS3Ui,
31
31
  deployCCUI,
32
+ useS3Gq,
32
33
  ) => {
33
34
  await configureFromSite(
34
35
  fromSite,
@@ -38,8 +39,9 @@ program
38
39
  deployUI,
39
40
  deployGraphQLServer,
40
41
  useNewDomain,
41
- useS3 === 'true' || useS3 === true,
42
+ useS3Ui === 'true' || useS3Ui === true,
42
43
  deployCCUI,
44
+ useS3Gq === 'true' || useS3Gq === true,
43
45
  );
44
46
  },
45
47
  );
@@ -10,7 +10,10 @@ import {
10
10
  readDeployConfig,
11
11
  } from '../next/deploy.js';
12
12
 
13
- import { getVaultSecrets, updateVaultSecrets } from './vault.js';
13
+ import {
14
+ getVaultSecrets,
15
+ updateVaultSecrets
16
+ } from './vault.js';
14
17
  import {
15
18
  coreSiteEnvMap,
16
19
  environmentConfig,
@@ -19,7 +22,7 @@ import {
19
22
 
20
23
  async function ensureDirectoryExists(dirPath) {
21
24
  try {
22
- await fs.promises.mkdir(dirPath, { recursive: true });
25
+ await fs.promises.mkdir(dirPath, {recursive: true});
23
26
  console.log(`Directory created or already exists: ${dirPath}`);
24
27
  } catch (err) {
25
28
  console.error(`Failed to create directory: ${err.message}`);
@@ -67,6 +70,7 @@ async function configureUI(
67
70
  auth0Token,
68
71
  vaultSiteSecretsPath,
69
72
  imageTag,
73
+ revision,
70
74
  repoPath,
71
75
  useS3,
72
76
  ) {
@@ -81,7 +85,7 @@ async function configureUI(
81
85
  const auth0Response = await axios.get(
82
86
  `https://${auth0Domain}/api/v2/clients`,
83
87
  {
84
- headers: { authorization: `Bearer ${auth0Token}` },
88
+ headers: {authorization: `Bearer ${auth0Token}`},
85
89
  },
86
90
  );
87
91
 
@@ -117,10 +121,18 @@ async function configureUI(
117
121
  console.log(`siteAWSSecretsPath => ${siteAWSSecretsPath}`);
118
122
  }
119
123
 
124
+ const awsS3Vars = (useS3 === true || useS3 === 'true')
125
+ ? `
126
+ AWS_ACCESS_KEY_ID: vault:secret/data/${site}/aws/config#AWS_ACCESS_KEY_ID
127
+ AWS_BUCKET_NAME: vault:secret/data/${site}/aws/config#AWS_BUCKET_NAME
128
+ AWS_SECRET_ACCESS_KEY: vault:secret/data/${site}/aws/config#AWS_SECRET_ACCESS_KEY
129
+ AWS_REGION: vault:secret/data/${site}/aws/config#AWS_REGION`
130
+ : '';
131
+
120
132
  // Prepare ui.app.yaml
121
133
  const uiAppYaml = `
122
134
  repo: docupace-ui-main
123
- revision: master
135
+ revision: ${revision}
124
136
  `.trim();
125
137
 
126
138
  // Prepare ui.values.yaml
@@ -135,29 +147,17 @@ uiMain:
135
147
  coreUrl: https://${coreURL}
136
148
  env:
137
149
  AUTH0_CLIENT_SECRET: vault:secret/data/${site}/ui/config#AUTH0_CLIENT_SECRET
138
- AUTH0_SECRET: vault:secret/data/${site}/ui/config#AUTH0_SECRET
139
- ${
140
- useS3 === true || useS3 === 'true'
141
- ? `
142
- AWS_ACCESS_KEY_ID: vault:secret/data/${site}/aws/config#AWS_ACCESS_KEY_ID
143
- AWS_BUCKET_NAME: vault:secret/data/${site}/aws/config#AWS_BUCKET_NAME
144
- AWS_SECRET_ACCESS_KEY: vault:secret/data/${site}/aws/config#AWS_SECRET_ACCESS_KEY
145
- `.trim()
146
- : ''
147
- }
150
+ AUTH0_SECRET: vault:secret/data/${site}/ui/config#AUTH0_SECRET${awsS3Vars ? '\n ' + awsS3Vars.trim() : ''}
148
151
  image:
149
- repository: registry.paperout.com/docupace-ui-main-dev-docker-local/docupace-ui-main
152
+ repository: registry.paperout.com/docupace-ui-main-${env}-docker-local/enterprise-ui-app
150
153
  tag: ${imageTag}
151
- ${
152
- useS3 === true || useS3 === 'true'
153
- ? `
154
+ ${useS3 === true || useS3 === 'true' ? `
154
155
  serviceAccount:
155
156
  create: true
156
157
  annotations:
157
- eks.amazonaws.com/role-arn: arn:aws:iam::${siteAWSSecrets.AWS_ACCOUNT_ID}:role/eks-pod-identity-connect-next-${env}-${site}-bucket
158
- `.trim()
159
- : ''
160
- }
158
+ "helm.sh/hook": pre-install
159
+ "helm.sh/hook-weight": "-10"
160
+ eks.amazonaws.com/role-arn: arn:aws:iam::${siteAWSSecrets.AWS_ACCOUNT_ID}:role/eks-pod-identity-connect-next-${env}-${site}-bucket` : ''}
161
161
  imagePullSecrets:
162
162
  - name: jf-artifactory
163
163
  ingress:
@@ -222,7 +222,7 @@ externalConnectService:
222
222
  if (err) {
223
223
  console.error('Failed to write the file:', err);
224
224
  } else {
225
- console.log('File written successfully.');
225
+ console.log(`File ${repoPath}/dp/${site}/ui.app.yaml written successfully.`);
226
226
  }
227
227
  },
228
228
  );
@@ -234,13 +234,11 @@ externalConnectService:
234
234
  if (err) {
235
235
  console.error('Failed to write the file:', err);
236
236
  } else {
237
- console.log('File written successfully.');
237
+ console.log(`File ${repoPath}/dp/${site}/ui.values.yaml written successfully.`);
238
238
  }
239
239
  },
240
240
  );
241
- console.log('Done!');
242
- console.log('Updating Core Site Config...');
243
- await updateCoreSiteConfig(site, env, useS3);
241
+ console.log('The UI part is done!');
244
242
  } catch (error) {
245
243
  console.error('Error configuring UI:', error);
246
244
  }
@@ -259,6 +257,7 @@ async function configureCCUI(
259
257
  auth0Token,
260
258
  vaultSiteSecretsPath,
261
259
  imageTag,
260
+ revision,
262
261
  repoPath,
263
262
  useS3,
264
263
  ccUrl,
@@ -275,7 +274,7 @@ async function configureCCUI(
275
274
  const auth0Response = await axios.get(
276
275
  `https://${auth0Domain}/api/v2/clients`,
277
276
  {
278
- headers: { authorization: `Bearer ${auth0Token}` },
277
+ headers: {authorization: `Bearer ${auth0Token}`},
279
278
  },
280
279
  );
281
280
 
@@ -311,13 +310,16 @@ async function configureCCUI(
311
310
  console.log(`siteAWSSecretsPath => ${siteAWSSecretsPath}`);
312
311
  }
313
312
 
313
+ const awsS3Vars = (useS3 === true || useS3 === 'true')
314
+ ? `
315
+ AWS_ACCESS_KEY_ID: vault:secret/data/${site}/aws/config#AWS_ACCESS_KEY_ID
316
+ AWS_BUCKET_NAME: vault:secret/data/${site}/aws/config#AWS_BUCKET_NAME
317
+ AWS_SECRET_ACCESS_KEY: vault:secret/data/${site}/aws/config#AWS_SECRET_ACCESS_KEY
318
+ AWS_REGION: vault:secret/data/${site}/aws/config#AWS_REGION`
319
+ : '';
320
+
314
321
  // Prepare cc.app.yaml
315
- const uiССAppYaml = `
316
- repo: docupace-ui-main
317
- revision: master
318
- `.trim();
319
- // Prepare cc.values.yaml
320
- const uiССValuesYaml = `
322
+ const uiCCValuesYaml = `
321
323
  uiMain:
322
324
  auth0BaseUrl: https://${ccUrl}
323
325
  auth0IssuerBaseUrl: https://${auth0Domain}
@@ -329,15 +331,9 @@ uiMain:
329
331
  env:
330
332
  AUTH0_AUDIENCE: core-api-access
331
333
  AUTH0_CLIENT_SECRET: vault:secret/data/${site}/ui-cc/config#AUTH0_CLIENT_SECRET
332
- AUTH0_SECRET: vault:secret/data/${site}/ui-cc/config#AUTH0_SECRET
333
- ${
334
- useS3 === true || useS3 === 'true'
335
- ? `
336
- AWS_ACCESS_KEY_ID: vault:secret/data/${site}/aws/config#AWS_ACCESS_KEY_ID
337
- AWS_BUCKET_NAME: vault:secret/data/${site}/aws/config#AWS_BUCKET_NAME
338
- AWS_SECRET_ACCESS_KEY: vault:secret/data/${site}/aws/config#AWS_SECRET_ACCESS_KEY
334
+ AUTH0_SECRET: vault:secret/data/${site}/ui-cc/config#AUTH0_SECRET${awsS3Vars ? '\n ' + awsS3Vars.trim() : ''}
339
335
  image:
340
- repository: registry.paperout.com/docupace-ui-main-dev-docker-local/cc-ui-app
336
+ repository: registry.paperout.com/docupace-ui-main-${env}-docker-local/cc-ui-app
341
337
  tag: ${imageTag}
342
338
  imagePullSecrets:
343
339
  - name: jf-artifactory
@@ -358,19 +354,13 @@ ingress:
358
354
  - hosts:
359
355
  - ${ccUrl}
360
356
  secretName: dp-cc-ui-cert
361
- `.trim()
362
- : ''
363
- }
364
- ${
365
- useS3 === true || useS3 === 'true'
366
- ? `
357
+ ${useS3 === true || useS3 === 'true' ? `
367
358
  serviceAccount:
368
359
  create: true
369
360
  annotations:
370
- eks.amazonaws.com/role-arn: arn:aws:iam::${siteAWSSecrets.AWS_ACCOUNT_ID}:role/eks-pod-identity-connect-next-${env}-${site}-bucket
371
- `.trim()
372
- : ''
373
- }
361
+ "helm.sh/hook": pre-install
362
+ "helm.sh/hook-weight": "-10"
363
+ eks.amazonaws.com/role-arn: arn:aws:iam::${siteAWSSecrets.AWS_ACCOUNT_ID}:role/eks-pod-identity-connect-next-${env}-${site}-bucket` : ''}
374
364
  `.trim();
375
365
 
376
366
  console.log('Writing configuration files...');
@@ -378,32 +368,30 @@ serviceAccount:
378
368
 
379
369
  await fs.writeFile(
380
370
  `${repoPath}/dp/${site}/cc.app.yaml`,
381
- uiССAppYaml,
371
+ uiCCAppYaml,
382
372
  (err) => {
383
373
  if (err) {
384
- console.error('Failed to write the file:', err);
374
+ console.error(`Failed to write ${repoPath}/dp/${site}/cc.app.yaml file:`, err);
385
375
  } else {
386
- console.log('File written successfully.');
376
+ console.log(`File ${repoPath}/dp/${site}/cc.app.yaml written successfully.`);
387
377
  }
388
378
  },
389
379
  );
390
380
 
391
381
  await fs.writeFile(
392
382
  `${repoPath}/dp/${site}/cc.values.yaml`,
393
- uiССValuesYaml,
383
+ uiCCValuesYaml,
394
384
  (err) => {
395
385
  if (err) {
396
- console.error('Failed to write the file:', err);
386
+ console.error(`Failed to write ${repoPath}/dp/${site}/cc.values.yaml file:`, err);
397
387
  } else {
398
- console.log('File written successfully.');
388
+ console.log(`File ${repoPath}/dp/${site}/cc.values.yaml written successfully.`);
399
389
  }
400
390
  },
401
391
  );
402
- console.log('Done!');
403
- console.log('Updating Core Site Config...');
404
- await updateCoreSiteConfig(site, env, useS3);
392
+ console.log('CC-UI configuration is done!');
405
393
  } catch (error) {
406
- console.error('Error configuring UI:', error);
394
+ console.error('Error configuring CC-UI:', error);
407
395
  }
408
396
  }
409
397
 
@@ -418,12 +406,12 @@ export async function cleanAndWritePropertiesFile(configPath, content) {
418
406
  await fs.writeFile(configPath, cleanedContent, 'utf8');
419
407
  console.log(`Cleaned and written file to: ${configPath}`);
420
408
  } catch (error) {
421
- console.error('Error writing properties file:', error.message);
409
+ console.error(`Error writing properties file to ${configPath}:`, error.message);
422
410
  process.exit(1);
423
411
  }
424
412
  }
425
413
 
426
- export async function updateCoreSiteConfig(site, env, useS3) {
414
+ export async function updateCoreSiteConfig(site, env, useS3Ui, useS3Gq) {
427
415
  try {
428
416
  const coreSiteEnv = coreSiteEnvMap[env];
429
417
 
@@ -439,7 +427,7 @@ export async function updateCoreSiteConfig(site, env, useS3) {
439
427
 
440
428
  let siteAWSSecrets = null;
441
429
 
442
- if (useS3 === true || useS3 === 'true') {
430
+ if (useS3Ui === true || useS3Ui === 'true' || useS3Gq === true || useS3Gq === 'true') {
443
431
  const siteAWSSecretsPath = getVaultSecretsConfigs(site).awsSecretsPath;
444
432
  siteAWSSecrets = await getVaultSecrets(siteAWSSecretsPath);
445
433
  console.log(`siteAWSSecretsPath => ${siteAWSSecretsPath}`);
@@ -447,14 +435,11 @@ export async function updateCoreSiteConfig(site, env, useS3) {
447
435
 
448
436
  const coreSiteConfig = `
449
437
  ${
450
- siteAWSSecrets
451
- ? `
438
+ siteAWSSecrets
439
+ ? `
452
440
  com.docupace.imports.files.FilesImportConfig.aws.accessKeyId=${siteAWSSecrets.AWS_ACCESS_KEY_ID}
453
441
  com.docupace.imports.files.FilesImportConfig.aws.accessKeySecret=${siteAWSSecrets.AWS_SECRET_ACCESS_KEY}
454
- com.docupace.imports.files.FilesImportConfig.aws.region=${siteAWSSecrets.AWS_REGION}
455
- `.trim()
456
- : ''
457
- }
442
+ com.docupace.imports.files.FilesImportConfig.aws.region=${siteAWSSecrets.AWS_REGION}`.trim() : ''}
458
443
  `;
459
444
 
460
445
  await fs.ensureDir(path.join(coreSiteConfigRepoPath, site.toUpperCase()));
@@ -481,9 +466,11 @@ async function configureGraphQLServer(
481
466
  auth0Token,
482
467
  vaultSiteSecretsPath,
483
468
  imageTag,
469
+ revision,
484
470
  standardConfigRemoteBranch,
485
471
  repoPath,
486
472
  commonSecrets,
473
+ useS3,
487
474
  ) {
488
475
  siteHost = siteHost.replace('https://', '');
489
476
  coreURL = coreURL.replace('https://', '');
@@ -495,7 +482,7 @@ async function configureGraphQLServer(
495
482
  const auth0Response = await axios.get(
496
483
  `https://${auth0Domain}/api/v2/clients`,
497
484
  {
498
- headers: { authorization: `Bearer ${auth0Token}` },
485
+ headers: {authorization: `Bearer ${auth0Token}`},
499
486
  },
500
487
  );
501
488
 
@@ -530,13 +517,28 @@ async function configureGraphQLServer(
530
517
 
531
518
  await updateVaultSecrets(vaultSiteSecretsPath, graphQLServerSecretData);
532
519
 
533
- // Prepare ui.app.yaml
520
+ let siteAWSSecrets = null;
521
+
522
+ if (useS3 === true || useS3 === 'true') {
523
+ const siteAWSSecretsPath = getVaultSecretsConfigs(site).awsSecretsPath;
524
+ siteAWSSecrets = await getVaultSecrets(siteAWSSecretsPath);
525
+ console.log(`siteAWSSecretsPath => ${siteAWSSecretsPath}`);
526
+ }
527
+
528
+ const awsS3Vars = (useS3 === true || useS3 === 'true')
529
+ ? `
530
+ AWS_ACCESS_KEY_ID: vault:secret/data/${site}/aws/config#AWS_ACCESS_KEY_ID
531
+ AWS_S3_BUCKET_NAME: vault:secret/data/${site}/aws/config#AWS_BUCKET_NAME
532
+ AWS_SECRET_ACCESS_KEY: vault:secret/data/${site}/aws/config#AWS_SECRET_ACCESS_KEY
533
+ AWS_REGION: vault:secret/data/${site}/aws/config#AWS_REGION`.trim()
534
+ : '';
535
+ // Prepare graphql-server.app.yaml
534
536
  const graphQLServerAppYaml = `
535
537
  repo: docupace-graphql-server
536
- revision: ${standardConfigRemoteBranch}
538
+ revision: ${revision}
537
539
  `.trim();
538
540
 
539
- // Prepare ui.values.yaml
541
+ // Prepare graphql-server.values.yaml
540
542
  const graphQLServerValuesYaml = `
541
543
  graphqlServer:
542
544
  auth0Domain: https://${auth0Domain}
@@ -552,9 +554,19 @@ graphqlServer:
552
554
  STANDARD_CONFIG_REMOTE_PATH: vault:secret/data/common/config#STANDARD_CONFIG_REMOTE_PATH
553
555
  SITE_CONFIG_REMOTE_PATH: vault:secret/data/${site}/common/config#SITE_CONFIG_REMOTE_PATH
554
556
  AUTH0_CC_CLIENT_ID: vault:secret/data/${site}/graphql-server/config#AUTH0_CC_CLIENT_ID
555
- AUTH0_CC_CLIENT_SECRET: vault:secret/data/${site}/graphql-server/config#AUTH0_CC_CLIENT_SECRET
557
+ AUTH0_CC_CLIENT_SECRET: vault:secret/data/${site}/graphql-server/config#AUTH0_CC_CLIENT_SECRET${awsS3Vars ? '\n ' + awsS3Vars.trim() : ''}
558
+ ${
559
+ useS3 === true || useS3 === 'true'
560
+ ? `
561
+ serviceAccount:
562
+ create: true
563
+ annotations:
564
+ "helm.sh/hook": pre-install
565
+ "helm.sh/hook-weight": "-10"
566
+ eks.amazonaws.com/role-arn: arn:aws:iam::${siteAWSSecrets.AWS_ACCOUNT_ID}:role/eks-pod-identity-connect-next-${env}-${site}-bucket`.trim()
567
+ : ''}
556
568
  image:
557
- repository: registry.paperout.com/docupace-graphql-server-dev-docker-local/docupace-graphql-server
569
+ repository: registry.paperout.com/docupace-graphql-server-${env}-docker-local/docupace-graphql-server
558
570
  tag: ${imageTag}
559
571
  imagePullSecrets:
560
572
  - name: jf-artifactory
@@ -574,8 +586,7 @@ ingress:
574
586
  tls:
575
587
  - hosts:
576
588
  - ${siteHost}
577
- secretName: dp-next-ui-cert
578
- `.trim();
589
+ secretName: dp-next-ui-cert`.trim();
579
590
 
580
591
  // Write configuration files
581
592
  console.log('Writing ArgoCD GraphQL Server configuration files...');
@@ -598,13 +609,13 @@ ingress:
598
609
  graphQLServerValuesYaml,
599
610
  (err) => {
600
611
  if (err) {
601
- console.error('Failed to write the file:', err);
612
+ console.error(`Failed to write ${repoPath}/dp/${site}/graphql-server.values.yaml file:`, err);
602
613
  } else {
603
- console.log('File written successfully.');
614
+ console.log(`File ${repoPath}/dp/${site}/graphql-server.values.yaml written successfully.`);
604
615
  }
605
616
  },
606
617
  );
607
- console.log('Done!');
618
+ console.log('GraphQL Server configuration is done!');
608
619
  } catch (error) {
609
620
  console.error('Error configuring GraphQL Server:', error);
610
621
  }
@@ -618,8 +629,9 @@ export async function configureFromSite(
618
629
  deployUI,
619
630
  deployGraphQLServer,
620
631
  useNewDomain,
621
- useS3,
632
+ useS3Ui,
622
633
  deployCCUI,
634
+ useS3Gq,
623
635
  ) {
624
636
  console.log(
625
637
  `Configuring Auth0 tenants and ArgoCD apps for site: ${toSite} in env: ${toEnv} from site: ${fromSite}`,
@@ -671,36 +683,95 @@ export async function configureFromSite(
671
683
  //TODO: clone fromEnv and toEnv. replace above with this
672
684
 
673
685
  // const auth0RepoPath = await cloneRepository('auth0-site-setup');
686
+ let uiImageTag, uiRevision;
687
+ if (deployUI === true || deployUI === 'true') {
688
+ // Read deploy configs
689
+ const {deployConfig: deployUIConfig} = await readDeployConfig(
690
+ 'ui',
691
+ fromEnv,
692
+ fromSite,
693
+ 'values',
694
+ );
695
+ const {deployConfig: deployUiRevisionConfig} = await readDeployConfig(
696
+ 'ui',
697
+ fromEnv,
698
+ fromSite,
699
+ 'app',
700
+ );
701
+
702
+ uiImageTag = deployUIConfig.image.tag;
703
+ uiRevision = deployUiRevisionConfig.revision;
704
+
705
+ console.log(`Copying Latest UI Revision: ${uiRevision}`);
706
+ }
707
+
708
+ let ccImageTag, ccRevision;
709
+ if (deployCCUI === true || deployCCUI === 'true') {
710
+ const {deployConfig: deployCCConfig} = await readDeployConfig(
711
+ 'cc',
712
+ fromEnv,
713
+ fromSite,
714
+ 'values',
715
+ );
674
716
 
675
- // Read deploy configs
676
- const { deployConfig: deployUIConfig } = await readDeployConfig(
677
- 'ui',
717
+ const {deployConfig: deployCCRevisionConfig} = await readDeployConfig(
718
+ 'cc',
719
+ fromEnv,
720
+ fromSite,
721
+ 'app',
722
+ );
723
+
724
+ ccImageTag = deployCCConfig.image.tag;
725
+ ccRevision = deployCCRevisionConfig.revision;
726
+
727
+ console.log(`Copying Latest CC Revision: ${ccRevision}`);
728
+ }
729
+
730
+ const {deployConfig: deployGraphQLServerConfig} = await readDeployConfig(
731
+ 'graphql-server',
678
732
  fromEnv,
679
733
  fromSite,
680
734
  'values',
681
735
  );
682
- const uiImageTag = deployUIConfig.image.tag;
683
736
 
684
- const { deployConfig: deployGraphQLServerConfig } = await readDeployConfig(
737
+ const {deployConfig: deployGraphQLServerRevisionConfig} = await readDeployConfig(
685
738
  'graphql-server',
686
739
  fromEnv,
687
740
  fromSite,
688
- 'values',
741
+ 'app',
689
742
  );
743
+
744
+ const gqRevision = deployGraphQLServerRevisionConfig.revision;
745
+
746
+ console.log(`Copying Latest GQ Server Revision: ${gqRevision}`);
747
+
690
748
  const graphqlImageTag = deployGraphQLServerConfig.image.tag;
691
749
  const graphqlStandardConfigRemoteBranch =
692
750
  deployGraphQLServerConfig.graphqlServer.standardConfigRemoteBranch;
693
751
 
694
- console.log(
695
- `Copying Latest UI Image Tag: ${deployUIConfig.image.tag} from site: ${fromSite} to site: ${toSite}`,
696
- );
752
+ if (deployUI === true || deployUI === 'true') {
753
+ console.log(
754
+ `Copying Latest UI Image Tag: ${uiImageTag} from site: ${fromSite} to site: ${toSite}`,
755
+ );
756
+ }
757
+
758
+ if (deployCCUI === true || deployCCUI === 'true') {
759
+ console.log(
760
+ `Copying Latest CC-UI Image Tag: ${ccImageTag} from site: ${fromSite} to site: ${toSite}`,
761
+ );
762
+ }
763
+
697
764
  console.log(
698
765
  `Copying Latest GraphQL Server Image Tag: ${deployGraphQLServerConfig.image.tag} from site: ${fromSite} to site: ${toSite}`,
699
766
  );
700
767
 
701
768
  const envConfig = environmentConfig[toEnv];
702
769
 
703
- let CORE_URL, SITE_HOST, CORE_API_CONTEXT, CONNECT_URL, DOCUPACE_HOST;
770
+ let CORE_URL,
771
+ SITE_HOST,
772
+ CORE_API_CONTEXT,
773
+ CONNECT_URL,
774
+ DOCUPACE_HOST;
704
775
  const newUrl = envConfig.newUrl(toSite);
705
776
  const ccUrl = envConfig.ccUrl(toSite);
706
777
 
@@ -735,8 +806,9 @@ export async function configureFromSite(
735
806
  auth0Token,
736
807
  uiSecretsPath,
737
808
  uiImageTag,
809
+ uiRevision,
738
810
  repoPathToEnv,
739
- useS3,
811
+ useS3Ui,
740
812
  );
741
813
  }
742
814
 
@@ -753,9 +825,10 @@ export async function configureFromSite(
753
825
  auth0ClientSecret,
754
826
  auth0Token,
755
827
  ccUISecretsPath,
756
- uiImageTag,
828
+ ccImageTag,
829
+ ccRevision,
757
830
  repoPathToEnv,
758
- useS3,
831
+ useS3Ui,
759
832
  ccUrl,
760
833
  );
761
834
  }
@@ -772,12 +845,17 @@ export async function configureFromSite(
772
845
  auth0Token,
773
846
  graphqlSecretsPath,
774
847
  graphqlImageTag,
848
+ gqRevision,
775
849
  graphqlStandardConfigRemoteBranch,
776
850
  repoPathToEnv,
777
851
  commonSecrets,
852
+ useS3Gq,
778
853
  );
854
+
855
+ console.log('Updating Core Site Config...');
856
+ await updateCoreSiteConfig(toSite, toEnv, useS3Ui, useS3Gq);
779
857
  await pushDeployConfig(
780
858
  repoPathToEnv,
781
- `Config update for ${toSite} from ${fromSite} with UI: ${uiImageTag} and GraphQL: ${graphqlImageTag}`,
859
+ `Config update for ${toSite} from ${fromSite} GraphQL: ${graphqlImageTag}`,
782
860
  );
783
861
  }
@@ -10,14 +10,15 @@ export async function getAuth0Metadata(site, env) {
10
10
  try {
11
11
  const connectDeployRepoPath = await cloneRepository('connect-deploy');
12
12
 
13
- if (env === 'qa') {
14
- console.log(
15
- `The environment is: (${env}), but connect-deploy has preprod instead`,
16
- );
17
- process.chdir(`${connectDeployRepoPath}/envs/preprod/${site}`);
18
- } else {
19
- process.chdir(`${connectDeployRepoPath}/envs/${env}/${site}`);
20
- }
13
+ // mapping of env to env
14
+ const envMap = {
15
+ dev: 'dev',
16
+ preprod: 'qa',
17
+ stage: 'stage',
18
+ uat: 'uat',
19
+ 'prod-www3': 'prod',
20
+ };
21
+ process.chdir(`${connectDeployRepoPath}/envs/${env}/${site}`);
21
22
 
22
23
  const configPath = path.join('conf', 'application.conf');
23
24
  const appConf = await fs.readFile(configPath, 'utf-8');
@@ -47,7 +48,7 @@ export async function getAuth0Metadata(site, env) {
47
48
  getVaultSecretsConfigs(site).siteCommonSecretsPath;
48
49
  console.log(`siteCommonSecretsPath => ${siteCommonSecretsPath}`);
49
50
  const siteCommonSecrets = await getVaultSecrets(siteCommonSecretsPath);
50
- const auth0Domain = `docupace-${env}-${site}.us.auth0.com`;
51
+ const auth0Domain = `docupace-${envMap[env]}-${site}.us.auth0.com`;
51
52
  const auth0ClientId = siteCommonSecrets.AUTH0_CLIENT_ID;
52
53
  const auth0ClientSecret = siteCommonSecrets.AUTH0_CLIENT_SECRET;
53
54
  const auth0Token = await getAuth0AuthToken(