@docupace/pipeline 1.0.15 → 1.0.17

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.17",
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
@@ -159,6 +159,8 @@ async function templateAuth0(siteUrl, coreApiContext, env, filePaths, deployUI,
159
159
  uiAllowedLogoutUrls;
160
160
  let graphqlAllowedCallbacksUrls,
161
161
  graphqlAllowedLogoutUrls;
162
+ let connectAllowedCallbacksUrls,
163
+ connectlAllowedLogoutUrls;
162
164
 
163
165
  // Configure URLs based on environment
164
166
  if (env === 'prd') {
@@ -167,6 +169,9 @@ async function templateAuth0(siteUrl, coreApiContext, env, filePaths, deployUI,
167
169
 
168
170
  graphqlAllowedCallbacksUrls = [`${siteUrl}/api/graphql/callback`];
169
171
  graphqlAllowedLogoutUrls = [`${siteUrl}/api/graphql/`];
172
+
173
+ connectAllowedCallbacksUrls = [`${siteUrl}/connect/samlCallback?client_name=auth0`];
174
+ connectlAllowedLogoutUrls = [ `${siteUrl}/connect`];
170
175
  } else {
171
176
  uiAllowedCallbacksUrls = [
172
177
  `${siteUrl}/api/auth/callback`,
@@ -176,7 +181,6 @@ async function templateAuth0(siteUrl, coreApiContext, env, filePaths, deployUI,
176
181
  `${siteUrl}`,
177
182
  `http://localhost:3000`,
178
183
  ];
179
-
180
184
  graphqlAllowedCallbacksUrls = [
181
185
  `${siteUrl}/api/graphql/callback`,
182
186
  `http://localhost:4000/api/graphql/callback`,
@@ -185,6 +189,13 @@ async function templateAuth0(siteUrl, coreApiContext, env, filePaths, deployUI,
185
189
  `http://localhost:4000/api/graphql/`,
186
190
  `${siteUrl}/api/graphql/`,
187
191
  ];
192
+ connectAllowedCallbacksUrls = [
193
+ `${siteUrl}/connect/samlCallback?client_name=auth0`,
194
+ `http://localhost:9000/connect/samlCallback?client_name=auth0`,
195
+ ];
196
+ connectlAllowedLogoutUrls = [
197
+ `${siteUrl}/connect`
198
+ ];
188
199
  }
189
200
 
190
201
  const configureUI = deployUI === 'true';
@@ -196,6 +207,16 @@ async function templateAuth0(siteUrl, coreApiContext, env, filePaths, deployUI,
196
207
  callbacks: uiAllowedCallbacksUrls,
197
208
  allowed_logout_urls: uiAllowedLogoutUrls,
198
209
  });
210
+
211
+ //TODO: move to separate function for connect
212
+ console.log('connect_allowed_callbacks_urls ->', connectAllowedCallbacksUrls);
213
+ console.log('connect_allowed_logout_urls ->', connectlAllowedLogoutUrls);
214
+
215
+ await updateJsonFile(filePaths.connectJson, {
216
+ callbacks: connectAllowedCallbacksUrls,
217
+ allowed_logout_urls: connectlAllowedLogoutUrls,
218
+ });
219
+
199
220
  console.log('Updated URLs for main UI...');
200
221
  } else {
201
222
  await fs.promises.unlink(filePaths.uiJson);
@@ -249,7 +270,8 @@ async function templateAuth0(siteUrl, coreApiContext, env, filePaths, deployUI,
249
270
 
250
271
  console.log('Template configuration completed.');
251
272
  } catch (err) {
252
- console.error('Error configuring Auth0 templates:', err);
273
+ // console.error('Error configuring Auth0 templates:', err);
274
+ throw err;
253
275
  }
254
276
  }
255
277
 
@@ -276,6 +298,9 @@ export async function getAuth0AuthToken(auth0Domain, clientId, clientSecret) {
276
298
 
277
299
  async function configureUI(siteHost, coreURL, docupaceHost, site, env, useNewDomain, auth0Domain, auth0ClientId, auth0ClientSecret, auth0Token, vaultSiteSecretsPath, imageTag, repoPath) {
278
300
  console.log(`Configuring UI for site: ${site} Host: ${siteHost} in env: ${env}`);
301
+ siteHost = siteHost.replace('https://', '');
302
+ coreURL = coreURL.replace('https://', '');
303
+
279
304
 
280
305
  try {
281
306
  const auth0Response = await axios.get(`https://${auth0Domain}/api/v2/clients`, {
@@ -403,6 +428,8 @@ externalConnectService:
403
428
  }
404
429
 
405
430
  async function configureGraphQLServer(siteHost, coreURL, docupaceHost, site, env, auth0Domain, auth0ClientId, auth0ClientSecret, auth0Token, vaultSiteSecretsPath, imageTag, standardConfigRemoteBranch, repoPath, commonSecrets) {
431
+ siteHost = siteHost.replace('https://', '');
432
+ coreURL = coreURL.replace('https://', '');
406
433
  console.log(`Configuring GraphQL Server for site: ${site} Host: ${siteHost} in env: ${env}`);
407
434
 
408
435
  try {
@@ -507,8 +534,9 @@ ingress:
507
534
  }
508
535
  }
509
536
 
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}`);
537
+
538
+ export async function configureFromSite(fromSite, toSite, fromEnv,toEnv, deployUI, deployGraphQLServer, useNewDomain) {
539
+ console.log(`Configuring Auth0 tenants and ArgoCD apps for site: ${toSite} in env: ${toEnv} from site: ${fromSite}`);
512
540
  // Common Secrets
513
541
  const commonSecretsPath = getVaultSecretsConfigs(toSite).commonSecretsPath;
514
542
  console.log(`commonSecretsPath => ${commonSecretsPath}`)
@@ -519,7 +547,7 @@ export async function configureFromSite(fromSite, toSite, env, deployUI, deployG
519
547
  console.log(`siteCommonSecretsPath => ${siteCommonSecretsPath}`)
520
548
  const siteCommonSecrets = await getVaultSecrets(siteCommonSecretsPath);
521
549
 
522
- const auth0Domain = `docupace-${env}-${toSite}.us.auth0.com`
550
+ const auth0Domain = `docupace-${toEnv}-${toSite}.us.auth0.com`
523
551
  const auth0ClientId = siteCommonSecrets.AUTH0_CLIENT_ID;
524
552
  const auth0ClientSecret = siteCommonSecrets.AUTH0_CLIENT_SECRET;
525
553
  const auth0Token = await getAuth0AuthToken(auth0Domain, auth0ClientId, auth0ClientSecret);
@@ -530,17 +558,28 @@ export async function configureFromSite(fromSite, toSite, env, deployUI, deployG
530
558
 
531
559
  // GraphQL-Server app
532
560
  const graphqlSecretsPath = getVaultSecretsConfigs(toSite).graphqlServerSecretsPath;
533
- console.log(`graphqlSecretsPath => ${graphqlSecretsPath}`)
561
+ console.log(`graphqlSecretsPath => ${graphqlSecretsPath}`);
534
562
 
563
+ let repoPathFromEnv ="";
564
+ let repoPathToEnv = "";
535
565
  // Clone repositories
536
- const repoPath = await cloneEnvRepository(env);
566
+ if ( fromEnv == toEnv ) {
567
+ repoPathFromEnv = await cloneEnvRepository(fromEnv);
568
+ repoPathToEnv = repoPathFromEnv;
569
+ }else {
570
+ repoPathFromEnv = await cloneEnvRepository(fromEnv);
571
+ repoPathToEnv = await cloneEnvRepository(toEnv);
572
+ }
573
+
574
+ //TODO: clone fromEnv and toEnv. replace above with this
575
+
537
576
  const auth0RepoPath = await cloneRepository('auth0-site-setup');
538
577
 
539
578
  // Read deploy configs
540
- const { deployConfig: deployUIConfig } = await readDeployConfig('ui', env, fromSite, 'values');
579
+ const { deployConfig: deployUIConfig } = await readDeployConfig('ui', fromEnv, fromSite, 'values');
541
580
  const uiImageTag = deployUIConfig.image.tag;
542
581
 
543
- const { deployConfig: deployGraphQLServerConfig} = await readDeployConfig('graphql-server', env, fromSite, 'values');
582
+ const { deployConfig: deployGraphQLServerConfig } = await readDeployConfig('graphql-server', fromEnv, fromSite, 'values');
544
583
  const graphqlImageTag = deployGraphQLServerConfig.image.tag;
545
584
  const graphqlStandardConfigRemoteBranch = deployGraphQLServerConfig.graphqlServer.standardConfigRemoteBranch;
546
585
 
@@ -551,6 +590,7 @@ export async function configureFromSite(fromSite, toSite, env, deployUI, deployG
551
590
  loginHtml: './auth0-site-setup/template/pages/login.html',
552
591
  graphqlJson: './auth0-site-setup/template/clients/docupace-graphql.json',
553
592
  uiJson: './auth0-site-setup/template/clients/docupace-ui-main.json',
593
+ connectJson: './auth0-site-setup/template/clients/docupace-connect.json',
554
594
  databaseJson: './auth0-site-setup/template/database-connections/docupace/database.json',
555
595
  twilioJson: './auth0-site-setup/template/guardian/providers/sms-twilio.json',
556
596
  };
@@ -558,7 +598,7 @@ export async function configureFromSite(fromSite, toSite, env, deployUI, deployG
558
598
  console.log(`Copying Latest UI Image Tag: ${deployUIConfig.image.tag} from site: ${fromSite} to site: ${toSite}`);
559
599
  console.log(`Copying Latest GraphQL Server Image Tag: ${deployGraphQLServerConfig.image.tag} from site: ${fromSite} to site: ${toSite}`);
560
600
 
561
- const envConfig = environmentConfig[env];
601
+ const envConfig = environmentConfig[toEnv];
562
602
 
563
603
  let CORE_URL,
564
604
  SITE_HOST,
@@ -580,15 +620,15 @@ export async function configureFromSite(fromSite, toSite, env, deployUI, deployG
580
620
  CONNECT_URL = `${oldUrl}_ui`;
581
621
  }
582
622
 
583
- await templateAuth0(SITE_HOST, CORE_API_CONTEXT, env, filePaths, deployUI, deployGraphQLServer, commonSecrets);
623
+ await templateAuth0(SITE_HOST, CORE_API_CONTEXT, toEnv, filePaths, deployUI, deployGraphQLServer, commonSecrets);
584
624
  await importAuth0Templates('./auth0-site-setup/template', auth0Domain, auth0ClientId, auth0ClientSecret);
585
625
 
586
626
  if (deployUI === 'true') {
587
- await configureUI(SITE_HOST, CORE_URL, DOCUPACE_HOST, toSite, env, useNewDomain, auth0Domain, auth0ClientId, auth0ClientSecret, auth0Token, uiSecretsPath, uiImageTag, repoPath);
627
+ await configureUI(SITE_HOST, CORE_URL, DOCUPACE_HOST, toSite, toEnv, useNewDomain, auth0Domain, auth0ClientId, auth0ClientSecret, auth0Token, uiSecretsPath, uiImageTag, repoPathToEnv);
588
628
  }
589
629
 
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}`);
630
+ await configureGraphQLServer(SITE_HOST, CORE_URL, DOCUPACE_HOST, toSite, toEnv, auth0Domain, auth0ClientId, auth0ClientSecret, auth0Token, graphqlSecretsPath, graphqlImageTag, graphqlStandardConfigRemoteBranch, repoPathToEnv, commonSecrets);
631
+ await pushDeployConfig(repoPathToEnv, `Config update for ${toSite} from ${fromSite} with UI: ${uiImageTag} and GraphQL: ${graphqlImageTag}`);
592
632
 
593
633
  await initializeAuth0Configuration({
594
634
  initConfiguration: "true",
@@ -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`;