@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 +1 -1
- package/src/auth0/cli.js +3 -3
- package/src/auth0/configure.js +57 -13
- package/src/next/apache.js +8 -4
- package/src/next/connect.js +17 -8
package/package.json
CHANGED
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> <
|
|
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,
|
|
24
|
-
await configureFromSite(fromSite, toSite,
|
|
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
|
package/src/auth0/configure.js
CHANGED
|
@@ -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
|
-
|
|
511
|
-
|
|
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-${
|
|
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
|
-
|
|
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',
|
|
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',
|
|
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[
|
|
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,
|
|
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,
|
|
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,
|
|
591
|
-
await pushDeployConfig(
|
|
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
|
+
}
|
package/src/next/apache.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|
package/src/next/connect.js
CHANGED
|
@@ -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: ${
|
|
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
|
-
|
|
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`,`${
|
|
108
|
-
const cloneTo = path.join(projectRoot,process.env.CONNECT_DIR,`envs`,`${
|
|
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 ${
|
|
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 ${
|
|
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`;
|