@docupace/pipeline 1.0.39-newrelease.19 → 1.0.39-newrelease.4
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/eslint.config.js +1 -1
- package/package.json +2 -1
- package/src/auth0/cli.js +3 -7
- package/src/auth0/configure.js +65 -337
- package/src/auth0/metadata.js +9 -10
- package/src/changeset/canny.js +8 -13
- package/src/changeset/changelog.js +2 -7
- package/src/changeset/cli.js +17 -64
- package/src/changeset/config.js +3 -14
- package/src/changeset/create.js +4 -3
- package/src/changeset/version.js +12 -35
- package/src/next/apache.js +10 -48
- package/src/next/cli.js +21 -28
- package/src/next/config.js +7 -35
- package/src/next/connect.js +30 -68
- package/src/next/copy.js +3 -9
- package/src/next/deploy.js +8 -64
- package/src/next/haproxy.js +9 -35
- package/src/next/jira.js +7 -11
- package/terraform/apply.sh +2 -13
- package/terraform/init.sh +2 -14
- package/terraform/plan.sh +21 -36
- package/.claude/settings.local.json +0 -16
- package/bin/azuread_update_callbacks_for_app.sh +0 -58
- package/src/changeset/changeset-config.js +0 -34
package/eslint.config.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@docupace/pipeline",
|
|
3
|
-
"version": "1.0.39-newrelease.
|
|
3
|
+
"version": "1.0.39-newrelease.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@changesets/cli": "^2.27.10",
|
|
22
22
|
"@docupace/core-client": "^0.1.59",
|
|
23
|
+
"@docupace/pipeline": "^1.0.33-alpha-2",
|
|
23
24
|
"auth0-deploy-cli": "^8.8.0",
|
|
24
25
|
"axios": "^1.7.9",
|
|
25
26
|
"commander": "^12.1.0",
|
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> <
|
|
18
|
+
'configureFromSite <fromSite> <toSite> <fromEnv> <toEnv> <deployUI> <deployGraphQLServer> <useNewDomain> <useS3>',
|
|
19
19
|
)
|
|
20
20
|
.description('Configure the Auth0 tenants in env for the given site')
|
|
21
21
|
.action(
|
|
@@ -27,9 +27,7 @@ program
|
|
|
27
27
|
deployUI,
|
|
28
28
|
deployGraphQLServer,
|
|
29
29
|
useNewDomain,
|
|
30
|
-
|
|
31
|
-
deployCCUI,
|
|
32
|
-
useS3Gq,
|
|
30
|
+
useS3,
|
|
33
31
|
) => {
|
|
34
32
|
await configureFromSite(
|
|
35
33
|
fromSite,
|
|
@@ -39,9 +37,7 @@ program
|
|
|
39
37
|
deployUI,
|
|
40
38
|
deployGraphQLServer,
|
|
41
39
|
useNewDomain,
|
|
42
|
-
|
|
43
|
-
deployCCUI,
|
|
44
|
-
useS3Gq === 'true' || useS3Gq === true,
|
|
40
|
+
useS3 === 'true' || useS3 === true,
|
|
45
41
|
);
|
|
46
42
|
},
|
|
47
43
|
);
|
package/src/auth0/configure.js
CHANGED
|
@@ -10,10 +10,7 @@ import {
|
|
|
10
10
|
readDeployConfig,
|
|
11
11
|
} from '../next/deploy.js';
|
|
12
12
|
|
|
13
|
-
import {
|
|
14
|
-
getVaultSecrets,
|
|
15
|
-
updateVaultSecrets
|
|
16
|
-
} from './vault.js';
|
|
13
|
+
import { getVaultSecrets, updateVaultSecrets } from './vault.js';
|
|
17
14
|
import {
|
|
18
15
|
coreSiteEnvMap,
|
|
19
16
|
environmentConfig,
|
|
@@ -22,7 +19,7 @@ import {
|
|
|
22
19
|
|
|
23
20
|
async function ensureDirectoryExists(dirPath) {
|
|
24
21
|
try {
|
|
25
|
-
await fs.promises.mkdir(dirPath, {recursive: true});
|
|
22
|
+
await fs.promises.mkdir(dirPath, { recursive: true });
|
|
26
23
|
console.log(`Directory created or already exists: ${dirPath}`);
|
|
27
24
|
} catch (err) {
|
|
28
25
|
console.error(`Failed to create directory: ${err.message}`);
|
|
@@ -60,7 +57,6 @@ export async function getAuth0AuthToken(auth0Domain, clientId, clientSecret) {
|
|
|
60
57
|
async function configureUI(
|
|
61
58
|
siteHost,
|
|
62
59
|
coreURL,
|
|
63
|
-
connectURL,
|
|
64
60
|
docupaceHost,
|
|
65
61
|
site,
|
|
66
62
|
env,
|
|
@@ -70,7 +66,6 @@ async function configureUI(
|
|
|
70
66
|
auth0Token,
|
|
71
67
|
vaultSiteSecretsPath,
|
|
72
68
|
imageTag,
|
|
73
|
-
revision,
|
|
74
69
|
repoPath,
|
|
75
70
|
useS3,
|
|
76
71
|
) {
|
|
@@ -79,13 +74,12 @@ async function configureUI(
|
|
|
79
74
|
);
|
|
80
75
|
siteHost = siteHost.replace('https://', '');
|
|
81
76
|
coreURL = coreURL.replace('https://', '');
|
|
82
|
-
connectURL = connectURL.replace('https://', '');
|
|
83
77
|
|
|
84
78
|
try {
|
|
85
79
|
const auth0Response = await axios.get(
|
|
86
80
|
`https://${auth0Domain}/api/v2/clients`,
|
|
87
81
|
{
|
|
88
|
-
headers: {authorization: `Bearer ${auth0Token}`},
|
|
82
|
+
headers: { authorization: `Bearer ${auth0Token}` },
|
|
89
83
|
},
|
|
90
84
|
);
|
|
91
85
|
|
|
@@ -121,18 +115,10 @@ async function configureUI(
|
|
|
121
115
|
console.log(`siteAWSSecretsPath => ${siteAWSSecretsPath}`);
|
|
122
116
|
}
|
|
123
117
|
|
|
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
|
-
|
|
132
118
|
// Prepare ui.app.yaml
|
|
133
119
|
const uiAppYaml = `
|
|
134
120
|
repo: docupace-ui-main
|
|
135
|
-
revision:
|
|
121
|
+
revision: master
|
|
136
122
|
`.trim();
|
|
137
123
|
|
|
138
124
|
// Prepare ui.values.yaml
|
|
@@ -143,21 +129,33 @@ uiMain:
|
|
|
143
129
|
auth0ClientId: vault:secret/data/${site}/ui/config#AUTH0_CLIENT_ID
|
|
144
130
|
graphqlClientUrl: https://${siteHost}/api/graphql
|
|
145
131
|
graphqlServerUrl: https://${siteHost}/api/graphql
|
|
146
|
-
connectUrl: https://${
|
|
132
|
+
connectUrl: https://${siteHost}
|
|
147
133
|
coreUrl: https://${coreURL}
|
|
148
134
|
env:
|
|
149
135
|
AUTH0_CLIENT_SECRET: vault:secret/data/${site}/ui/config#AUTH0_CLIENT_SECRET
|
|
150
|
-
AUTH0_SECRET: vault:secret/data/${site}/ui/config#AUTH0_SECRET
|
|
136
|
+
AUTH0_SECRET: vault:secret/data/${site}/ui/config#AUTH0_SECRET
|
|
137
|
+
${
|
|
138
|
+
useS3 === true || useS3 === 'true'
|
|
139
|
+
? `
|
|
140
|
+
AWS_ACCESS_KEY_ID: vault:secret/data/${site}/aws/config#AWS_ACCESS_KEY_ID
|
|
141
|
+
AWS_BUCKET_NAME: vault:secret/data/${site}/aws/config#AWS_BUCKET_NAME
|
|
142
|
+
AWS_SECRET_ACCESS_KEY: vault:secret/data/${site}/aws/config#AWS_SECRET_ACCESS_KEY
|
|
143
|
+
`.trim()
|
|
144
|
+
: ''
|
|
145
|
+
}
|
|
151
146
|
image:
|
|
152
|
-
repository: registry.paperout.com/docupace-ui-main
|
|
147
|
+
repository: registry.paperout.com/docupace-ui-main-dev-docker-local/docupace-ui-main
|
|
153
148
|
tag: ${imageTag}
|
|
154
|
-
${
|
|
149
|
+
${
|
|
150
|
+
useS3 === true || useS3 === 'true'
|
|
151
|
+
? `
|
|
155
152
|
serviceAccount:
|
|
156
153
|
create: true
|
|
157
154
|
annotations:
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
155
|
+
eks.amazonaws.com/role-arn: arn:aws:iam::${siteAWSSecrets.AWS_ACCOUNT_ID}:role/eks-pod-identity-connect-next-${env}-${site}-bucket
|
|
156
|
+
`.trim()
|
|
157
|
+
: ''
|
|
158
|
+
}
|
|
161
159
|
imagePullSecrets:
|
|
162
160
|
- name: jf-artifactory
|
|
163
161
|
ingress:
|
|
@@ -222,7 +220,7 @@ externalConnectService:
|
|
|
222
220
|
if (err) {
|
|
223
221
|
console.error('Failed to write the file:', err);
|
|
224
222
|
} else {
|
|
225
|
-
console.log(
|
|
223
|
+
console.log('File written successfully.');
|
|
226
224
|
}
|
|
227
225
|
},
|
|
228
226
|
);
|
|
@@ -234,167 +232,18 @@ externalConnectService:
|
|
|
234
232
|
if (err) {
|
|
235
233
|
console.error('Failed to write the file:', err);
|
|
236
234
|
} else {
|
|
237
|
-
console.log(
|
|
235
|
+
console.log('File written successfully.');
|
|
238
236
|
}
|
|
239
237
|
},
|
|
240
238
|
);
|
|
241
|
-
console.log('
|
|
239
|
+
console.log('Done!');
|
|
240
|
+
console.log('Updating Core Site Config...');
|
|
241
|
+
await updateCoreSiteConfig(site, env, useS3);
|
|
242
242
|
} catch (error) {
|
|
243
243
|
console.error('Error configuring UI:', error);
|
|
244
244
|
}
|
|
245
245
|
}
|
|
246
246
|
|
|
247
|
-
async function configureCCUI(
|
|
248
|
-
siteHost,
|
|
249
|
-
coreURL,
|
|
250
|
-
connectURL,
|
|
251
|
-
docupaceHost,
|
|
252
|
-
site,
|
|
253
|
-
env,
|
|
254
|
-
auth0Domain,
|
|
255
|
-
auth0ClientId,
|
|
256
|
-
auth0ClientSecret,
|
|
257
|
-
auth0Token,
|
|
258
|
-
vaultSiteSecretsPath,
|
|
259
|
-
imageTag,
|
|
260
|
-
revision,
|
|
261
|
-
repoPath,
|
|
262
|
-
useS3,
|
|
263
|
-
ccUrl,
|
|
264
|
-
) {
|
|
265
|
-
console.log(
|
|
266
|
-
`Configuring CC UI for site: ${site} Host: ${siteHost} in env: ${env}`,
|
|
267
|
-
);
|
|
268
|
-
siteHost = siteHost.replace('https://', '');
|
|
269
|
-
coreURL = coreURL.replace('https://', '');
|
|
270
|
-
connectURL = connectURL.replace('https://', '');
|
|
271
|
-
ccUrl = ccUrl.replace('https://', '');
|
|
272
|
-
|
|
273
|
-
try {
|
|
274
|
-
const auth0Response = await axios.get(
|
|
275
|
-
`https://${auth0Domain}/api/v2/clients`,
|
|
276
|
-
{
|
|
277
|
-
headers: {authorization: `Bearer ${auth0Token}`},
|
|
278
|
-
},
|
|
279
|
-
);
|
|
280
|
-
|
|
281
|
-
const uiClient = auth0Response.data.find(
|
|
282
|
-
(client) => client.name === 'docupace-ui-cc',
|
|
283
|
-
);
|
|
284
|
-
const uiAuth0ClientId = uiClient.client_id;
|
|
285
|
-
const uiAuth0ClientSecret = uiClient.client_secret;
|
|
286
|
-
|
|
287
|
-
// Generate Auth0 Secret
|
|
288
|
-
const uiAuth0Secret = crypto
|
|
289
|
-
.randomBytes(48)
|
|
290
|
-
.toString('base64')
|
|
291
|
-
.replace(/[^a-zA-Z0-9]/g, '');
|
|
292
|
-
|
|
293
|
-
// Prepare data payload
|
|
294
|
-
console.log('Preparing Vault CC UI data payload...');
|
|
295
|
-
const ccUISecretData = JSON.stringify({
|
|
296
|
-
data: {
|
|
297
|
-
AUTH0_CLIENT_ID: uiAuth0ClientId,
|
|
298
|
-
AUTH0_CLIENT_SECRET: uiAuth0ClientSecret,
|
|
299
|
-
AUTH0_SECRET: uiAuth0Secret,
|
|
300
|
-
},
|
|
301
|
-
});
|
|
302
|
-
console.log('Updating Vault Site Secret =>', vaultSiteSecretsPath);
|
|
303
|
-
await updateVaultSecrets(vaultSiteSecretsPath, ccUISecretData);
|
|
304
|
-
|
|
305
|
-
let siteAWSSecrets = null;
|
|
306
|
-
|
|
307
|
-
if (useS3 === true || useS3 === 'true') {
|
|
308
|
-
const siteAWSSecretsPath = getVaultSecretsConfigs(site).awsSecretsPath;
|
|
309
|
-
siteAWSSecrets = await getVaultSecrets(siteAWSSecretsPath);
|
|
310
|
-
console.log(`siteAWSSecretsPath => ${siteAWSSecretsPath}`);
|
|
311
|
-
}
|
|
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
|
-
|
|
321
|
-
// Prepare cc.app.yaml
|
|
322
|
-
const uiCCValuesYaml = `
|
|
323
|
-
uiMain:
|
|
324
|
-
auth0BaseUrl: https://${ccUrl}
|
|
325
|
-
auth0IssuerBaseUrl: https://${auth0Domain}
|
|
326
|
-
auth0ClientId: vault:secret/data/${site}/ui-cc/config#AUTH0_CLIENT_ID
|
|
327
|
-
graphqlClientUrl: https://${siteHost}/api/graphql
|
|
328
|
-
graphqlServerUrl: https://${siteHost}/api/graphql
|
|
329
|
-
connectUrl: https://${connectURL}
|
|
330
|
-
coreUrl: https://${coreURL}
|
|
331
|
-
env:
|
|
332
|
-
AUTH0_AUDIENCE: core-api-access
|
|
333
|
-
AUTH0_CLIENT_SECRET: vault:secret/data/${site}/ui-cc/config#AUTH0_CLIENT_SECRET
|
|
334
|
-
AUTH0_SECRET: vault:secret/data/${site}/ui-cc/config#AUTH0_SECRET${awsS3Vars ? '\n ' + awsS3Vars.trim() : ''}
|
|
335
|
-
image:
|
|
336
|
-
repository: registry.paperout.com/docupace-ui-main-${env}-docker-local/cc-ui-app
|
|
337
|
-
tag: ${imageTag}
|
|
338
|
-
imagePullSecrets:
|
|
339
|
-
- name: jf-artifactory
|
|
340
|
-
ingress:
|
|
341
|
-
enabled: true
|
|
342
|
-
className: nginx
|
|
343
|
-
annotations:
|
|
344
|
-
external-dns.alpha.kubernetes.io/hostname: ${ccUrl}
|
|
345
|
-
external-dns.alpha.kubernetes.io/zone: public
|
|
346
|
-
cert-manager.io/cluster-issuer: letsencrypt
|
|
347
|
-
nginx.ingress.kubernetes.io/proxy-buffer-size: 128k
|
|
348
|
-
hosts:
|
|
349
|
-
- host: ${ccUrl}
|
|
350
|
-
paths:
|
|
351
|
-
- path: /
|
|
352
|
-
pathType: Prefix
|
|
353
|
-
tls:
|
|
354
|
-
- hosts:
|
|
355
|
-
- ${ccUrl}
|
|
356
|
-
secretName: dp-cc-ui-cert
|
|
357
|
-
${useS3 === true || useS3 === 'true' ? `
|
|
358
|
-
serviceAccount:
|
|
359
|
-
create: true
|
|
360
|
-
annotations:
|
|
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` : ''}
|
|
364
|
-
`.trim();
|
|
365
|
-
|
|
366
|
-
console.log('Writing configuration files...');
|
|
367
|
-
await ensureDirectoryExists(path.resolve(`${repoPath}/dp/${site}`));
|
|
368
|
-
|
|
369
|
-
await fs.writeFile(
|
|
370
|
-
`${repoPath}/dp/${site}/cc.app.yaml`,
|
|
371
|
-
uiCCAppYaml,
|
|
372
|
-
(err) => {
|
|
373
|
-
if (err) {
|
|
374
|
-
console.error(`Failed to write ${repoPath}/dp/${site}/cc.app.yaml file:`, err);
|
|
375
|
-
} else {
|
|
376
|
-
console.log(`File ${repoPath}/dp/${site}/cc.app.yaml written successfully.`);
|
|
377
|
-
}
|
|
378
|
-
},
|
|
379
|
-
);
|
|
380
|
-
|
|
381
|
-
await fs.writeFile(
|
|
382
|
-
`${repoPath}/dp/${site}/cc.values.yaml`,
|
|
383
|
-
uiCCValuesYaml,
|
|
384
|
-
(err) => {
|
|
385
|
-
if (err) {
|
|
386
|
-
console.error(`Failed to write ${repoPath}/dp/${site}/cc.values.yaml file:`, err);
|
|
387
|
-
} else {
|
|
388
|
-
console.log(`File ${repoPath}/dp/${site}/cc.values.yaml written successfully.`);
|
|
389
|
-
}
|
|
390
|
-
},
|
|
391
|
-
);
|
|
392
|
-
console.log('CC-UI configuration is done!');
|
|
393
|
-
} catch (error) {
|
|
394
|
-
console.error('Error configuring CC-UI:', error);
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
|
|
398
247
|
export async function cleanAndWritePropertiesFile(configPath, content) {
|
|
399
248
|
try {
|
|
400
249
|
const cleanedContent = content
|
|
@@ -406,12 +255,12 @@ export async function cleanAndWritePropertiesFile(configPath, content) {
|
|
|
406
255
|
await fs.writeFile(configPath, cleanedContent, 'utf8');
|
|
407
256
|
console.log(`Cleaned and written file to: ${configPath}`);
|
|
408
257
|
} catch (error) {
|
|
409
|
-
console.error(
|
|
258
|
+
console.error('Error writing properties file:', error.message);
|
|
410
259
|
process.exit(1);
|
|
411
260
|
}
|
|
412
261
|
}
|
|
413
262
|
|
|
414
|
-
export async function updateCoreSiteConfig(site, env,
|
|
263
|
+
export async function updateCoreSiteConfig(site, env, useS3) {
|
|
415
264
|
try {
|
|
416
265
|
const coreSiteEnv = coreSiteEnvMap[env];
|
|
417
266
|
|
|
@@ -427,7 +276,7 @@ export async function updateCoreSiteConfig(site, env, useS3Ui, useS3Gq) {
|
|
|
427
276
|
|
|
428
277
|
let siteAWSSecrets = null;
|
|
429
278
|
|
|
430
|
-
if (
|
|
279
|
+
if (useS3 === true || useS3 === 'true') {
|
|
431
280
|
const siteAWSSecretsPath = getVaultSecretsConfigs(site).awsSecretsPath;
|
|
432
281
|
siteAWSSecrets = await getVaultSecrets(siteAWSSecretsPath);
|
|
433
282
|
console.log(`siteAWSSecretsPath => ${siteAWSSecretsPath}`);
|
|
@@ -435,11 +284,14 @@ export async function updateCoreSiteConfig(site, env, useS3Ui, useS3Gq) {
|
|
|
435
284
|
|
|
436
285
|
const coreSiteConfig = `
|
|
437
286
|
${
|
|
438
|
-
|
|
439
|
-
|
|
287
|
+
siteAWSSecrets
|
|
288
|
+
? `
|
|
440
289
|
com.docupace.imports.files.FilesImportConfig.aws.accessKeyId=${siteAWSSecrets.AWS_ACCESS_KEY_ID}
|
|
441
290
|
com.docupace.imports.files.FilesImportConfig.aws.accessKeySecret=${siteAWSSecrets.AWS_SECRET_ACCESS_KEY}
|
|
442
|
-
com.docupace.imports.files.FilesImportConfig.aws.region=${siteAWSSecrets.AWS_REGION}
|
|
291
|
+
com.docupace.imports.files.FilesImportConfig.aws.region=${siteAWSSecrets.AWS_REGION}
|
|
292
|
+
`.trim()
|
|
293
|
+
: ''
|
|
294
|
+
}
|
|
443
295
|
`;
|
|
444
296
|
|
|
445
297
|
await fs.ensureDir(path.join(coreSiteConfigRepoPath, site.toUpperCase()));
|
|
@@ -466,11 +318,9 @@ async function configureGraphQLServer(
|
|
|
466
318
|
auth0Token,
|
|
467
319
|
vaultSiteSecretsPath,
|
|
468
320
|
imageTag,
|
|
469
|
-
revision,
|
|
470
321
|
standardConfigRemoteBranch,
|
|
471
322
|
repoPath,
|
|
472
323
|
commonSecrets,
|
|
473
|
-
useS3,
|
|
474
324
|
) {
|
|
475
325
|
siteHost = siteHost.replace('https://', '');
|
|
476
326
|
coreURL = coreURL.replace('https://', '');
|
|
@@ -482,7 +332,7 @@ async function configureGraphQLServer(
|
|
|
482
332
|
const auth0Response = await axios.get(
|
|
483
333
|
`https://${auth0Domain}/api/v2/clients`,
|
|
484
334
|
{
|
|
485
|
-
headers: {authorization: `Bearer ${auth0Token}`},
|
|
335
|
+
headers: { authorization: `Bearer ${auth0Token}` },
|
|
486
336
|
},
|
|
487
337
|
);
|
|
488
338
|
|
|
@@ -517,28 +367,13 @@ async function configureGraphQLServer(
|
|
|
517
367
|
|
|
518
368
|
await updateVaultSecrets(vaultSiteSecretsPath, graphQLServerSecretData);
|
|
519
369
|
|
|
520
|
-
|
|
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
|
|
370
|
+
// Prepare ui.app.yaml
|
|
536
371
|
const graphQLServerAppYaml = `
|
|
537
372
|
repo: docupace-graphql-server
|
|
538
|
-
revision: ${
|
|
373
|
+
revision: ${standardConfigRemoteBranch}
|
|
539
374
|
`.trim();
|
|
540
375
|
|
|
541
|
-
// Prepare
|
|
376
|
+
// Prepare ui.values.yaml
|
|
542
377
|
const graphQLServerValuesYaml = `
|
|
543
378
|
graphqlServer:
|
|
544
379
|
auth0Domain: https://${auth0Domain}
|
|
@@ -554,19 +389,9 @@ graphqlServer:
|
|
|
554
389
|
STANDARD_CONFIG_REMOTE_PATH: vault:secret/data/common/config#STANDARD_CONFIG_REMOTE_PATH
|
|
555
390
|
SITE_CONFIG_REMOTE_PATH: vault:secret/data/${site}/common/config#SITE_CONFIG_REMOTE_PATH
|
|
556
391
|
AUTH0_CC_CLIENT_ID: vault:secret/data/${site}/graphql-server/config#AUTH0_CC_CLIENT_ID
|
|
557
|
-
AUTH0_CC_CLIENT_SECRET: vault:secret/data/${site}/graphql-server/config#AUTH0_CC_CLIENT_SECRET
|
|
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
|
-
: ''}
|
|
392
|
+
AUTH0_CC_CLIENT_SECRET: vault:secret/data/${site}/graphql-server/config#AUTH0_CC_CLIENT_SECRET
|
|
568
393
|
image:
|
|
569
|
-
repository: registry.paperout.com/docupace-graphql-server
|
|
394
|
+
repository: registry.paperout.com/docupace-graphql-server-dev-docker-local/docupace-graphql-server
|
|
570
395
|
tag: ${imageTag}
|
|
571
396
|
imagePullSecrets:
|
|
572
397
|
- name: jf-artifactory
|
|
@@ -586,7 +411,8 @@ ingress:
|
|
|
586
411
|
tls:
|
|
587
412
|
- hosts:
|
|
588
413
|
- ${siteHost}
|
|
589
|
-
secretName: dp-next-ui-cert
|
|
414
|
+
secretName: dp-next-ui-cert
|
|
415
|
+
`.trim();
|
|
590
416
|
|
|
591
417
|
// Write configuration files
|
|
592
418
|
console.log('Writing ArgoCD GraphQL Server configuration files...');
|
|
@@ -609,13 +435,13 @@ ingress:
|
|
|
609
435
|
graphQLServerValuesYaml,
|
|
610
436
|
(err) => {
|
|
611
437
|
if (err) {
|
|
612
|
-
console.error(
|
|
438
|
+
console.error('Failed to write the file:', err);
|
|
613
439
|
} else {
|
|
614
|
-
console.log(
|
|
440
|
+
console.log('File written successfully.');
|
|
615
441
|
}
|
|
616
442
|
},
|
|
617
443
|
);
|
|
618
|
-
console.log('
|
|
444
|
+
console.log('Done!');
|
|
619
445
|
} catch (error) {
|
|
620
446
|
console.error('Error configuring GraphQL Server:', error);
|
|
621
447
|
}
|
|
@@ -629,9 +455,7 @@ export async function configureFromSite(
|
|
|
629
455
|
deployUI,
|
|
630
456
|
deployGraphQLServer,
|
|
631
457
|
useNewDomain,
|
|
632
|
-
|
|
633
|
-
deployCCUI,
|
|
634
|
-
useS3Gq,
|
|
458
|
+
useS3,
|
|
635
459
|
) {
|
|
636
460
|
console.log(
|
|
637
461
|
`Configuring Auth0 tenants and ArgoCD apps for site: ${toSite} in env: ${toEnv} from site: ${fromSite}`,
|
|
@@ -656,14 +480,10 @@ export async function configureFromSite(
|
|
|
656
480
|
auth0ClientSecret,
|
|
657
481
|
);
|
|
658
482
|
|
|
659
|
-
// UI
|
|
483
|
+
// UI app
|
|
660
484
|
const uiSecretsPath = getVaultSecretsConfigs(toSite).uiSecretsPath;
|
|
661
485
|
console.log(`uiSecretsPath => ${uiSecretsPath}`);
|
|
662
486
|
|
|
663
|
-
// UI CC app
|
|
664
|
-
const ccUISecretsPath = getVaultSecretsConfigs(toSite).ccUISecretsPath;
|
|
665
|
-
console.log(`ccUISecretsPath => ${ccUISecretsPath}`);
|
|
666
|
-
|
|
667
487
|
// GraphQL-Server app
|
|
668
488
|
const graphqlSecretsPath =
|
|
669
489
|
getVaultSecretsConfigs(toSite).graphqlServerSecretsPath;
|
|
@@ -683,111 +503,47 @@ export async function configureFromSite(
|
|
|
683
503
|
//TODO: clone fromEnv and toEnv. replace above with this
|
|
684
504
|
|
|
685
505
|
// 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
|
-
);
|
|
716
506
|
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
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',
|
|
507
|
+
// Read deploy configs
|
|
508
|
+
const { deployConfig: deployUIConfig } = await readDeployConfig(
|
|
509
|
+
'ui',
|
|
732
510
|
fromEnv,
|
|
733
511
|
fromSite,
|
|
734
512
|
'values',
|
|
735
513
|
);
|
|
514
|
+
const uiImageTag = deployUIConfig.image.tag;
|
|
736
515
|
|
|
737
|
-
const {deployConfig:
|
|
516
|
+
const { deployConfig: deployGraphQLServerConfig } = await readDeployConfig(
|
|
738
517
|
'graphql-server',
|
|
739
518
|
fromEnv,
|
|
740
519
|
fromSite,
|
|
741
|
-
'
|
|
520
|
+
'values',
|
|
742
521
|
);
|
|
743
|
-
|
|
744
|
-
const gqRevision = deployGraphQLServerRevisionConfig.revision;
|
|
745
|
-
|
|
746
|
-
console.log(`Copying Latest GQ Server Revision: ${gqRevision}`);
|
|
747
|
-
|
|
748
522
|
const graphqlImageTag = deployGraphQLServerConfig.image.tag;
|
|
749
523
|
const graphqlStandardConfigRemoteBranch =
|
|
750
524
|
deployGraphQLServerConfig.graphqlServer.standardConfigRemoteBranch;
|
|
751
525
|
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
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
|
-
|
|
526
|
+
console.log(
|
|
527
|
+
`Copying Latest UI Image Tag: ${deployUIConfig.image.tag} from site: ${fromSite} to site: ${toSite}`,
|
|
528
|
+
);
|
|
764
529
|
console.log(
|
|
765
530
|
`Copying Latest GraphQL Server Image Tag: ${deployGraphQLServerConfig.image.tag} from site: ${fromSite} to site: ${toSite}`,
|
|
766
531
|
);
|
|
767
532
|
|
|
768
533
|
const envConfig = environmentConfig[toEnv];
|
|
769
534
|
|
|
770
|
-
let CORE_URL,
|
|
771
|
-
|
|
772
|
-
CORE_API_CONTEXT,
|
|
773
|
-
CONNECT_URL,
|
|
774
|
-
DOCUPACE_HOST;
|
|
775
|
-
const newUrl = envConfig.newUrl(toSite);
|
|
776
|
-
const ccUrl = envConfig.ccUrl(toSite);
|
|
777
|
-
|
|
778
|
-
SITE_HOST = `${newUrl}`;
|
|
779
|
-
|
|
780
|
-
if (useNewDomain === true || useNewDomain === 'true') {
|
|
535
|
+
let CORE_URL, SITE_HOST, CORE_API_CONTEXT, CONNECT_URL, DOCUPACE_HOST;
|
|
536
|
+
if (useNewDomain) {
|
|
781
537
|
const newUrl = envConfig.newUrl(toSite);
|
|
782
538
|
CORE_URL = `${newUrl}/core`;
|
|
783
|
-
|
|
539
|
+
SITE_HOST = newUrl;
|
|
784
540
|
CORE_API_CONTEXT = 'core';
|
|
785
541
|
CONNECT_URL = `${newUrl}/connect`;
|
|
786
542
|
DOCUPACE_HOST = envConfig.docupaceHost();
|
|
787
543
|
} else {
|
|
788
544
|
const oldUrl = envConfig.oldUrl(toSite);
|
|
789
545
|
CORE_URL = oldUrl;
|
|
790
|
-
|
|
546
|
+
SITE_HOST = oldUrl;
|
|
791
547
|
CORE_API_CONTEXT = toSite;
|
|
792
548
|
CONNECT_URL = `${oldUrl}_ui`;
|
|
793
549
|
}
|
|
@@ -796,7 +552,6 @@ export async function configureFromSite(
|
|
|
796
552
|
await configureUI(
|
|
797
553
|
SITE_HOST,
|
|
798
554
|
CORE_URL,
|
|
799
|
-
CONNECT_URL,
|
|
800
555
|
DOCUPACE_HOST,
|
|
801
556
|
toSite,
|
|
802
557
|
toEnv,
|
|
@@ -806,30 +561,8 @@ export async function configureFromSite(
|
|
|
806
561
|
auth0Token,
|
|
807
562
|
uiSecretsPath,
|
|
808
563
|
uiImageTag,
|
|
809
|
-
uiRevision,
|
|
810
|
-
repoPathToEnv,
|
|
811
|
-
useS3Ui,
|
|
812
|
-
);
|
|
813
|
-
}
|
|
814
|
-
|
|
815
|
-
if (deployCCUI === true || deployCCUI === 'true') {
|
|
816
|
-
await configureCCUI(
|
|
817
|
-
SITE_HOST,
|
|
818
|
-
CORE_URL,
|
|
819
|
-
CONNECT_URL,
|
|
820
|
-
DOCUPACE_HOST,
|
|
821
|
-
toSite,
|
|
822
|
-
toEnv,
|
|
823
|
-
auth0Domain,
|
|
824
|
-
auth0ClientId,
|
|
825
|
-
auth0ClientSecret,
|
|
826
|
-
auth0Token,
|
|
827
|
-
ccUISecretsPath,
|
|
828
|
-
ccImageTag,
|
|
829
|
-
ccRevision,
|
|
830
564
|
repoPathToEnv,
|
|
831
|
-
|
|
832
|
-
ccUrl,
|
|
565
|
+
useS3,
|
|
833
566
|
);
|
|
834
567
|
}
|
|
835
568
|
|
|
@@ -845,17 +578,12 @@ export async function configureFromSite(
|
|
|
845
578
|
auth0Token,
|
|
846
579
|
graphqlSecretsPath,
|
|
847
580
|
graphqlImageTag,
|
|
848
|
-
gqRevision,
|
|
849
581
|
graphqlStandardConfigRemoteBranch,
|
|
850
582
|
repoPathToEnv,
|
|
851
583
|
commonSecrets,
|
|
852
|
-
useS3Gq,
|
|
853
584
|
);
|
|
854
|
-
|
|
855
|
-
console.log('Updating Core Site Config...');
|
|
856
|
-
await updateCoreSiteConfig(toSite, toEnv, useS3Ui, useS3Gq);
|
|
857
585
|
await pushDeployConfig(
|
|
858
586
|
repoPathToEnv,
|
|
859
|
-
`Config update for ${toSite} from ${fromSite} GraphQL: ${graphqlImageTag}`,
|
|
587
|
+
`Config update for ${toSite} from ${fromSite} with UI: ${uiImageTag} and GraphQL: ${graphqlImageTag}`,
|
|
860
588
|
);
|
|
861
589
|
}
|