@payfit/nx-core 4.30.0-ephemeral-release-scripts-7ecb1df.0 → 4.30.0-ephemeral-release-scripts-982b0ca.0
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/executors.json +5 -0
- package/package.json +1 -2
- package/src/executors/release/executor.d.ts +4 -0
- package/src/executors/release/executor.js +77 -0
- package/src/executors/release/executor.js.map +1 -0
- package/src/executors/release/schema.d.ts +7 -0
- package/src/executors/release/schema.json +26 -0
- package/src/scripts/release.d.ts +0 -1
- package/src/scripts/release.js +0 -123
- package/src/scripts/release.js.map +0 -1
package/executors.json
CHANGED
|
@@ -4,6 +4,11 @@
|
|
|
4
4
|
"implementation": "./src/executors/publisher/executor",
|
|
5
5
|
"schema": "./src/executors/publisher/schema.json",
|
|
6
6
|
"description": "Docker & Helm publisher executor"
|
|
7
|
+
},
|
|
8
|
+
"release": {
|
|
9
|
+
"implementation": "./src/executors/release/executor",
|
|
10
|
+
"schema": "./src/executors/release/schema.json",
|
|
11
|
+
"description": "Custom release executor"
|
|
7
12
|
}
|
|
8
13
|
}
|
|
9
14
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payfit/nx-core",
|
|
3
|
-
"version": "4.30.0-ephemeral-release-scripts-
|
|
3
|
+
"version": "4.30.0-ephemeral-release-scripts-982b0ca.0",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"types": "./src/index.d.ts",
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
"tinyexec": "1.0.1",
|
|
20
20
|
"tslib": "^2.8.1",
|
|
21
21
|
"yaml": "2.8.0",
|
|
22
|
-
"yargs": "17.7.2",
|
|
23
22
|
"zod": "^3.24.3"
|
|
24
23
|
},
|
|
25
24
|
"devDependencies": {
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ExecutorContext } from '@nx/devkit';
|
|
2
|
+
import { ReleaseExecutorOptions, ReleaseExecutorSchema } from './schema';
|
|
3
|
+
declare const runExecutor: (options: ReleaseExecutorOptions, context: ExecutorContext) => Promise<ReleaseExecutorSchema>;
|
|
4
|
+
export default runExecutor;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const release_1 = require("nx/release");
|
|
4
|
+
const logger_1 = require("../../utils/logger");
|
|
5
|
+
const runExecutor = async (options, context) => {
|
|
6
|
+
try {
|
|
7
|
+
logger_1.consola.start('Starting release process...');
|
|
8
|
+
// Step 1: Version Release
|
|
9
|
+
logger_1.consola.info('Step 1/3: Starting version release...');
|
|
10
|
+
const { projectsVersionData } = await (0, release_1.releaseVersion)({
|
|
11
|
+
specifier: options?.preid?.includes('ephemeral') ? 'prerelease' : null,
|
|
12
|
+
dryRun: options.dryRun,
|
|
13
|
+
verbose: options.verbose,
|
|
14
|
+
preid: options.preid,
|
|
15
|
+
});
|
|
16
|
+
logger_1.consola.success('Version release completed successfully');
|
|
17
|
+
// iterate over `projectsVersionData` to extract changed projects
|
|
18
|
+
const projectsToPublish = Object.entries(projectsVersionData)
|
|
19
|
+
.map(([projectName, versionData]) => {
|
|
20
|
+
if (versionData?.newVersion) {
|
|
21
|
+
logger_1.consola.info(`Project '${projectName}' will be updated to version ${versionData.newVersion}`);
|
|
22
|
+
return projectName;
|
|
23
|
+
}
|
|
24
|
+
return null; // filter out projects that didn't change
|
|
25
|
+
})
|
|
26
|
+
.filter(Boolean);
|
|
27
|
+
if (projectsToPublish.length === 0) {
|
|
28
|
+
logger_1.consola.warn('No project to publish');
|
|
29
|
+
return {
|
|
30
|
+
success: true,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
logger_1.consola.warn(`Publishing new versions for ${projectsToPublish.join(', ')}`);
|
|
34
|
+
// Step 2: Changelog Release
|
|
35
|
+
logger_1.consola.info('Step 2/3: Generating changelog...');
|
|
36
|
+
await (0, release_1.releaseChangelog)({
|
|
37
|
+
versionData: projectsVersionData,
|
|
38
|
+
dryRun: options.dryRun,
|
|
39
|
+
verbose: options.verbose,
|
|
40
|
+
});
|
|
41
|
+
logger_1.consola.success('Changelog generation completed successfully');
|
|
42
|
+
// Step 3: Publish Release
|
|
43
|
+
if (options.skipPublish) {
|
|
44
|
+
logger_1.consola.warn('Skipping publish step as requested.');
|
|
45
|
+
return {
|
|
46
|
+
success: true,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
logger_1.consola.info('Step 3/3: Publishing packages...');
|
|
50
|
+
const publishResults = await (0, release_1.releasePublish)({
|
|
51
|
+
projects: projectsToPublish,
|
|
52
|
+
dryRun: options.dryRun,
|
|
53
|
+
verbose: options.verbose,
|
|
54
|
+
tag: options?.preid?.includes('ephemeral') ? 'ephemeral' : null,
|
|
55
|
+
});
|
|
56
|
+
// Log publish results
|
|
57
|
+
Object.entries(publishResults).forEach(([projectName, result]) => {
|
|
58
|
+
if (result.code === 0) {
|
|
59
|
+
logger_1.consola.info(`Successfully published ${projectName}`);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
logger_1.consola.error(`Failed to publish ${projectName} with exit code ${result.code}`);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
logger_1.consola.error(error);
|
|
68
|
+
return {
|
|
69
|
+
success: false,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
success: true,
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
exports.default = runExecutor;
|
|
77
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/nx-core/src/executors/release/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
|
+
"version": 2,
|
|
4
|
+
"title": "Publisher executor",
|
|
5
|
+
"description": "Publish the helm chart to the chartmuseum and docker image to ECR",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"preid": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"description": "The pre id to use as a prefix with the tag"
|
|
11
|
+
},
|
|
12
|
+
"skipPublish": {
|
|
13
|
+
"type": "boolean",
|
|
14
|
+
"description": "Should skip publish"
|
|
15
|
+
},
|
|
16
|
+
"dryRun": {
|
|
17
|
+
"type": "boolean",
|
|
18
|
+
"description": "Is dry run"
|
|
19
|
+
},
|
|
20
|
+
"verbose": {
|
|
21
|
+
"type": "boolean",
|
|
22
|
+
"description": "Is verbose"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"required": []
|
|
26
|
+
}
|
package/src/scripts/release.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/src/scripts/release.js
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const release_1 = require("nx/release");
|
|
4
|
-
const yargs = require("yargs");
|
|
5
|
-
/**
|
|
6
|
-
* Helper function to log messages with timestamps
|
|
7
|
-
*/
|
|
8
|
-
function log(message, isError = false) {
|
|
9
|
-
const timestamp = new Date().toISOString();
|
|
10
|
-
const logFn = isError ? console.error : console.log;
|
|
11
|
-
logFn(`[${timestamp}] ${message}`);
|
|
12
|
-
}
|
|
13
|
-
;
|
|
14
|
-
(async () => {
|
|
15
|
-
try {
|
|
16
|
-
const options = await yargs
|
|
17
|
-
.version(false) // don't use the default meaning of version in yargs
|
|
18
|
-
.option('version', {
|
|
19
|
-
description: 'Explicit version specifier to use, if overriding conventional commits',
|
|
20
|
-
type: 'string',
|
|
21
|
-
})
|
|
22
|
-
.option('dryRun', {
|
|
23
|
-
alias: 'd',
|
|
24
|
-
description: 'Whether or not to perform a dry-run of the release process, defaults to true',
|
|
25
|
-
type: 'boolean',
|
|
26
|
-
default: true,
|
|
27
|
-
})
|
|
28
|
-
.option('verbose', {
|
|
29
|
-
description: 'Whether or not to enable verbose logging, defaults to false',
|
|
30
|
-
type: 'boolean',
|
|
31
|
-
default: false,
|
|
32
|
-
})
|
|
33
|
-
.option('specifier', {
|
|
34
|
-
description: 'The specifier to use when creating the release, can be set to "prerelease" for releasing an alpha version',
|
|
35
|
-
type: 'string',
|
|
36
|
-
default: undefined,
|
|
37
|
-
})
|
|
38
|
-
.option('skipPublish', {
|
|
39
|
-
description: 'Skip publishing the package to the registry',
|
|
40
|
-
type: 'boolean',
|
|
41
|
-
default: false,
|
|
42
|
-
})
|
|
43
|
-
.option('preid', {
|
|
44
|
-
description: 'The version prefix to use, can be set in combination with specifier="prerelease"',
|
|
45
|
-
type: 'string',
|
|
46
|
-
default: undefined,
|
|
47
|
-
})
|
|
48
|
-
.parseAsync();
|
|
49
|
-
log('Starting release process...');
|
|
50
|
-
log(`Release options: ${JSON.stringify(options, null, 2)}`);
|
|
51
|
-
// Step 1: Version Release
|
|
52
|
-
log('Step 1/3: Starting version release...');
|
|
53
|
-
const { projectsVersionData } = await (0, release_1.releaseVersion)({
|
|
54
|
-
specifier: options.version,
|
|
55
|
-
dryRun: options.dryRun,
|
|
56
|
-
verbose: options.verbose,
|
|
57
|
-
preid: options.preid,
|
|
58
|
-
});
|
|
59
|
-
log('Version release completed successfully');
|
|
60
|
-
// iterate over `projectsVersionData` to extract changed projects
|
|
61
|
-
const projectsToPublish = Object.entries(projectsVersionData)
|
|
62
|
-
.map(([projectName, versionData]) => {
|
|
63
|
-
if (versionData?.newVersion) {
|
|
64
|
-
log(`Project '${projectName}' will be updated to version ${versionData.newVersion}`);
|
|
65
|
-
return projectName;
|
|
66
|
-
}
|
|
67
|
-
return null; // filter out projects that didn't change
|
|
68
|
-
})
|
|
69
|
-
.filter(Boolean);
|
|
70
|
-
if (projectsToPublish.length === 0) {
|
|
71
|
-
log('No projects to publish. Exiting...');
|
|
72
|
-
process.exit(0);
|
|
73
|
-
}
|
|
74
|
-
log(`Found ${projectsToPublish.length} project(s) to publish: ${projectsToPublish.join(', ')}`);
|
|
75
|
-
// Step 2: Changelog Release
|
|
76
|
-
log('Step 2/3: Generating changelog...');
|
|
77
|
-
await (0, release_1.releaseChangelog)({
|
|
78
|
-
versionData: projectsVersionData,
|
|
79
|
-
dryRun: options.dryRun,
|
|
80
|
-
verbose: options.verbose,
|
|
81
|
-
});
|
|
82
|
-
log('Changelog generation completed successfully');
|
|
83
|
-
// Step 3: Publish Release
|
|
84
|
-
if (!options.skipPublish) {
|
|
85
|
-
log('Step 3/3: Publishing packages...');
|
|
86
|
-
const publishResults = await (0, release_1.releasePublish)({
|
|
87
|
-
projects: projectsToPublish,
|
|
88
|
-
dryRun: options.dryRun,
|
|
89
|
-
verbose: options.verbose,
|
|
90
|
-
tag: options.specifier,
|
|
91
|
-
});
|
|
92
|
-
// Log publish results
|
|
93
|
-
Object.entries(publishResults).forEach(([projectName, result]) => {
|
|
94
|
-
if (result.code === 0) {
|
|
95
|
-
log(`Successfully published ${projectName}`);
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
log(`Failed to publish ${projectName} with exit code ${result.code}`, true);
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
const allSuccessful = Object.values(publishResults).every(result => result.code === 0);
|
|
102
|
-
if (allSuccessful) {
|
|
103
|
-
log('All packages published successfully');
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
log('Some packages failed to publish. Check the logs for details.', true);
|
|
107
|
-
}
|
|
108
|
-
process.exit(allSuccessful ? 0 : 1);
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
log('Skipping publish step as requested.');
|
|
112
|
-
process.exit(0);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
catch (error) {
|
|
116
|
-
log(`Error during release process: ${error instanceof Error ? error.message : String(error)}`, true);
|
|
117
|
-
if (error instanceof Error && error.stack) {
|
|
118
|
-
log(`Stack trace: ${error.stack}`, true);
|
|
119
|
-
}
|
|
120
|
-
process.exit(1);
|
|
121
|
-
}
|
|
122
|
-
})();
|
|
123
|
-
//# sourceMappingURL=release.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"release.js","sourceRoot":"","sources":["../../../../../packages/nx-core/src/scripts/release.ts"],"names":[],"mappings":"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"}
|