@docupace/pipeline 1.0.39-newrelease.13 → 1.0.39-newrelease.15
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/.claude/settings.local.json +16 -0
- package/bin/azuread_update_callbacks_for_app.sh +58 -0
- package/eslint.config.js +1 -1
- package/package.json +1 -1
- package/src/auth0/cli.js +5 -3
- package/src/auth0/configure.js +175 -97
- package/src/auth0/metadata.js +10 -9
- package/src/changeset/changeset-config.js +34 -0
- package/src/changeset/cli.js +42 -17
- package/src/changeset/config.js +5 -0
- package/src/changeset/version.js +22 -9
- package/src/next/apache.js +48 -10
- package/src/next/cli.js +23 -17
- package/src/next/config.js +10 -8
- package/src/next/connect.js +68 -30
- package/src/next/deploy.js +53 -6
- package/src/next/haproxy.js +24 -8
- package/src/next/jira.js +11 -7
- package/terraform/apply.sh +12 -1
- package/terraform/init.sh +12 -1
- package/terraform/plan.sh +35 -22
package/src/auth0/metadata.js
CHANGED
|
@@ -10,14 +10,15 @@ export async function getAuth0Metadata(site, env) {
|
|
|
10
10
|
try {
|
|
11
11
|
const connectDeployRepoPath = await cloneRepository('connect-deploy');
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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(
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
|
|
4
|
+
// Get absolute path to .changeset/config.json using current working directory
|
|
5
|
+
const configPath = path.join(process.cwd(), '.changeset', 'config.json');
|
|
6
|
+
|
|
7
|
+
// Function to update baseBranch to BITBUCKET_BRANCH
|
|
8
|
+
export function updateBaseBranch() {
|
|
9
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
10
|
+
if (!process.env.BITBUCKET_BRANCH) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
let originalbaseBranch = config.baseBranch;
|
|
14
|
+
config.baseBranch = process.env.BITBUCKET_BRANCH;
|
|
15
|
+
|
|
16
|
+
if (!config.baseBranch) {
|
|
17
|
+
throw new Error('BITBUCKET_BRANCH environment variable is not set.');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
21
|
+
console.log(`baseBranch updated to ${process.env.BITBUCKET_BRANCH}`);
|
|
22
|
+
|
|
23
|
+
return originalbaseBranch;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Function to revert baseBranch to original value
|
|
27
|
+
export function revertBaseBranch(originalBaseBranch) {
|
|
28
|
+
if (!originalBaseBranch) return;
|
|
29
|
+
|
|
30
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
31
|
+
config.baseBranch = originalBaseBranch;
|
|
32
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
33
|
+
console.log(`baseBranch reverted to ${originalBaseBranch}`);
|
|
34
|
+
}
|
package/src/changeset/cli.js
CHANGED
|
@@ -7,7 +7,11 @@ import { $ } from 'zx';
|
|
|
7
7
|
import { validateChangesets } from './validate.js';
|
|
8
8
|
|
|
9
9
|
import { isMonoRepo, setGitInfo } from '../next/util.js';
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
toShortVersion,
|
|
12
|
+
updateJiraWithVersion,
|
|
13
|
+
versionCommand,
|
|
14
|
+
} from './version.js';
|
|
11
15
|
import { createChangeset } from './create.js';
|
|
12
16
|
|
|
13
17
|
const program = new Command();
|
|
@@ -36,8 +40,9 @@ async function commitTagCommand(releases) {
|
|
|
36
40
|
}
|
|
37
41
|
|
|
38
42
|
export function getAppReleases(releases) {
|
|
39
|
-
const appReleases = releases.filter(
|
|
40
|
-
release
|
|
43
|
+
const appReleases = releases.filter(
|
|
44
|
+
(release) =>
|
|
45
|
+
release.name.endsWith('-app') || release.name.endsWith('-template'),
|
|
41
46
|
);
|
|
42
47
|
return appReleases;
|
|
43
48
|
}
|
|
@@ -58,17 +63,30 @@ async function commitTagMono(releases) {
|
|
|
58
63
|
versions.push(`${appName}@${newVersion}`);
|
|
59
64
|
}
|
|
60
65
|
|
|
61
|
-
const
|
|
62
|
-
|
|
66
|
+
const defaultBranch = process.env.BITBUCKET_BRANCH;
|
|
67
|
+
|
|
68
|
+
if (!process.env.IS_DEV) {
|
|
69
|
+
await $`git commit -m "Version bump to ${versions.join(',')} and changelog"`;
|
|
70
|
+
await $`git push origin ${defaultBranch}`;
|
|
71
|
+
} else {
|
|
72
|
+
console.log(`Simulate Version bump to ${versions.join(',')} and changelog`);
|
|
73
|
+
}
|
|
63
74
|
|
|
64
|
-
await $`git commit -m "Version bump to ${versions.join(',')} and changelog"`;
|
|
65
|
-
await $`git push origin ${defaultBranch}`;
|
|
66
75
|
for (const newVersion of versions) {
|
|
67
|
-
|
|
68
|
-
|
|
76
|
+
if (!process.env.IS_DEV) {
|
|
77
|
+
await $`git tag ${newVersion}`;
|
|
78
|
+
console.log(`✅ Version ${newVersion} tagged.`);
|
|
79
|
+
} else {
|
|
80
|
+
console.log(`✅ Simulate Version ${newVersion} tagged.`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (!process.env.IS_DEV) {
|
|
85
|
+
await $`git push origin --tags`;
|
|
86
|
+
console.log(`✅ Version pushed.`);
|
|
87
|
+
} else {
|
|
88
|
+
console.log(`✅ Simulate Version pushed.`);
|
|
69
89
|
}
|
|
70
|
-
await $`git push origin --tags`;
|
|
71
|
-
console.log(`✅ Version pushed.`);
|
|
72
90
|
}
|
|
73
91
|
|
|
74
92
|
async function commitTag() {
|
|
@@ -76,8 +94,7 @@ async function commitTag() {
|
|
|
76
94
|
await $`node -p "require('./package.json').version"`
|
|
77
95
|
).stdout.trim();
|
|
78
96
|
|
|
79
|
-
const
|
|
80
|
-
const defaultBranch = stdout.trim().replace('refs/remotes/origin/', '');
|
|
97
|
+
const defaultBranch = process.env.BITBUCKET_BRANCH;
|
|
81
98
|
|
|
82
99
|
await $`git commit -m "Version bump to ${newVersion} and changelog"`;
|
|
83
100
|
await $`git push origin ${defaultBranch}`;
|
|
@@ -147,12 +164,20 @@ program
|
|
|
147
164
|
if (isMonoRepo()) {
|
|
148
165
|
for (const release of getAppReleases(releases)) {
|
|
149
166
|
const appName = getAppNameFromPackageName(release.name);
|
|
150
|
-
|
|
151
|
-
|
|
167
|
+
const newVersion = toShortVersion(release.newVersion);
|
|
168
|
+
if (!newVersion) {
|
|
169
|
+
throw new Error('Error calculating branch name');
|
|
170
|
+
}
|
|
171
|
+
await $`git checkout -b release/${appName}/${newVersion}`;
|
|
172
|
+
await $`git push origin release/${appName}/${newVersion}`;
|
|
152
173
|
}
|
|
153
174
|
} else {
|
|
154
|
-
|
|
155
|
-
|
|
175
|
+
const newVersion = toShortVersion(releases[0].newVersion);
|
|
176
|
+
if (!newVersion) {
|
|
177
|
+
throw new Error('Error calculating branch name');
|
|
178
|
+
}
|
|
179
|
+
await $`git checkout -b release/${newVersion}`;
|
|
180
|
+
await $`git push origin release/${newVersion}`;
|
|
156
181
|
}
|
|
157
182
|
|
|
158
183
|
// Return to original branch
|
package/src/changeset/config.js
CHANGED
|
@@ -14,4 +14,9 @@ export const labelIDMap = {
|
|
|
14
14
|
'Enterprise Core - 25.1': '68401502fa2d977cfcd6e102',
|
|
15
15
|
'Enterprise Core - 25.2': '6840151b0915e310b1766005',
|
|
16
16
|
'Enterprise Core - 25.3': '684018c7f11b9e5d5d24936f',
|
|
17
|
+
'Enterprise Core - 25.4': '6914853cd07d92c594ab8c61',
|
|
18
|
+
'Enterprise Core - 25.5': '691485400eb37f0c0fdf75c5',
|
|
19
|
+
'Enterprise Core - 25.6': '69148545c0a13575489d609f',
|
|
20
|
+
'Enterprise Core - 25.7': '691485fcdd3accda32e16288'
|
|
21
|
+
|
|
17
22
|
};
|
package/src/changeset/version.js
CHANGED
|
@@ -3,6 +3,8 @@ import { $ } from 'zx';
|
|
|
3
3
|
import fs from 'fs';
|
|
4
4
|
import { updateComponentVersion } from '../next/jira.js';
|
|
5
5
|
import { findJiraTicketId } from './util.js';
|
|
6
|
+
import { revertBaseBranch, updateBaseBranch } from './changeset-config.js';
|
|
7
|
+
import semver from 'semver';
|
|
6
8
|
|
|
7
9
|
const changeSetPackage = `{
|
|
8
10
|
"name": "changeset-package",
|
|
@@ -33,6 +35,12 @@ async function removeChangesetOutput() {
|
|
|
33
35
|
await fs.promises.rm(outputPath);
|
|
34
36
|
}
|
|
35
37
|
|
|
38
|
+
export function toShortVersion(version) {
|
|
39
|
+
const parsed = semver.parse(version);
|
|
40
|
+
if (!parsed) return null;
|
|
41
|
+
return `${parsed.major}.${parsed.minor}`;
|
|
42
|
+
}
|
|
43
|
+
|
|
36
44
|
export async function versionStatus(sinceBranch) {
|
|
37
45
|
const outputPath = './changeset-output.json';
|
|
38
46
|
|
|
@@ -50,27 +58,32 @@ export async function versionStatus(sinceBranch) {
|
|
|
50
58
|
|
|
51
59
|
export async function versionCommand(closeVersion = false) {
|
|
52
60
|
console.log('📦 Running Changeset versioning...');
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
+
if (!process.env.IS_DEV) {
|
|
62
|
+
await setGitInfo();
|
|
63
|
+
await $`mv package.json package.json.bak`;
|
|
64
|
+
await $`mv pnpm-lock.yaml pnpm-lock.yaml.bak`;
|
|
65
|
+
await fs.promises.writeFile('package.json', changeSetPackage);
|
|
66
|
+
await $`pnpm install`;
|
|
67
|
+
await $`rm package.json pnpm-lock.yaml`;
|
|
68
|
+
await $`mv package.json.bak package.json`;
|
|
69
|
+
await $`mv pnpm-lock.yaml.bak pnpm-lock.yaml`;
|
|
70
|
+
}
|
|
61
71
|
if (closeVersion) {
|
|
62
72
|
await $`pnpm changeset pre exit`;
|
|
63
73
|
}
|
|
64
74
|
|
|
75
|
+
let originalBaseBranch;
|
|
65
76
|
try {
|
|
77
|
+
originalBaseBranch = updateBaseBranch();
|
|
66
78
|
const releases = await versionStatus();
|
|
67
|
-
|
|
79
|
+
revertBaseBranch(originalBaseBranch);
|
|
68
80
|
await $`pnpm changeset version`;
|
|
69
81
|
|
|
70
82
|
await removeChangesetOutput();
|
|
71
83
|
|
|
72
84
|
return releases;
|
|
73
85
|
} catch {
|
|
86
|
+
revertBaseBranch(originalBaseBranch);
|
|
74
87
|
return [];
|
|
75
88
|
}
|
|
76
89
|
}
|
package/src/next/apache.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
1
2
|
import { $ } from 'zx';
|
|
2
3
|
|
|
4
|
+
function log(msg) {
|
|
5
|
+
console.log(`[*] ${msg}`);
|
|
6
|
+
}
|
|
7
|
+
|
|
3
8
|
export async function addApacheSite() {
|
|
4
9
|
if (
|
|
5
10
|
!process.env.ENVIRONMENT ||
|
|
6
|
-
|
|
11
|
+
!['dev', 'qa', 'uat', 'stage','www3'].includes(process.env.ENVIRONMENT)
|
|
7
12
|
) {
|
|
8
|
-
log(
|
|
13
|
+
log('Error: wront ENVIRONMENT');
|
|
9
14
|
process.exit(1);
|
|
10
15
|
}
|
|
11
16
|
if (!process.env.SITE) {
|
|
@@ -13,6 +18,34 @@ export async function addApacheSite() {
|
|
|
13
18
|
process.exit(1);
|
|
14
19
|
}
|
|
15
20
|
|
|
21
|
+
const apacheEnvHostMap = {
|
|
22
|
+
dev: {
|
|
23
|
+
host1: 'dev-apalb01a.corp.docupace.com',
|
|
24
|
+
host2: 'dev-apalb01b.corp.docupace.com',
|
|
25
|
+
repo: 'iis-preprod',
|
|
26
|
+
},
|
|
27
|
+
qa: {
|
|
28
|
+
host1: 'qa-apalb01a.corp.docupace.com',
|
|
29
|
+
host2: 'qa-apalb01b.corp.docupace.com',
|
|
30
|
+
repo: 'iis-preprod',
|
|
31
|
+
},
|
|
32
|
+
uat: {
|
|
33
|
+
host1: 'uat-apalb01a.edc.docupace.internal',
|
|
34
|
+
host2: 'uat-apalb01b.edc.docupace.internal',
|
|
35
|
+
repo: 'iis-www2',
|
|
36
|
+
},
|
|
37
|
+
stage: {
|
|
38
|
+
host1: 'stg-apalb01a.edc.docupace.internal',
|
|
39
|
+
host2: 'stg-apalb01b.edc.docupace.internal',
|
|
40
|
+
repo: 'iis-www2',
|
|
41
|
+
},
|
|
42
|
+
www3: {
|
|
43
|
+
host1: 'prd-apalb05a.edc.docupace.internal',
|
|
44
|
+
host2: 'prd-apalb05b.edc.docupace.internal',
|
|
45
|
+
repo: 'iis-www2',
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
|
|
16
49
|
// Save private key from base64
|
|
17
50
|
const haproxyPrivateKey = process.env.HAPROXY_PRIVATE_KEY;
|
|
18
51
|
if (!haproxyPrivateKey) {
|
|
@@ -27,17 +60,22 @@ export async function addApacheSite() {
|
|
|
27
60
|
const sshCmd = (server, script) =>
|
|
28
61
|
$`ssh -i private.key -o StrictHostKeyChecking=no root@${server} ${script}`;
|
|
29
62
|
|
|
30
|
-
let server = `${process.env.ENVIRONMENT}-apalb01a.corp.docupace.com`;
|
|
31
63
|
// The script is run twice in the Bash version
|
|
32
64
|
await sshCmd(
|
|
33
|
-
|
|
34
|
-
`/root/
|
|
65
|
+
apacheEnvHostMap[process.env.ENVIRONMENT].host1,
|
|
66
|
+
`/root/tomcat_repo_sync.sh`,
|
|
67
|
+
);
|
|
68
|
+
await sshCmd(
|
|
69
|
+
apacheEnvHostMap[process.env.ENVIRONMENT].host1,
|
|
70
|
+
`/root/repo/${apacheEnvHostMap[process.env.ENVIRONMENT].repo}/scripts/addsite/add_core_site.sh ${process.env.ENVIRONMENT} ${process.env.SITE}`,
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
await sshCmd(
|
|
74
|
+
apacheEnvHostMap[process.env.ENVIRONMENT].host2,
|
|
75
|
+
`/root/tomcat_repo_sync.sh`,
|
|
35
76
|
);
|
|
36
|
-
|
|
37
|
-
server = `${process.env.ENVIRONMENT}-apalb01b.corp.docupace.com`;
|
|
38
|
-
|
|
39
77
|
await sshCmd(
|
|
40
|
-
|
|
41
|
-
`/root/repo/
|
|
78
|
+
apacheEnvHostMap[process.env.ENVIRONMENT].host2,
|
|
79
|
+
`/root/repo/${apacheEnvHostMap[process.env.ENVIRONMENT].repo}/scripts/addsite/add_core_site.sh ${process.env.ENVIRONMENT} ${process.env.SITE}`,
|
|
42
80
|
);
|
|
43
81
|
}
|
package/src/next/cli.js
CHANGED
|
@@ -105,40 +105,46 @@ program
|
|
|
105
105
|
});
|
|
106
106
|
|
|
107
107
|
program
|
|
108
|
-
.command('deploy-template')
|
|
109
|
-
.description('Deploy an
|
|
110
|
-
.action(async () => {
|
|
111
|
-
const deployTag = await getDeployTag();
|
|
112
|
-
const
|
|
113
|
-
|
|
108
|
+
.command('deploy-template [tagPrefix]')
|
|
109
|
+
.description('Deploy an standard configuration for configured sites')
|
|
110
|
+
.action(async (tagPrefix) => {
|
|
111
|
+
const deployTag = await getDeployTag(tagPrefix);
|
|
112
|
+
const sites = await getDefaultDeploySite(deployTag);
|
|
113
|
+
for (const { env, site } of sites) {
|
|
114
|
+
await deployTemplate(env, site, deployTag);
|
|
115
|
+
}
|
|
114
116
|
});
|
|
115
117
|
|
|
116
118
|
program
|
|
117
|
-
.command('
|
|
118
|
-
.description('Deploy
|
|
119
|
-
.action(async () => {
|
|
120
|
-
const deployTag = await getDeployTag();
|
|
121
|
-
|
|
122
|
-
await deployTemplate(env, site, deployTag);
|
|
119
|
+
.command('deploy-site-config <env> <site> [tagPrefix]')
|
|
120
|
+
.description('Deploy site configuration for a specific site')
|
|
121
|
+
.action(async (env, site, tagPrefix) => {
|
|
122
|
+
const deployTag = await getDeployTag(tagPrefix);
|
|
123
|
+
await deployTemplate(env, site, deployTag, 'siteConfigRemoteBranch');
|
|
123
124
|
});
|
|
124
125
|
|
|
126
|
+
|
|
125
127
|
program
|
|
126
128
|
.command('deploy-app <application>')
|
|
127
129
|
.description('Deploy an application for a specific site')
|
|
128
130
|
.action(async (application) => {
|
|
129
131
|
const deployTag = await getDeployTag();
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
+
const sites = await getDefaultDeploySite(deployTag);
|
|
133
|
+
for (const { env, site } of sites) {
|
|
134
|
+
await deployAppWithTag(application, env, site, deployTag);
|
|
135
|
+
}
|
|
132
136
|
});
|
|
133
137
|
|
|
134
138
|
program
|
|
135
139
|
.command('deploy-mono-app <tag> <application>')
|
|
136
|
-
.description('Deploy an application for a specific site')
|
|
140
|
+
.description('Deploy an mono application for a specific site')
|
|
137
141
|
.action(async (tag, application) => {
|
|
138
142
|
const deployTag = await getDeployTag(tag);
|
|
139
143
|
const version = 'v' + deployTag.split('@')[1];
|
|
140
|
-
const
|
|
141
|
-
|
|
144
|
+
const sites = await getDefaultDeploySite(version);
|
|
145
|
+
for (const { env, site } of sites) {
|
|
146
|
+
await deployAppWithTag(application, env, site, version);
|
|
147
|
+
}
|
|
142
148
|
});
|
|
143
149
|
|
|
144
150
|
program
|
package/src/next/config.js
CHANGED
|
@@ -19,20 +19,20 @@ export const environmentConfig = {
|
|
|
19
19
|
},
|
|
20
20
|
uat: {
|
|
21
21
|
newUrl: (site) => `https://${site}.uat.dpai.tech`,
|
|
22
|
-
oldUrl: (site) => `https://
|
|
23
|
-
docupaceHost: () => '
|
|
22
|
+
oldUrl: (site) => `https://uat.paperout.com/${site}`,
|
|
23
|
+
docupaceHost: () => 'uat.paperout.com',
|
|
24
24
|
ccUrl: (site) => `https://${site}-cc.uat.dpai.tech`,
|
|
25
25
|
},
|
|
26
26
|
stage: {
|
|
27
|
-
newUrl: (site) => `https://${site}.
|
|
28
|
-
oldUrl: (site) => `https://
|
|
29
|
-
docupaceHost: () => '
|
|
30
|
-
ccUrl: (site) => `https://${site}-cc.
|
|
27
|
+
newUrl: (site) => `https://${site}.stage.dpai.tech`,
|
|
28
|
+
oldUrl: (site) => `https://stage.paperout.com/${site}`,
|
|
29
|
+
docupaceHost: () => 'stage.paperout.com',
|
|
30
|
+
ccUrl: (site) => `https://${site}-cc.stage.dpai.tech`,
|
|
31
31
|
},
|
|
32
32
|
prod: {
|
|
33
33
|
newUrl: (site) => `https://${site}.dpai.tech`,
|
|
34
|
-
oldUrl: (site) => `https://
|
|
35
|
-
docupaceHost: () => '
|
|
34
|
+
oldUrl: (site) => `https://www3.paperout.com/${site}`,
|
|
35
|
+
docupaceHost: () => 'www3.paperout.com',
|
|
36
36
|
ccUrl: (site) => `https://${site}-cc.dpai.tech`,
|
|
37
37
|
},
|
|
38
38
|
};
|
|
@@ -130,6 +130,8 @@ export const coreSiteEnvMap = {
|
|
|
130
130
|
dev: 'dev',
|
|
131
131
|
qa: 'preprod',
|
|
132
132
|
stg: 'staging',
|
|
133
|
+
stage: 'staging',
|
|
133
134
|
uat: 'uat',
|
|
134
135
|
prd: 'prod',
|
|
136
|
+
prod: 'prod',
|
|
135
137
|
};
|
package/src/next/connect.js
CHANGED
|
@@ -2,7 +2,7 @@ import 'zx/globals'; // npm i zx
|
|
|
2
2
|
import fs from 'fs-extra';
|
|
3
3
|
import path from 'path';
|
|
4
4
|
import { $ } from 'zx';
|
|
5
|
-
|
|
5
|
+
import { getAuth0Metadata } from '../auth0/metadata.js';
|
|
6
6
|
import { getVaultSecrets } from '../auth0/vault.js';
|
|
7
7
|
|
|
8
8
|
process.env.COMMON_VAULT_PATH =
|
|
@@ -15,9 +15,42 @@ const vaultAddr = process.env.VAULT_ADDR;
|
|
|
15
15
|
const connectUIEnvMap = {
|
|
16
16
|
dev: 'dev',
|
|
17
17
|
qa: 'preprod',
|
|
18
|
-
|
|
18
|
+
stage: 'stg',
|
|
19
|
+
uat: 'uat',
|
|
20
|
+
prod: 'prod-www3',
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
const siteSettingsEnvMap = {
|
|
25
|
+
dev: 'dev',
|
|
26
|
+
preprod: 'preprod',
|
|
27
|
+
qa: 'preprod',
|
|
28
|
+
stage: 'staging',
|
|
29
|
+
stg: 'staging',
|
|
30
|
+
uat: 'uat',
|
|
31
|
+
prd: 'prod',
|
|
32
|
+
prod: 'prod',
|
|
33
|
+
'prod-www3': 'prod',
|
|
34
|
+
'prod-las': 'prod',
|
|
35
|
+
'prod-lax': 'prod',
|
|
36
|
+
'prod-athene': 'prod',
|
|
37
|
+
'prod-staging': 'prod',
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const idpEnvMap = {
|
|
41
|
+
dev: 'dev',
|
|
42
|
+
preprod: 'qa',
|
|
43
|
+
qa: 'qa',
|
|
44
|
+
stage: 'stage',
|
|
45
|
+
stg: 'stage',
|
|
19
46
|
uat: 'uat',
|
|
20
|
-
prd: 'prod
|
|
47
|
+
prd: 'prod',
|
|
48
|
+
prod: 'prod',
|
|
49
|
+
'prod-www3': 'prod',
|
|
50
|
+
'prod-las': 'prod',
|
|
51
|
+
'prod-lax': 'prod',
|
|
52
|
+
'prod-athene': 'prod',
|
|
53
|
+
'prod-staging': 'prod',
|
|
21
54
|
};
|
|
22
55
|
|
|
23
56
|
function log(msg) {
|
|
@@ -47,8 +80,10 @@ async function gitCheckout(repository, destDir, branch = 'master') {
|
|
|
47
80
|
}
|
|
48
81
|
|
|
49
82
|
export async function connectClone() {
|
|
50
|
-
const connectFromEnv = connectUIEnvMap[process.env.FROM_BUILD_ENVIRONMENT];
|
|
51
|
-
const
|
|
83
|
+
// const connectFromEnv = connectUIEnvMap[process.env.FROM_BUILD_ENVIRONMENT];
|
|
84
|
+
const connectFromEnv = process.env.FROM_BUILD_ENVIRONMENT;
|
|
85
|
+
const connectToEnv = process.env.BUILD_ENVIRONMENT;
|
|
86
|
+
|
|
52
87
|
if (!vaultToken || !vaultAddr) {
|
|
53
88
|
console.error('Error: VAULT_TOKEN and VAULT_ADDR must be set.');
|
|
54
89
|
throw new Error('VAULT_TOKEN and VAULT_ADDR must be set.');
|
|
@@ -81,7 +116,7 @@ export async function connectClone() {
|
|
|
81
116
|
log(`AUTH0_REGION_DOMAIN: ${process.env.AUTH0_REGION_DOMAIN}`);
|
|
82
117
|
log(`AUTH0_CLIENT_ID: ${process.env.AUTH0_CLIENT_ID}`);
|
|
83
118
|
|
|
84
|
-
process.env.AUTH0_DOMAIN = `docupace-${process.env.BUILD_ENVIRONMENT}-${process.env.BUILD_SITE}.${process.env.AUTH0_REGION_DOMAIN}`;
|
|
119
|
+
process.env.AUTH0_DOMAIN = `docupace-${idpEnvMap[process.env.BUILD_ENVIRONMENT]}-${process.env.BUILD_SITE}.${process.env.AUTH0_REGION_DOMAIN}`;
|
|
85
120
|
|
|
86
121
|
const projectRoot = process.cwd();
|
|
87
122
|
// 4) Clone 'connect-deploy' into CONNECT_DIR
|
|
@@ -89,8 +124,8 @@ export async function connectClone() {
|
|
|
89
124
|
await gitCheckout('connect-deploy', process.env.CONNECT_DIR);
|
|
90
125
|
|
|
91
126
|
await gitCheckout(
|
|
92
|
-
`${connectToEnv}-site-settings`,
|
|
93
|
-
`${process.env.CONNECT_DIR}/${connectToEnv}-site-settings`,
|
|
127
|
+
`${siteSettingsEnvMap[connectToEnv]}-site-settings`,
|
|
128
|
+
`${process.env.CONNECT_DIR}/${siteSettingsEnvMap[connectToEnv]}-site-settings`,
|
|
94
129
|
);
|
|
95
130
|
|
|
96
131
|
// 5) Create site clone (emulating the dock.sh call)
|
|
@@ -123,7 +158,7 @@ export async function connectClone() {
|
|
|
123
158
|
try {
|
|
124
159
|
// Execute the shell command
|
|
125
160
|
const result =
|
|
126
|
-
|
|
161
|
+
await $`cd ${cloneFrom} && bash dock.sh clone ${connectToEnv} ${process.env.BUILD_SITE} ${process.env.IMAGE_VERSION}`;
|
|
127
162
|
await $`cd ${cloneTo} && git checkout master && git pull --ff-only`;
|
|
128
163
|
await $`cd ${cloneTo} && git remote -v`;
|
|
129
164
|
await $`cd ${cloneTo} && git branch`;
|
|
@@ -145,31 +180,33 @@ export async function connectClone() {
|
|
|
145
180
|
log('Site already exists. Continuing Auth0 setup...');
|
|
146
181
|
}
|
|
147
182
|
|
|
148
|
-
await (async () => {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
183
|
+
// await (async () => {
|
|
184
|
+
// try {
|
|
185
|
+
// // Execute the shell command
|
|
186
|
+
// //await getAuth0Metadata(process.env.BUILD_SITE, connectToEnv);
|
|
187
|
+
// const result = await $`cd ${cloneTo} && bash dock.sh getAuth0Metadata`;
|
|
188
|
+
// console.log('Command succeeded:');
|
|
189
|
+
// console.log('stdout:', result.stdout); // Standard output
|
|
190
|
+
// console.log('stderr:', result.stderr); // Standard error
|
|
191
|
+
// } catch (error) {
|
|
192
|
+
// console.error('Command failed:');
|
|
193
|
+
// console.error('Exit Code:', error._code); // Exit code of the command
|
|
194
|
+
// console.error('Signal:', error._signal); // Signal that caused termination (if any)
|
|
195
|
+
// console.error('stdout:', error._stdout); // Standard output
|
|
196
|
+
// console.error('stderr:', error._stderr); // Standard error
|
|
197
|
+
// }
|
|
198
|
+
// })();
|
|
163
199
|
|
|
164
200
|
// 7) Check conf files, print logs
|
|
165
|
-
await $`grep "auth0" ${path.join(cloneTo, 'conf/application.conf')}`;
|
|
166
|
-
await $`ls -all ${path.join(cloneTo, 'conf')}`;
|
|
167
|
-
await $`ls -all ${path.join(cloneTo, 'conf/saml')}`;
|
|
168
|
-
await $`cat ${path.join(cloneTo, 'conf/saml/auth0.xml')}`;
|
|
201
|
+
// await $`grep "auth0" ${path.join(cloneTo, 'conf/application.conf')}`;
|
|
202
|
+
// await $`ls -all ${path.join(cloneTo, 'conf')}`;
|
|
203
|
+
// await $`ls -all ${path.join(cloneTo, 'conf/saml')}`;
|
|
204
|
+
// await $`cat ${path.join(cloneTo, 'conf/saml/auth0.xml')}`;
|
|
169
205
|
|
|
170
206
|
// 8) Git add, commit, push
|
|
171
|
-
await $`cd ${cloneTo} && git add ./conf/application.conf ./conf/saml/auth0.xml`;
|
|
172
|
-
await $`cd ${cloneTo} && git
|
|
207
|
+
// await $`cd ${cloneTo} && git add ./conf/application.conf ./conf/saml/auth0.xml`;
|
|
208
|
+
//await $`cd ${cloneTo} && git add ./conf/application.conf`;
|
|
209
|
+
//await $`cd ${cloneTo} && git status`;
|
|
173
210
|
|
|
174
211
|
const numChanges = (await $`cd ${cloneTo} && git diff-index HEAD`).stdout
|
|
175
212
|
.split('\n')
|
|
@@ -181,6 +218,7 @@ export async function connectClone() {
|
|
|
181
218
|
log('About to commit changes to git');
|
|
182
219
|
await $`cd ${cloneTo} && git commit -m ${message}`;
|
|
183
220
|
await $`cd ${cloneTo} && git push -u origin master`;
|
|
221
|
+
//await getAuth0Metadata(process.env.BUILD_SITE, connectToEnv);
|
|
184
222
|
} else {
|
|
185
223
|
log(
|
|
186
224
|
'No changes have been made. The site likely already has the correct configuration.',
|