@docupace/pipeline 1.0.66-alpha.0 → 1.0.67
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 -1
- package/src/auth0/configure.js +7 -1
- package/src/next/deploy.js +22 -17
- package/src/next/git-to-semver.js +79 -0
- package/src/next/test.js +5 -0
package/package.json
CHANGED
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> <useS3Ui> <deployCCUI> <useS3Gq> ',
|
|
18
|
+
'configureFromSite <fromSite> <toSite> <fromEnv> <toEnv> <deployUI> <deployGraphQLServer> <useNewDomain> <useS3Ui> <deployCCUI> <useS3Gq> [auth0Tenant]',
|
|
19
19
|
)
|
|
20
20
|
.description('Configure the Auth0 tenants in env for the given site')
|
|
21
21
|
.action(
|
|
@@ -30,6 +30,7 @@ program
|
|
|
30
30
|
useS3Ui,
|
|
31
31
|
deployCCUI,
|
|
32
32
|
useS3Gq,
|
|
33
|
+
auth0Tenant = '',
|
|
33
34
|
) => {
|
|
34
35
|
await configureFromSite(
|
|
35
36
|
fromSite,
|
|
@@ -42,6 +43,7 @@ program
|
|
|
42
43
|
useS3Ui === 'true' || useS3Ui === true,
|
|
43
44
|
deployCCUI,
|
|
44
45
|
useS3Gq === 'true' || useS3Gq === true,
|
|
46
|
+
auth0Tenant,
|
|
45
47
|
);
|
|
46
48
|
},
|
|
47
49
|
);
|
package/src/auth0/configure.js
CHANGED
|
@@ -674,6 +674,7 @@ export async function configureFromSite(
|
|
|
674
674
|
useS3Ui,
|
|
675
675
|
deployCCUI,
|
|
676
676
|
useS3Gq,
|
|
677
|
+
auth0Tenant,
|
|
677
678
|
) {
|
|
678
679
|
console.log(
|
|
679
680
|
`Configuring Auth0 tenants and ArgoCD apps for site: ${toSite} in env: ${toEnv} from site: ${fromSite}`,
|
|
@@ -688,8 +689,13 @@ export async function configureFromSite(
|
|
|
688
689
|
getVaultSecretsConfigs(toSite).siteCommonSecretsPath;
|
|
689
690
|
console.log(`siteCommonSecretsPath => ${siteCommonSecretsPath}`);
|
|
690
691
|
const siteCommonSecrets = await getVaultSecrets(siteCommonSecretsPath);
|
|
692
|
+
let auth0Domain;
|
|
693
|
+
if (auth0Tenant === '') {
|
|
694
|
+
auth0Domain = `docupace-${toEnv}-${toSite}.us.auth0.com`;
|
|
695
|
+
} else {
|
|
696
|
+
auth0Domain = `${auth0Tenant}.us.auth0.com`;
|
|
697
|
+
}
|
|
691
698
|
|
|
692
|
-
const auth0Domain = `docupace-${toEnv}-${toSite}.us.auth0.com`;
|
|
693
699
|
const auth0ClientId = siteCommonSecrets.AUTH0_CLIENT_ID;
|
|
694
700
|
const auth0ClientSecret = siteCommonSecrets.AUTH0_CLIENT_SECRET;
|
|
695
701
|
const auth0Token = await getAuth0AuthToken(
|
package/src/next/deploy.js
CHANGED
|
@@ -7,6 +7,8 @@ import { appInfo, environmentConfig, getRepUrl } from './config.js';
|
|
|
7
7
|
import { copy2 } from './copy.js';
|
|
8
8
|
import axios from 'axios';
|
|
9
9
|
import { deployConnect, deployCore } from './jenkins.js';
|
|
10
|
+
import { gitDescribeToSemver } from './git-to-semver.js';
|
|
11
|
+
import semver from 'semver';
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
14
|
* Clone the repository, read the YAML file, and return the parsed data and file paths.
|
|
@@ -377,24 +379,27 @@ async function getAppInfo(coreUrl) {
|
|
|
377
379
|
return await axios.get(url);
|
|
378
380
|
}
|
|
379
381
|
|
|
380
|
-
function getBranchNameFromVersion(version) {
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
382
|
+
export function getBranchNameFromVersion(version) {
|
|
383
|
+
let parsed;
|
|
384
|
+
try {
|
|
385
|
+
const semverVersion = gitDescribeToSemver(version);
|
|
386
|
+
parsed = semver.parse(semverVersion);
|
|
387
|
+
let newVersion;
|
|
388
|
+
if (parsed.prerelease.length > 0) {
|
|
389
|
+
newVersion = parsed.build[1].slice(1);
|
|
390
|
+
} else if (parsed.build[0] != '0') {
|
|
391
|
+
console.error(`❌ This version is a custom branch. Deployment canceled.`);
|
|
392
|
+
process.exit(1);
|
|
393
|
+
} else {
|
|
394
|
+
newVersion = 'v' + parsed.version;
|
|
395
|
+
}
|
|
396
|
+
console.log(`Extracted version ${newVersion} from ${version}`);
|
|
397
|
+
return newVersion;
|
|
398
|
+
} catch {
|
|
399
|
+
console.log(`Error parsing version : ${version}`);
|
|
400
|
+
console.log('Parsed Object:');
|
|
401
|
+
console.log(parsed);
|
|
394
402
|
}
|
|
395
|
-
|
|
396
|
-
// Otherwise, use the full version
|
|
397
|
-
return 'v' + fullVersion;
|
|
398
403
|
}
|
|
399
404
|
|
|
400
405
|
async function getCoreBranchName(fromEnv, fromSite) {
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts git describe output to semantic versioning format
|
|
3
|
+
*
|
|
4
|
+
* Logic based on dash count:
|
|
5
|
+
* - 2 dashes: Released version with commits (v1.2.3-4-g1234567 -> 1.2.3+4.g1234567)
|
|
6
|
+
* - 3 dashes: Pre-release with commits (v1.2.3-rc.1-4-g1234567 -> 1.2.3-rc.1+4.g1234567)
|
|
7
|
+
* - 1 dash: Pre-release tag only (v1.2.3-rc.1 -> 1.2.3-rc.1)
|
|
8
|
+
* - 0 dashes: Clean tag (v1.2.3 -> 1.2.3)
|
|
9
|
+
*
|
|
10
|
+
* @param {string} gitDescribe - The output from git describe
|
|
11
|
+
* @return {string} Semver compatible version string
|
|
12
|
+
*/
|
|
13
|
+
export function gitDescribeToSemver(gitDescribe) {
|
|
14
|
+
if (!gitDescribe || typeof gitDescribe !== 'string') {
|
|
15
|
+
throw new Error('Invalid input: git describe string required');
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Remove leading 'v' if present
|
|
19
|
+
let version = gitDescribe.trim();
|
|
20
|
+
if (version.startsWith('v') || version.startsWith('V')) {
|
|
21
|
+
version = version.substring(1);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Count dashes to determine format
|
|
25
|
+
const dashCount = (version.match(/-/g) || []).length;
|
|
26
|
+
|
|
27
|
+
switch (dashCount) {
|
|
28
|
+
case 0:
|
|
29
|
+
// Clean tag: 1.2.3
|
|
30
|
+
return version;
|
|
31
|
+
|
|
32
|
+
case 1:
|
|
33
|
+
// Pre-release tag only: 1.2.3-rc.1
|
|
34
|
+
return version;
|
|
35
|
+
|
|
36
|
+
case 2: {
|
|
37
|
+
// Released version with commits: 1.2.3-4-g1234567
|
|
38
|
+
// Split: [1.2.3, 4, g1234567]
|
|
39
|
+
const parts = version.split('-');
|
|
40
|
+
const baseVersion = parts[0];
|
|
41
|
+
const commits = parts[1];
|
|
42
|
+
const hash = parts[2];
|
|
43
|
+
return `${baseVersion}+${commits}.${hash}`;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
case 3: {
|
|
47
|
+
// Pre-release with commits: 1.2.3-rc.1-4-g1234567
|
|
48
|
+
// Split: [1.2.3, rc.1, 4, g1234567]
|
|
49
|
+
const parts = version.split('-');
|
|
50
|
+
const baseVersion = parts[0];
|
|
51
|
+
const prerelease = parts[1];
|
|
52
|
+
const commits = parts[2];
|
|
53
|
+
const hash = parts[3];
|
|
54
|
+
return `${baseVersion}-${prerelease}+${commits}.${hash}`;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
default: {
|
|
58
|
+
// More than 3 dashes - handle complex pre-release tags
|
|
59
|
+
// e.g., 1.2.3-rc-1-beta-4-g1234567
|
|
60
|
+
// Assume last two parts are commits-hash
|
|
61
|
+
const parts = version.split('-');
|
|
62
|
+
if (
|
|
63
|
+
parts.length >= 3 &&
|
|
64
|
+
/^\d+$/.test(parts[parts.length - 2]) &&
|
|
65
|
+
/^g[a-f0-9]+$/.test(parts[parts.length - 1])
|
|
66
|
+
) {
|
|
67
|
+
// Has commits and hash at the end
|
|
68
|
+
const commits = parts[parts.length - 2];
|
|
69
|
+
const hash = parts[parts.length - 1];
|
|
70
|
+
const versionParts = parts.slice(0, -2);
|
|
71
|
+
const baseVersion = versionParts[0];
|
|
72
|
+
const prerelease = versionParts.slice(1).join('-');
|
|
73
|
+
return `${baseVersion}-${prerelease}+${commits}.${hash}`;
|
|
74
|
+
}
|
|
75
|
+
// No commits/hash pattern found, treat as complex pre-release
|
|
76
|
+
return version;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|