@docupace/pipeline 1.0.15 → 1.0.16

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@docupace/pipeline",
3
- "version": "1.0.15",
3
+ "version": "1.0.16",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "type": "module",
package/src/auth0/cli.js CHANGED
@@ -18,10 +18,10 @@ dotenv.config({ path: ['.env.pipeline.local', 'config/.env.pipeline.local'] });
18
18
  const program = new Command();
19
19
 
20
20
  program
21
- .command('configureFromSite <fromSite> <toSite> <env> <deployUI> <deployGraphQLServer> <useNewDomain>')
21
+ .command('configureFromSite <fromSite> <toSite> <fromEnv> <toEnv> <deployUI> <deployGraphQLServer> <useNewDomain>')
22
22
  .description('Configure the Auth0 tenants in env for the given site')
23
- .action(async (fromSite, toSite, env, deployUI, deployGraphQLServer, useNewDomain) => {
24
- await configureFromSite(fromSite, toSite, env, deployUI, deployGraphQLServer, useNewDomain);
23
+ .action(async (fromSite, toSite, fromEnv,toEnv, deployUI, deployGraphQLServer, useNewDomain) => {
24
+ await configureFromSite(fromSite, toSite, fromEnv, toEnv, deployUI, deployGraphQLServer, useNewDomain);
25
25
  });
26
26
 
27
27
  program
@@ -167,6 +167,11 @@ async function templateAuth0(siteUrl, coreApiContext, env, filePaths, deployUI,
167
167
 
168
168
  graphqlAllowedCallbacksUrls = [`${siteUrl}/api/graphql/callback`];
169
169
  graphqlAllowedLogoutUrls = [`${siteUrl}/api/graphql/`];
170
+
171
+ connectAllowedCallbacksUrls = [`${siteUrl}/connect/samlCallback?client_name=auth0`];
172
+ connectlAllowedLogoutUrls = [ `${siteUrl}/connect`];
173
+
174
+
170
175
  } else {
171
176
  uiAllowedCallbacksUrls = [
172
177
  `${siteUrl}/api/auth/callback`,
@@ -185,6 +190,16 @@ async function templateAuth0(siteUrl, coreApiContext, env, filePaths, deployUI,
185
190
  `http://localhost:4000/api/graphql/`,
186
191
  `${siteUrl}/api/graphql/`,
187
192
  ];
193
+
194
+ connectAllowedCallbacksUrls = [
195
+ `${siteUrl}/connect/samlCallback?client_name=auth0`,
196
+ `http://localhost:9000/connect/samlCallback?client_name=auth0`,
197
+ ];
198
+ connectlAllowedLogoutUrls = [
199
+ `${siteUrl}/connect`
200
+ ];
201
+
202
+
188
203
  }
189
204
 
190
205
  const configureUI = deployUI === 'true';
@@ -196,6 +211,16 @@ async function templateAuth0(siteUrl, coreApiContext, env, filePaths, deployUI,
196
211
  callbacks: uiAllowedCallbacksUrls,
197
212
  allowed_logout_urls: uiAllowedLogoutUrls,
198
213
  });
214
+
215
+ //TODO: move to separate function for connect
216
+ console.log('connect_allowed_callbacks_urls ->', connectAllowedCallbacksUrls);
217
+ console.log('connect_allowed_logout_urls ->', connectAllowedLogoutUrls);
218
+
219
+ await updateJsonFile(filePaths.connectJson, {
220
+ callbacks: connectAllowedCallbacksUrls,
221
+ allowed_logout_urls: connectAllowedLogoutUrls,
222
+ });
223
+
199
224
  console.log('Updated URLs for main UI...');
200
225
  } else {
201
226
  await fs.promises.unlink(filePaths.uiJson);
@@ -276,6 +301,9 @@ export async function getAuth0AuthToken(auth0Domain, clientId, clientSecret) {
276
301
 
277
302
  async function configureUI(siteHost, coreURL, docupaceHost, site, env, useNewDomain, auth0Domain, auth0ClientId, auth0ClientSecret, auth0Token, vaultSiteSecretsPath, imageTag, repoPath) {
278
303
  console.log(`Configuring UI for site: ${site} Host: ${siteHost} in env: ${env}`);
304
+ siteHost = siteHost.replace('https://', '');
305
+ coreURL = coreURL.replace('https://', '');
306
+
279
307
 
280
308
  try {
281
309
  const auth0Response = await axios.get(`https://${auth0Domain}/api/v2/clients`, {
@@ -403,6 +431,8 @@ externalConnectService:
403
431
  }
404
432
 
405
433
  async function configureGraphQLServer(siteHost, coreURL, docupaceHost, site, env, auth0Domain, auth0ClientId, auth0ClientSecret, auth0Token, vaultSiteSecretsPath, imageTag, standardConfigRemoteBranch, repoPath, commonSecrets) {
434
+ siteHost = siteHost.replace('https://', '');
435
+ coreURL = coreURL.replace('https://', '');
406
436
  console.log(`Configuring GraphQL Server for site: ${site} Host: ${siteHost} in env: ${env}`);
407
437
 
408
438
  try {
@@ -507,8 +537,9 @@ ingress:
507
537
  }
508
538
  }
509
539
 
510
- export async function configureFromSite(fromSite, toSite, env, deployUI, deployGraphQLServer, useNewDomain) {
511
- console.log(`Configuring Auth0 tenants and ArgoCD apps for site: ${toSite} in env: ${env} from site: ${fromSite}`);
540
+
541
+ export async function configureFromSite(fromSite, toSite, fromEnv,toEnv, deployUI, deployGraphQLServer, useNewDomain) {
542
+ console.log(`Configuring Auth0 tenants and ArgoCD apps for site: ${toSite} in env: ${toEnv} from site: ${fromSite}`);
512
543
  // Common Secrets
513
544
  const commonSecretsPath = getVaultSecretsConfigs(toSite).commonSecretsPath;
514
545
  console.log(`commonSecretsPath => ${commonSecretsPath}`)
@@ -519,7 +550,7 @@ export async function configureFromSite(fromSite, toSite, env, deployUI, deployG
519
550
  console.log(`siteCommonSecretsPath => ${siteCommonSecretsPath}`)
520
551
  const siteCommonSecrets = await getVaultSecrets(siteCommonSecretsPath);
521
552
 
522
- const auth0Domain = `docupace-${env}-${toSite}.us.auth0.com`
553
+ const auth0Domain = `docupace-${toEnv}-${toSite}.us.auth0.com`
523
554
  const auth0ClientId = siteCommonSecrets.AUTH0_CLIENT_ID;
524
555
  const auth0ClientSecret = siteCommonSecrets.AUTH0_CLIENT_SECRET;
525
556
  const auth0Token = await getAuth0AuthToken(auth0Domain, auth0ClientId, auth0ClientSecret);
@@ -530,17 +561,29 @@ export async function configureFromSite(fromSite, toSite, env, deployUI, deployG
530
561
 
531
562
  // GraphQL-Server app
532
563
  const graphqlSecretsPath = getVaultSecretsConfigs(toSite).graphqlServerSecretsPath;
533
- console.log(`graphqlSecretsPath => ${graphqlSecretsPath}`)
564
+ console.log(`graphqlSecretsPath => ${graphqlSecretsPath}`);
534
565
 
566
+ let repoPathFromEnv ="";
567
+ let repoPathToEnv = "";
535
568
  // Clone repositories
536
- const repoPath = await cloneEnvRepository(env);
569
+ if ( fromEnv == toEnv ) {
570
+ repoPathFromEnv = await cloneEnvRepository(fromEnv);
571
+ repoPathToEnv = repoPathFromEnv;
572
+ }else {
573
+ repoPathFromEnv = await cloneEnvRepository(fromEnv);
574
+ repoPathToEnv = await cloneEnvRepository(toEnv);
575
+ }
576
+
577
+
578
+ //TODO: clone fromEnv and toEnv. replace above with this
579
+
537
580
  const auth0RepoPath = await cloneRepository('auth0-site-setup');
538
581
 
539
582
  // Read deploy configs
540
- const { deployConfig: deployUIConfig } = await readDeployConfig('ui', env, fromSite, 'values');
583
+ const { deployConfig: deployUIConfig } = await readDeployConfig('ui', fromEnv, fromSite, 'values');
541
584
  const uiImageTag = deployUIConfig.image.tag;
542
585
 
543
- const { deployConfig: deployGraphQLServerConfig} = await readDeployConfig('graphql-server', env, fromSite, 'values');
586
+ const { deployConfig: deployGraphQLServerConfig} = await readDeployConfig('graphql-server', fromEnv, fromSite, 'values');
544
587
  const graphqlImageTag = deployGraphQLServerConfig.image.tag;
545
588
  const graphqlStandardConfigRemoteBranch = deployGraphQLServerConfig.graphqlServer.standardConfigRemoteBranch;
546
589
 
@@ -551,6 +594,7 @@ export async function configureFromSite(fromSite, toSite, env, deployUI, deployG
551
594
  loginHtml: './auth0-site-setup/template/pages/login.html',
552
595
  graphqlJson: './auth0-site-setup/template/clients/docupace-graphql.json',
553
596
  uiJson: './auth0-site-setup/template/clients/docupace-ui-main.json',
597
+ connectJson: './auth0-site-setup/template/clients/docupace-connect.json',
554
598
  databaseJson: './auth0-site-setup/template/database-connections/docupace/database.json',
555
599
  twilioJson: './auth0-site-setup/template/guardian/providers/sms-twilio.json',
556
600
  };
@@ -558,7 +602,7 @@ export async function configureFromSite(fromSite, toSite, env, deployUI, deployG
558
602
  console.log(`Copying Latest UI Image Tag: ${deployUIConfig.image.tag} from site: ${fromSite} to site: ${toSite}`);
559
603
  console.log(`Copying Latest GraphQL Server Image Tag: ${deployGraphQLServerConfig.image.tag} from site: ${fromSite} to site: ${toSite}`);
560
604
 
561
- const envConfig = environmentConfig[env];
605
+ const envConfig = environmentConfig[toEnv];
562
606
 
563
607
  let CORE_URL,
564
608
  SITE_HOST,
@@ -580,15 +624,15 @@ export async function configureFromSite(fromSite, toSite, env, deployUI, deployG
580
624
  CONNECT_URL = `${oldUrl}_ui`;
581
625
  }
582
626
 
583
- await templateAuth0(SITE_HOST, CORE_API_CONTEXT, env, filePaths, deployUI, deployGraphQLServer, commonSecrets);
627
+ await templateAuth0(SITE_HOST, CORE_API_CONTEXT, toEnv, filePaths, deployUI, deployGraphQLServer, commonSecrets);
584
628
  await importAuth0Templates('./auth0-site-setup/template', auth0Domain, auth0ClientId, auth0ClientSecret);
585
629
 
586
630
  if (deployUI === 'true') {
587
- await configureUI(SITE_HOST, CORE_URL, DOCUPACE_HOST, toSite, env, useNewDomain, auth0Domain, auth0ClientId, auth0ClientSecret, auth0Token, uiSecretsPath, uiImageTag, repoPath);
631
+ await configureUI(SITE_HOST, CORE_URL, DOCUPACE_HOST, toSite, toEnv, useNewDomain, auth0Domain, auth0ClientId, auth0ClientSecret, auth0Token, uiSecretsPath, uiImageTag, repoPathToEnv);
588
632
  }
589
633
 
590
- await configureGraphQLServer(SITE_HOST, CORE_URL, DOCUPACE_HOST, toSite, env, auth0Domain, auth0ClientId, auth0ClientSecret, auth0Token, graphqlSecretsPath, graphqlImageTag, graphqlStandardConfigRemoteBranch, repoPath, commonSecrets);
591
- await pushDeployConfig(repoPath, `Config update for ${toSite} from ${fromSite} with UI: ${uiImageTag} and GraphQL: ${graphqlImageTag}`);
634
+ await configureGraphQLServer(SITE_HOST, CORE_URL, DOCUPACE_HOST, toSite, toEnv, auth0Domain, auth0ClientId, auth0ClientSecret, auth0Token, graphqlSecretsPath, graphqlImageTag, graphqlStandardConfigRemoteBranch, repoPathToEnv, commonSecrets);
635
+ await pushDeployConfig(repoPathToEnv, `Config update for ${toSite} from ${fromSite} with UI: ${uiImageTag} and GraphQL: ${graphqlImageTag}`);
592
636
 
593
637
  await initializeAuth0Configuration({
594
638
  initConfiguration: "true",
@@ -603,4 +647,4 @@ export async function configureFromSite(fromSite, toSite, env, deployUI, deployG
603
647
  auth0AuthToken: auth0Token,
604
648
  coreApiIdentifier: commonSecrets.CORE_API_IDENTIFIER
605
649
  })
606
- }
650
+ }
@@ -23,14 +23,18 @@ export async function addApacheSite() {
23
23
  await fs.writeFile('private.key', Buffer.from(haproxyPrivateKey, 'base64'));
24
24
  await fs.chmod('private.key', 0o600);
25
25
 
26
- const server = `${process.env.ENVIRONMENT}-apalb01a.corp.docupace.com`;
26
+
27
27
  console.log("Running command");
28
- const sshCmd = (script) =>
28
+ const sshCmd = (server,script) =>
29
29
  $`ssh -i private.key -o StrictHostKeyChecking=no root@${server} ${script}`;
30
30
 
31
+ let server = `${process.env.ENVIRONMENT}-apalb01a.corp.docupace.com`;
31
32
  // The script is run twice in the Bash version
32
- await sshCmd(`/root/repo/iis-preprod/scripts/addsite/add_core_site.sh ${process.env.ENVIRONMENT} ${process.env.SITE}`);
33
- //await sshCmd(`/root/repo/iis-preprod/scripts/addsite/add_core_site.sh ${process.env.ENVIRONMENT} ${process.env.SITE}`);
33
+ await sshCmd(server, `/root/repo/iis-preprod/scripts/addsite/add_core_site.sh ${process.env.ENVIRONMENT} ${process.env.SITE}`);
34
+
35
+ server = `${process.env.ENVIRONMENT}-apalb01b.corp.docupace.com`;
36
+
37
+ await sshCmd(server,`/root/repo/iis-preprod/scripts/addsite/add_core_site.sh ${process.env.ENVIRONMENT} ${process.env.SITE}`);
34
38
  }
35
39
 
36
40
 
@@ -25,6 +25,14 @@ process.env.CONNECT_DIR = process.env.CONNECT_DIR || 'connect';
25
25
  const vaultToken = process.env.VAULT_TOKEN;
26
26
  const vaultAddr = process.env.VAULT_ADDR;
27
27
 
28
+ const connectUIEnvMap= {
29
+ 'dev': 'dev',
30
+ 'qa': 'preprod',
31
+ 'stg': 'stg',
32
+ 'uat': 'uat',
33
+ 'prd': 'prod-las'
34
+ };
35
+
28
36
  function log(msg) {
29
37
  console.log(`[*] ${msg}`);
30
38
  }
@@ -57,8 +65,8 @@ function log(msg) {
57
65
 
58
66
 
59
67
  export async function connectClone() {
60
-
61
-
68
+ const connectFromEnv = connectUIEnvMap[process.env.BUILD_ENVIRONMENT];
69
+ const connectToEnv = connectUIEnvMap[process.env.BUILD_ENVIRONMENT];
62
70
  if (!vaultToken || !vaultAddr) {
63
71
  console.error("Error: VAULT_TOKEN and VAULT_ADDR must be set.");
64
72
  throw new Error("VAULT_TOKEN and VAULT_ADDR must be set.");
@@ -87,7 +95,7 @@ export async function connectClone() {
87
95
 
88
96
  process.env.AUTH0_REGION_DOMAIN="us.auth0.com";
89
97
 
90
- log(`BUILD_ENVIRONMENT: ${process.env.BUILD_ENVIRONMENT}`);
98
+ log(`BUILD_ENVIRONMENT: ${connectToEnv}`);
91
99
  log(`BUILD_SITE: ${process.env.BUILD_SITE}`);
92
100
  log(`AUTH0_SUBDOMAIN: ${process.env.AUTH0_SUBDOMAIN}`);
93
101
  log(`AUTH0_REGION_DOMAIN: ${process.env.AUTH0_REGION_DOMAIN}`);
@@ -101,11 +109,12 @@ export async function connectClone() {
101
109
 
102
110
 
103
111
  await gitCheckout('connect-deploy', process.env.CONNECT_DIR);
104
- await gitCheckout(`${process.env.BUILD_ENVIRONMENT}-site-settings`, `${process.env.CONNECT_DIR}/${process.env.BUILD_ENVIRONMENT}-site-settings`);
112
+
113
+ await gitCheckout(`${connectToEnv}-site-settings`, `${process.env.CONNECT_DIR}/${connectToEnv}-site-settings`);
105
114
 
106
115
  // 5) Create site clone (emulating the dock.sh call)
107
- const cloneFrom = path.join(projectRoot,process.env.CONNECT_DIR,`envs`,`${process.env.FROM_BUILD_ENVIRONMENT}/${process.env.FROM_BUILD_SITE}`);
108
- const cloneTo = path.join(projectRoot,process.env.CONNECT_DIR,`envs`,`${process.env.BUILD_ENVIRONMENT}/${process.env.BUILD_SITE}`);
116
+ const cloneFrom = path.join(projectRoot,process.env.CONNECT_DIR,`envs`,`${connectFromEnv}/${process.env.FROM_BUILD_SITE}`);
117
+ const cloneTo = path.join(projectRoot,process.env.CONNECT_DIR,`envs`,`${connectToEnv}/${process.env.BUILD_SITE}`);
109
118
 
110
119
  const connectHome = path.join(projectRoot,process.env.CONNECT_DIR);
111
120
  if (!(await fs.pathExists(cloneFrom))) {
@@ -123,7 +132,7 @@ export async function connectClone() {
123
132
  await (async () => {
124
133
  try {
125
134
  // Execute the shell command
126
- const result = await $`cd ${cloneFrom} && bash dock.sh clone ${process.env.BUILD_ENVIRONMENT} ${process.env.BUILD_SITE} ${process.env.IMAGE_VERSION}`;
135
+ const result = await $`cd ${cloneFrom} && bash dock.sh clone ${connectToEnv} ${process.env.BUILD_SITE} ${process.env.IMAGE_VERSION}`;
127
136
  console.log('Command succeeded:');
128
137
  console.log('stdout:', result.stdout); // Standard output
129
138
  console.log('stderr:', result.stderr); // Standard error
@@ -179,7 +188,7 @@ export async function connectClone() {
179
188
 
180
189
  if (numChanges > 0) {
181
190
  const jiraTicket = process.env.JIRA_TICKET || 'NO_JIRA';
182
- const message = `${jiraTicket} usdoc-s-builui job download_auth0_metadata for ${process.env.BUILD_ENVIRONMENT}/${process.env.BUILD_SITE}`;
191
+ const message = `${jiraTicket} usdoc-s-builui job download_auth0_metadata for ${connectToEnv}/${process.env.BUILD_SITE}`;
183
192
  log('About to commit changes to git');
184
193
  await $`cd ${cloneTo} && git commit -m ${message}`;
185
194
  await $`cd ${cloneTo} && git push -u origin master`;