@payfit/nx-core 4.46.0-ephemeral-last-fixes-lambda-fbac454.0 → 4.46.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/dist/src/executors/preview-deploy/argocdOverride.d.ts +4 -0
- package/dist/src/executors/preview-deploy/argocdOverride.js +22 -0
- package/dist/src/executors/preview-deploy/argocdOverride.js.map +1 -0
- package/dist/src/executors/preview-deploy/executor.d.ts +4 -0
- package/dist/src/executors/preview-deploy/executor.js +143 -0
- package/dist/src/executors/preview-deploy/executor.js.map +1 -0
- package/dist/src/executors/preview-deploy/kargoPolicy.d.ts +14 -0
- package/dist/src/executors/preview-deploy/kargoPolicy.js +69 -0
- package/dist/src/executors/preview-deploy/kargoPolicy.js.map +1 -0
- package/dist/src/executors/preview-deploy/schema.json +28 -0
- package/dist/src/executors/publisher/lambda.d.ts +15 -0
- package/dist/src/executors/publisher/lambda.js +15 -0
- package/dist/src/executors/publisher/lambda.js.map +1 -1
- package/dist/src/generators/init/init.js +1 -20
- package/dist/src/generators/init/init.js.map +1 -1
- package/dist/src/index.d.ts +19 -1
- package/dist/src/index.js +23 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/utils/common/exec.js +0 -1
- package/dist/src/utils/common/exec.js.map +1 -1
- package/dist/src/utils/common/github.d.ts +4 -0
- package/dist/src/utils/common/github.js +7 -0
- package/dist/src/utils/common/github.js.map +1 -1
- package/dist/src/utils/lambda/aws-lambda.d.ts +40 -0
- package/dist/src/utils/lambda/aws-lambda.js +61 -4
- package/dist/src/utils/lambda/aws-lambda.js.map +1 -1
- package/dist/src/utils/lambda/lambda.d.ts +6 -0
- package/dist/src/utils/lambda/lambda.js +6 -0
- package/dist/src/utils/lambda/lambda.js.map +1 -1
- package/dist/src/utils/lambda/oci.d.ts +7 -0
- package/dist/src/utils/lambda/oci.js +12 -1
- package/dist/src/utils/lambda/oci.js.map +1 -1
- package/dist/src/utils/lambda/publish.d.ts +12 -0
- package/dist/src/utils/lambda/publish.js +12 -0
- package/dist/src/utils/lambda/publish.js.map +1 -1
- package/executors.json +5 -0
- package/package.json +3 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateArgoCDOverride = updateArgoCDOverride;
|
|
4
|
+
const github_1 = require("../../utils/common/github");
|
|
5
|
+
/**
|
|
6
|
+
* Updates the ArgoCD override configuration based on the target branch
|
|
7
|
+
*/
|
|
8
|
+
function updateArgoCDOverride(argocdOverride, targetBranchName) {
|
|
9
|
+
// Handle main/master branches - remove target revision
|
|
10
|
+
if ((0, github_1.isDefaultBranch)(targetBranchName)) {
|
|
11
|
+
if (argocdOverride.targetRevision) {
|
|
12
|
+
delete argocdOverride.targetRevision;
|
|
13
|
+
return argocdOverride;
|
|
14
|
+
}
|
|
15
|
+
// No changes needed if targetRevision doesn't exist
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
// Handle feature branches - set target revision
|
|
19
|
+
argocdOverride.targetRevision = targetBranchName;
|
|
20
|
+
return argocdOverride;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=argocdOverride.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"argocdOverride.js","sourceRoot":"","sources":["../../../../src/executors/preview-deploy/argocdOverride.ts"],"names":[],"mappings":";;AAKA,oDAiBC;AAtBD,sDAA2D;AAE3D;;GAEG;AACH,SAAgB,oBAAoB,CAClC,cAAuC,EACvC,gBAAwB;IAExB,uDAAuD;IACvD,IAAI,IAAA,wBAAe,EAAC,gBAAgB,CAAC,EAAE,CAAC;QACtC,IAAI,cAAc,CAAC,cAAc,EAAE,CAAC;YAClC,OAAO,cAAc,CAAC,cAAc,CAAA;YACpC,OAAO,cAAc,CAAA;QACvB,CAAC;QACD,oDAAoD;QACpD,OAAM;IACR,CAAC;IAED,gDAAgD;IAChD,cAAc,CAAC,cAAc,GAAG,gBAAgB,CAAA;IAChD,OAAO,cAAc,CAAA;AACvB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ExecutorContext } from '@nx/devkit';
|
|
2
|
+
import { PreviewDeployExecutorOptions, PreviewDeployExecutorSchema } from './schema';
|
|
3
|
+
declare const runExecutor: (options: PreviewDeployExecutorOptions, context: ExecutorContext) => Promise<PreviewDeployExecutorSchema>;
|
|
4
|
+
export default runExecutor;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const auth_app_1 = require("@octokit/auth-app");
|
|
4
|
+
const rest_1 = require("@octokit/rest");
|
|
5
|
+
const yaml = require("yaml");
|
|
6
|
+
const logger_1 = require("../../utils/common/logger");
|
|
7
|
+
const argocdOverride_1 = require("./argocdOverride");
|
|
8
|
+
const kargoPolicy_1 = require("./kargoPolicy");
|
|
9
|
+
function readFileYamlContent(file) {
|
|
10
|
+
if (!file) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
// Verify both are files (not directories)
|
|
14
|
+
if (Array.isArray(file.data)) {
|
|
15
|
+
throw new Error('Expected files, but found directories');
|
|
16
|
+
}
|
|
17
|
+
// Type guard to ensure we have file content
|
|
18
|
+
if (file.data.type !== 'file') {
|
|
19
|
+
throw new Error('Expected file type, got symlink or submodule');
|
|
20
|
+
}
|
|
21
|
+
// Decode base64 content and parse YAML
|
|
22
|
+
const fileContent = Buffer.from(file.data.content, 'base64').toString('utf-8');
|
|
23
|
+
try {
|
|
24
|
+
return yaml.parse(fileContent);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
throw new Error(`Failed to parse YAML file: ${error}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function getEnvVar(name) {
|
|
31
|
+
const value = process.env[name];
|
|
32
|
+
if (!value) {
|
|
33
|
+
throw new Error(`Missing env var ${name}`);
|
|
34
|
+
}
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
const runExecutor = async (options) => {
|
|
38
|
+
logger_1.consola.box(`Start preview deploy switch for ${options.targetAppName} to target branch ${options.targetBranchName} on the ${options.targetEnv} env`);
|
|
39
|
+
const octokit = process.env.GITHUB_TOKEN
|
|
40
|
+
? new rest_1.Octokit({ auth: process.env.GITHUB_TOKEN })
|
|
41
|
+
: new rest_1.Octokit({
|
|
42
|
+
authStrategy: auth_app_1.createAppAuth,
|
|
43
|
+
auth: {
|
|
44
|
+
appId: getEnvVar('GITHUB_APP_ID'),
|
|
45
|
+
privateKey: getEnvVar('GITHUB_PRIVATE_KEY'),
|
|
46
|
+
installationId: getEnvVar('GITHUB_INSTALLATION_ID'),
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
const argocdOverridePath = `apps/${options.targetAppName}/${options.targetEnv}/.argocd-override.yaml`;
|
|
50
|
+
const kargoPolicyPath = `.kargo/policy.yaml`;
|
|
51
|
+
const message = `chore(${options.targetAppName}): switch deployment branch to ${options.targetBranchName} on ${options.targetEnv}`;
|
|
52
|
+
// Retrieve both files - throw error if either doesn't exist
|
|
53
|
+
const [argocdOverrideFile, kargoPolicyFile] = await Promise.all([
|
|
54
|
+
octokit.repos
|
|
55
|
+
.getContent({
|
|
56
|
+
owner: 'PayFit',
|
|
57
|
+
repo: options.targetRepo,
|
|
58
|
+
path: argocdOverridePath,
|
|
59
|
+
ref: 'heads/main',
|
|
60
|
+
})
|
|
61
|
+
.catch(e => {
|
|
62
|
+
// we don't update this file if it does not exist as it's optional
|
|
63
|
+
if (e.status === 404) {
|
|
64
|
+
logger_1.consola.info(`${options.targetRepo}/${argocdOverridePath} not found, ignoring this file`);
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
throw e;
|
|
68
|
+
}),
|
|
69
|
+
octokit.repos
|
|
70
|
+
.getContent({
|
|
71
|
+
owner: 'PayFit',
|
|
72
|
+
repo: options.targetRepo,
|
|
73
|
+
path: kargoPolicyPath,
|
|
74
|
+
ref: 'heads/main',
|
|
75
|
+
})
|
|
76
|
+
.catch(e => {
|
|
77
|
+
if (e.status === 404) {
|
|
78
|
+
throw new Error(`${options.targetRepo}/${kargoPolicyPath} not found`);
|
|
79
|
+
}
|
|
80
|
+
throw e;
|
|
81
|
+
}),
|
|
82
|
+
]);
|
|
83
|
+
let argocdOverrideYaml = readFileYamlContent(argocdOverrideFile);
|
|
84
|
+
let kargoPolicyYaml = readFileYamlContent(kargoPolicyFile);
|
|
85
|
+
if (argocdOverrideYaml)
|
|
86
|
+
argocdOverrideYaml = (0, argocdOverride_1.updateArgoCDOverride)(argocdOverrideYaml, options.targetBranchName);
|
|
87
|
+
kargoPolicyYaml = (0, kargoPolicy_1.updateKargoPolicy)(kargoPolicyYaml, options.targetBranchName, options.targetEnv, options.targetAppName);
|
|
88
|
+
if (!argocdOverrideYaml && !kargoPolicyYaml) {
|
|
89
|
+
logger_1.consola.warn('Everything is already setup correctly, skipping');
|
|
90
|
+
return {
|
|
91
|
+
success: true,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
// Convert back to YAML and base64
|
|
95
|
+
if (argocdOverrideYaml) {
|
|
96
|
+
const updatedArgocdYaml = yaml.stringify(argocdOverrideYaml);
|
|
97
|
+
const updatedArgocdContent = Buffer.from(updatedArgocdYaml).toString('base64');
|
|
98
|
+
await octokit.repos.createOrUpdateFileContents({
|
|
99
|
+
owner: 'PayFit',
|
|
100
|
+
repo: options.targetRepo,
|
|
101
|
+
path: argocdOverridePath,
|
|
102
|
+
message,
|
|
103
|
+
content: updatedArgocdContent,
|
|
104
|
+
branch: 'main',
|
|
105
|
+
sha: argocdOverrideFile.data.sha,
|
|
106
|
+
committer: {
|
|
107
|
+
name: 'github-actions[bot]',
|
|
108
|
+
email: 'github-actions[bot]@users.noreply.github.com',
|
|
109
|
+
},
|
|
110
|
+
author: {
|
|
111
|
+
name: 'github-actions[bot]',
|
|
112
|
+
email: 'github-actions[bot]@users.noreply.github.com',
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
if (kargoPolicyYaml) {
|
|
117
|
+
const updatedKargoYaml = yaml.stringify(kargoPolicyYaml);
|
|
118
|
+
const updatedKargoContent = Buffer.from(updatedKargoYaml).toString('base64');
|
|
119
|
+
await octokit.repos.createOrUpdateFileContents({
|
|
120
|
+
owner: 'PayFit',
|
|
121
|
+
repo: options.targetRepo,
|
|
122
|
+
path: kargoPolicyPath,
|
|
123
|
+
message,
|
|
124
|
+
content: updatedKargoContent,
|
|
125
|
+
branch: 'main',
|
|
126
|
+
sha: kargoPolicyFile.data.sha,
|
|
127
|
+
committer: {
|
|
128
|
+
name: 'github-actions[bot]',
|
|
129
|
+
email: 'github-actions[bot]@users.noreply.github.com',
|
|
130
|
+
},
|
|
131
|
+
author: {
|
|
132
|
+
name: 'github-actions[bot]',
|
|
133
|
+
email: 'github-actions[bot]@users.noreply.github.com',
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
logger_1.consola.success('Preview deploy switch succeed !');
|
|
138
|
+
return {
|
|
139
|
+
success: true,
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
exports.default = runExecutor;
|
|
143
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/executors/preview-deploy/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface KargoPolicy {
|
|
2
|
+
services?: Record<string, {
|
|
3
|
+
stages?: Record<string, {
|
|
4
|
+
ephemeralBranch?: string;
|
|
5
|
+
[key: string]: unknown;
|
|
6
|
+
}>;
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
}>;
|
|
9
|
+
[key: string]: unknown;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Updates the Kargo policy configuration based on the target branch
|
|
13
|
+
*/
|
|
14
|
+
export declare function updateKargoPolicy(kargoPolicy: KargoPolicy, targetBranchName: string, targetEnv: string, targetAppName: string): KargoPolicy | undefined;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateKargoPolicy = updateKargoPolicy;
|
|
4
|
+
const github_1 = require("../../utils/common/github");
|
|
5
|
+
/**
|
|
6
|
+
* Ensures the service structure exists in the kargo policy
|
|
7
|
+
* Returns true if any structure was created, false otherwise
|
|
8
|
+
*/
|
|
9
|
+
function ensureServiceStructure(kargoPolicy, appName, env) {
|
|
10
|
+
const service = kargoPolicy.services[appName];
|
|
11
|
+
if (!service.stages) {
|
|
12
|
+
service.stages = {};
|
|
13
|
+
}
|
|
14
|
+
if (!service.stages[env]) {
|
|
15
|
+
service.stages[env] = {};
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Removes ephemeral branch configuration and cleans up empty objects
|
|
20
|
+
* Returns true if any changes were made, false otherwise
|
|
21
|
+
*/
|
|
22
|
+
function resetKargoPolicyForDefaultBranch(kargoPolicy, appName, env) {
|
|
23
|
+
const service = kargoPolicy.services[appName];
|
|
24
|
+
let hasChanged = false;
|
|
25
|
+
// Remove ephemeral branch if it exists
|
|
26
|
+
if (service.stages[env].ephemeralBranch) {
|
|
27
|
+
delete service.stages[env].ephemeralBranch;
|
|
28
|
+
hasChanged = true; // only commit file if we made an actual change
|
|
29
|
+
}
|
|
30
|
+
// Clean up empty env stage
|
|
31
|
+
if (Object.keys(service.stages[env]).length === 0) {
|
|
32
|
+
delete service.stages[env];
|
|
33
|
+
}
|
|
34
|
+
// Clean up empty stages object
|
|
35
|
+
if (Object.keys(service.stages).length === 0) {
|
|
36
|
+
delete service.stages;
|
|
37
|
+
}
|
|
38
|
+
return hasChanged;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Sets the ephemeral branch for feature branch deployment
|
|
42
|
+
* Returns true if the value changed, false if it was already set to the same value
|
|
43
|
+
*/
|
|
44
|
+
function setEphemeralBranch(kargoPolicy, appName, env, branchName) {
|
|
45
|
+
const currentValue = kargoPolicy.services[appName].stages[env].ephemeralBranch;
|
|
46
|
+
kargoPolicy.services[appName].stages[env].ephemeralBranch = branchName;
|
|
47
|
+
return currentValue !== branchName;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Updates the Kargo policy configuration based on the target branch
|
|
51
|
+
*/
|
|
52
|
+
function updateKargoPolicy(kargoPolicy, targetBranchName, targetEnv, targetAppName) {
|
|
53
|
+
// Early return if service doesn't exist
|
|
54
|
+
if (!kargoPolicy.services || !kargoPolicy.services[targetAppName]) {
|
|
55
|
+
throw new Error('Unable to update kargo policy, service does not exist in the configuration');
|
|
56
|
+
}
|
|
57
|
+
let hasChanged = false;
|
|
58
|
+
// Ensure structure exists and track if changes were made
|
|
59
|
+
ensureServiceStructure(kargoPolicy, targetAppName, targetEnv);
|
|
60
|
+
if ((0, github_1.isDefaultBranch)(targetBranchName)) {
|
|
61
|
+
// reset to default branch
|
|
62
|
+
hasChanged = resetKargoPolicyForDefaultBranch(kargoPolicy, targetAppName, targetEnv);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
hasChanged = setEphemeralBranch(kargoPolicy, targetAppName, targetEnv, targetBranchName);
|
|
66
|
+
}
|
|
67
|
+
return hasChanged ? kargoPolicy : undefined;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=kargoPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kargoPolicy.js","sourceRoot":"","sources":["../../../../src/executors/preview-deploy/kargoPolicy.ts"],"names":[],"mappings":";;AA0FA,8CAmCC;AA7HD,sDAA2D;AAoB3D;;;GAGG;AACH,SAAS,sBAAsB,CAC7B,WAAwB,EACxB,OAAe,EACf,GAAW;IAEX,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAE7C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,GAAG,EAAE,CAAA;IACrB,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;IAC1B,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,gCAAgC,CACvC,WAAwB,EACxB,OAAe,EACf,GAAW;IAEX,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC7C,IAAI,UAAU,GAAG,KAAK,CAAA;IAEtB,uCAAuC;IACvC,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,CAAA;QAC1C,UAAU,GAAG,IAAI,CAAA,CAAC,+CAA+C;IACnE,CAAC;IAED,2BAA2B;IAC3B,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAED,+BAA+B;IAC/B,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,OAAO,CAAC,MAAM,CAAA;IACvB,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CACzB,WAAwB,EACxB,OAAe,EACf,GAAW,EACX,UAAkB;IAElB,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,CAAA;IAC9E,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,GAAG,UAAU,CAAA;IAEtE,OAAO,YAAY,KAAK,UAAU,CAAA;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,WAAwB,EACxB,gBAAwB,EACxB,SAAiB,EACjB,aAAqB;IAErB,wCAAwC;IACxC,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAA;IACH,CAAC;IAED,IAAI,UAAU,GAAG,KAAK,CAAA;IAEtB,yDAAyD;IACzD,sBAAsB,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC,CAAA;IAE7D,IAAI,IAAA,wBAAe,EAAC,gBAAgB,CAAC,EAAE,CAAC;QACtC,0BAA0B;QAC1B,UAAU,GAAG,gCAAgC,CAC3C,WAAW,EACX,aAAa,EACb,SAAS,CACV,CAAA;IACH,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,kBAAkB,CAC7B,WAAW,EACX,aAAa,EACb,SAAS,EACT,gBAAgB,CACjB,CAAA;IACH,CAAC;IAED,OAAO,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAA;AAC7C,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
|
+
"version": 2,
|
|
4
|
+
"title": "Preview deploy branch",
|
|
5
|
+
"description": "Use it to switch the deployment branch of an app",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"targetRepo": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"description": "Target <domain>-deploy repository"
|
|
11
|
+
},
|
|
12
|
+
"targetBranchName": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"description": "Branch name to deploy"
|
|
15
|
+
},
|
|
16
|
+
"targetEnv": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"description": "Target environment to deploy to",
|
|
19
|
+
"enum": ["dev", "staging", "prod"],
|
|
20
|
+
"default": "dev"
|
|
21
|
+
},
|
|
22
|
+
"targetAppName": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"description": "app name to target within the <domain>-deploy repo"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"required": ["targetAppName", "targetRepo", "targetBranchName"]
|
|
28
|
+
}
|
|
@@ -1,3 +1,18 @@
|
|
|
1
1
|
import { ExecutorContext } from '@nx/devkit';
|
|
2
2
|
import { PublisherExecutorOptions } from './schema';
|
|
3
|
+
/**
|
|
4
|
+
* Function called by nx-release-publish, it :
|
|
5
|
+
* - publish zip to S3
|
|
6
|
+
* - creates new version via Spacelift
|
|
7
|
+
* - runs smoke tests
|
|
8
|
+
* - create alias for lambda function
|
|
9
|
+
* - push OCI in ECR registry
|
|
10
|
+
*
|
|
11
|
+
* @param options - Contains lambdaBucket, lambdaFunctions, and lambdaStacks configuration
|
|
12
|
+
* @param context - NX executor context with project information
|
|
13
|
+
* @param version - Version string for deployment
|
|
14
|
+
* @param projectRoot - Project root directory path
|
|
15
|
+
* @param projectDist - Built code directory path
|
|
16
|
+
* @param isDryRun - Skip actual deployment if true
|
|
17
|
+
*/
|
|
3
18
|
export declare function publishLambda(options: PublisherExecutorOptions, context: ExecutorContext, version: string, projectRoot: string, projectDist: string, isDryRun: boolean): Promise<void>;
|
|
@@ -9,6 +9,21 @@ const s3_1 = require("../../utils/common/s3");
|
|
|
9
9
|
const lambda_1 = require("../../utils/lambda/lambda");
|
|
10
10
|
const oci_1 = require("../../utils/lambda/oci");
|
|
11
11
|
const publish_1 = require("../../utils/lambda/publish");
|
|
12
|
+
/**
|
|
13
|
+
* Function called by nx-release-publish, it :
|
|
14
|
+
* - publish zip to S3
|
|
15
|
+
* - creates new version via Spacelift
|
|
16
|
+
* - runs smoke tests
|
|
17
|
+
* - create alias for lambda function
|
|
18
|
+
* - push OCI in ECR registry
|
|
19
|
+
*
|
|
20
|
+
* @param options - Contains lambdaBucket, lambdaFunctions, and lambdaStacks configuration
|
|
21
|
+
* @param context - NX executor context with project information
|
|
22
|
+
* @param version - Version string for deployment
|
|
23
|
+
* @param projectRoot - Project root directory path
|
|
24
|
+
* @param projectDist - Built code directory path
|
|
25
|
+
* @param isDryRun - Skip actual deployment if true
|
|
26
|
+
*/
|
|
12
27
|
async function publishLambda(options, context, version, projectRoot, projectDist, isDryRun) {
|
|
13
28
|
const gitBranchName = await (0, github_1.getSanitizedCurrentGitBranch)();
|
|
14
29
|
const repoUrl = await (0, github_1.getSanitizedCurrentGitRepoUrl)();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../../src/executors/publisher/lambda.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../../src/executors/publisher/lambda.ts"],"names":[],"mappings":"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"}
|
|
@@ -184,20 +184,6 @@ function injectRootProjectJsonConfiguration(tree, packageJsonName) {
|
|
|
184
184
|
if (tree.exists('project.json')) {
|
|
185
185
|
(0, devkit_1.updateJson)(tree, 'project.json', projectJson => {
|
|
186
186
|
const projectConfig = projectJson;
|
|
187
|
-
if (!projectConfig.targets) {
|
|
188
|
-
projectConfig.targets = {
|
|
189
|
-
release: {
|
|
190
|
-
executor: '@payfit/nx-core:release',
|
|
191
|
-
cache: false,
|
|
192
|
-
},
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
else if (!projectConfig.targets['release']) {
|
|
196
|
-
projectConfig.targets['release'] = {
|
|
197
|
-
executor: '@payfit/nx-core:release',
|
|
198
|
-
cache: false,
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
187
|
projectConfig.name = packageJsonName;
|
|
202
188
|
return projectConfig;
|
|
203
189
|
});
|
|
@@ -207,12 +193,7 @@ function injectRootProjectJsonConfiguration(tree, packageJsonName) {
|
|
|
207
193
|
name: packageJsonName,
|
|
208
194
|
$schema: 'node_modules/nx/schemas/project-schema.json',
|
|
209
195
|
tags: ['scope:local'],
|
|
210
|
-
targets: {
|
|
211
|
-
release: {
|
|
212
|
-
executor: '@payfit/nx-core:release',
|
|
213
|
-
cache: false,
|
|
214
|
-
},
|
|
215
|
-
},
|
|
196
|
+
targets: {},
|
|
216
197
|
}));
|
|
217
198
|
}
|
|
218
199
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/generators/init/init.ts"],"names":[],"mappings":";;AA2DA,kEAqDC;AAED,wCA0BC;AAQD,0EAoBC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/generators/init/init.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -4,6 +4,24 @@ export interface MyPluginOptions {
|
|
|
4
4
|
export declare const createNodesV2: CreateNodesV2<MyPluginOptions>;
|
|
5
5
|
export declare function createNodesInternal(configFilePath: string, options: MyPluginOptions, context: CreateNodesContextV2): Promise<{
|
|
6
6
|
projects: {
|
|
7
|
-
[x: string]:
|
|
7
|
+
[x: string]: {
|
|
8
|
+
targets: {};
|
|
9
|
+
release: any;
|
|
10
|
+
name?: string;
|
|
11
|
+
root: string;
|
|
12
|
+
sourceRoot?: string;
|
|
13
|
+
projectType?: import("@nx/devkit").ProjectType;
|
|
14
|
+
generators?: {
|
|
15
|
+
[collectionName: string]: {
|
|
16
|
+
[generatorName: string]: any;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
implicitDependencies?: string[];
|
|
20
|
+
namedInputs?: {
|
|
21
|
+
[inputName: string]: (string | import("nx/src/config/workspace-json-project-json").InputDefinition)[];
|
|
22
|
+
};
|
|
23
|
+
tags?: string[];
|
|
24
|
+
metadata?: import("nx/src/config/workspace-json-project-json").ProjectMetadata;
|
|
25
|
+
};
|
|
8
26
|
};
|
|
9
27
|
}>;
|
package/dist/src/index.js
CHANGED
|
@@ -16,7 +16,7 @@ async function createNodesInternal(configFilePath, options, context) {
|
|
|
16
16
|
const projectRoot = (0, path_1.dirname)(configFilePath);
|
|
17
17
|
const isDockerProject = (0, fs_1.existsSync)((0, path_1.join)(projectRoot, 'Dockerfile'));
|
|
18
18
|
// Get the Helm chart folder from metadata, default to .deploy
|
|
19
|
-
const helmChartFolder = projectConfiguration
|
|
19
|
+
const helmChartFolder = projectConfiguration?.metadata?.['helmChartFolder'] || '.deploy';
|
|
20
20
|
const isHelmProject = (0, fs_1.existsSync)((0, path_1.join)(projectRoot, helmChartFolder, 'Chart.yaml'));
|
|
21
21
|
const isLambdaProject = !!(projectConfiguration.metadata &&
|
|
22
22
|
projectConfiguration.metadata['lambdaFunctions']);
|
|
@@ -49,12 +49,14 @@ async function createNodesInternal(configFilePath, options, context) {
|
|
|
49
49
|
? projectConfiguration.metadata &&
|
|
50
50
|
projectConfiguration.metadata['lambdaFunctions']
|
|
51
51
|
: undefined;
|
|
52
|
+
const isRootProject = projectRoot === '.';
|
|
52
53
|
let release = null;
|
|
53
54
|
if (isHelmProject || isDockerProject || isLambdaProject) {
|
|
54
55
|
const publisherConfig = (0, devkit_1.readJsonFile)((0, path_1.join)(__dirname, '/executors/publisher/schema.json'));
|
|
55
56
|
targets['nx-release-publish'] = {
|
|
56
57
|
// infer the custom publisher target to handle publishing docker & helm artefacts
|
|
57
58
|
executor: '@payfit/nx-core:publisher',
|
|
59
|
+
cache: false,
|
|
58
60
|
options: {
|
|
59
61
|
ecrRegistry,
|
|
60
62
|
chartRegistry,
|
|
@@ -70,7 +72,8 @@ async function createNodesInternal(configFilePath, options, context) {
|
|
|
70
72
|
description: publisherConfig.description,
|
|
71
73
|
},
|
|
72
74
|
};
|
|
73
|
-
if (!projectConfiguration?.release?.version
|
|
75
|
+
if (!projectConfiguration?.release?.version
|
|
76
|
+
?.versionActions) {
|
|
74
77
|
release = {
|
|
75
78
|
// infer the version actions to handle the custom versioning
|
|
76
79
|
version: {
|
|
@@ -79,6 +82,24 @@ async function createNodesInternal(configFilePath, options, context) {
|
|
|
79
82
|
};
|
|
80
83
|
}
|
|
81
84
|
}
|
|
85
|
+
if (isRootProject) {
|
|
86
|
+
const previewDeployConfig = (0, devkit_1.readJsonFile)((0, path_1.join)(__dirname, '/executors/preview-deploy/schema.json'));
|
|
87
|
+
targets['preview-deploy'] = {
|
|
88
|
+
executor: '@payfit/nx-core:preview-deploy',
|
|
89
|
+
cache: false,
|
|
90
|
+
metadata: {
|
|
91
|
+
description: previewDeployConfig.description,
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
const releaseConfig = (0, devkit_1.readJsonFile)((0, path_1.join)(__dirname, '/executors/release/schema.json'));
|
|
95
|
+
targets['release'] = {
|
|
96
|
+
executor: '@payfit/nx-core:release',
|
|
97
|
+
cache: false,
|
|
98
|
+
metadata: {
|
|
99
|
+
description: releaseConfig.description,
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
82
103
|
return {
|
|
83
104
|
projects: {
|
|
84
105
|
[projectRoot]: {
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,6 @@ function execWrapperFromString(cmd, options = {}) {
|
|
|
24
24
|
// Log the error to have it visible in the console
|
|
25
25
|
// Throw if requested
|
|
26
26
|
if (options?.throwOnError) {
|
|
27
|
-
logger_1.consola.error(`Command '${cmd}' failed with exit code ${output.exitCode}:\n ${output.stderr}`);
|
|
28
27
|
throw new Error(`Command '${cmd}' failed with exit code ${output.exitCode}:\n ${output.stderr}`);
|
|
29
28
|
}
|
|
30
29
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../../src/utils/common/exec.ts"],"names":[],"mappings":";;;AAEA,mDAA6C;AAC7C,uCAA4B;AAE5B,qCAAkC;AAElC,SAAS,wBAAwB,CAAC,MAAgB;IAChD,OAAO,CACL,OAAe,EACf,OAAiB,EAAE,EACnB,UAA4B,EAAE,EAC9B,EAAE;QACF,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACvC,CAAC,CAAA;AACH,CAAC;AAED,4DAA4D;AAC5D,SAAS,qBAAqB,CAC5B,GAAW,EACX,UAA4B,EAAE;IAE9B,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAA,6BAAY,EAAC,GAAG,CAAC,CAAA;IAC5C,MAAM,WAAW,GAAG,wBAAwB,CAAC,YAAC,CAAC,CAAA;IAE/C,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAElD,yCAAyC;IACzC,mDAAmD;IACnD,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI;IACjC,kBAAkB;IAClB,MAAM,CAAC,EAAE;QACP,8BAA8B;QAC9B,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,kDAAkD;YAClD,qBAAqB;YACrB,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;gBAC1B,
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../../src/utils/common/exec.ts"],"names":[],"mappings":";;;AAEA,mDAA6C;AAC7C,uCAA4B;AAE5B,qCAAkC;AAElC,SAAS,wBAAwB,CAAC,MAAgB;IAChD,OAAO,CACL,OAAe,EACf,OAAiB,EAAE,EACnB,UAA4B,EAAE,EAC9B,EAAE;QACF,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACvC,CAAC,CAAA;AACH,CAAC;AAED,4DAA4D;AAC5D,SAAS,qBAAqB,CAC5B,GAAW,EACX,UAA4B,EAAE;IAE9B,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAA,6BAAY,EAAC,GAAG,CAAC,CAAA;IAC5C,MAAM,WAAW,GAAG,wBAAwB,CAAC,YAAC,CAAC,CAAA;IAE/C,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAElD,yCAAyC;IACzC,mDAAmD;IACnD,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI;IACjC,kBAAkB;IAClB,MAAM,CAAC,EAAE;QACP,8BAA8B;QAC9B,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,kDAAkD;YAClD,qBAAqB;YACrB,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CACb,YAAY,GAAG,2BAA2B,MAAM,CAAC,QAAQ,OAAO,MAAM,CAAC,MAAM,EAAE,CAChF,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,gBAAO,CAAC,IAAI,CACV,YAAY,GAAG,2BAA2B,MAAM,CAAC,QAAQ,QAAQ,MAAM,CAAC,MAAM,EAAE,CACjF,CAAA;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IACD,sCAAsC;IACtC,KAAK,CAAC,EAAE;QACN,yCAAyC;QACzC,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;YAC1B,gBAAO,CAAC,KAAK,CAAC,YAAY,GAAG,qBAAqB,KAAK,EAAE,CAAC,CAAA;YAC1D,MAAM,KAAK,CAAA;QACb,CAAC;QAED,8DAA8D;QAC9D,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC,CACF,CAAA;IAED,gFAAgF;IAChF,8DAA8D;IAC9D,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAC5C,MAAM,EACN,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CACrD,CAAA;IAED,OAAO,cAAwB,CAAA;AACjC,CAAC;AAEY,QAAA,IAAI,GAAG,qBAAqB,CAAA"}
|
|
@@ -14,3 +14,7 @@ export declare function getSanitizedCurrentGitRepoUrl(): Promise<string>;
|
|
|
14
14
|
* Get git repository name from remote origin URL
|
|
15
15
|
*/
|
|
16
16
|
export declare function getGitRepositoryName(): Promise<string | undefined>;
|
|
17
|
+
/**
|
|
18
|
+
* Checks if the branch is a default branch
|
|
19
|
+
*/
|
|
20
|
+
export declare function isDefaultBranch(branchName: string): boolean;
|
|
@@ -4,6 +4,7 @@ exports.getSanitizedCurrentGitBranch = getSanitizedCurrentGitBranch;
|
|
|
4
4
|
exports.getCurrentGitCommitSha = getCurrentGitCommitSha;
|
|
5
5
|
exports.getSanitizedCurrentGitRepoUrl = getSanitizedCurrentGitRepoUrl;
|
|
6
6
|
exports.getGitRepositoryName = getGitRepositoryName;
|
|
7
|
+
exports.isDefaultBranch = isDefaultBranch;
|
|
7
8
|
const exec_1 = require("./exec");
|
|
8
9
|
/**
|
|
9
10
|
* Get sanitized current git branch name
|
|
@@ -50,4 +51,10 @@ async function getGitRepositoryName() {
|
|
|
50
51
|
}
|
|
51
52
|
return undefined;
|
|
52
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Checks if the branch is a default branch
|
|
56
|
+
*/
|
|
57
|
+
function isDefaultBranch(branchName) {
|
|
58
|
+
return branchName === 'main' || branchName === 'master';
|
|
59
|
+
}
|
|
53
60
|
//# sourceMappingURL=github.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../../src/utils/common/github.ts"],"names":[],"mappings":";;AAKA,oEAQC;AAKD,wDAGC;AAKD,sEAWC;AAKD,oDASC;
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../../src/utils/common/github.ts"],"names":[],"mappings":";;AAKA,oEAQC;AAKD,wDAGC;AAKD,sEAWC;AAKD,oDASC;AAKD,0CAEC;AA1DD,iCAA6B;AAE7B;;GAEG;AACI,KAAK,UAAU,4BAA4B;IAChD,MAAM,UAAU,GAAG,MAAM,IAAA,WAAI,EAAC,2BAA2B,CAAC,CAAA;IAC1D,OAAO,UAAU,CAAC,QAAQ,IAAI,CAAC;QAC7B,CAAC,CAAC,UAAU,CAAC,MAAM;aACd,IAAI,EAAE;aACN,WAAW,EAAE;aACb,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;QAC/B,CAAC,CAAC,EAAE,CAAA;AACR,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,sBAAsB;IAC1C,MAAM,SAAS,GAAG,MAAM,IAAA,WAAI,EAAC,oBAAoB,CAAC,CAAA;IAClD,OAAO,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AAC/D,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,6BAA6B;IACjD,MAAM,WAAW,GAAG,MAAM,IAAA,WAAI,EAAC,oCAAoC,CAAC,CAAA;IACpE,IAAI,WAAW,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAC9C,8BAA8B,CAC/B,CAAA;QACD,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,OAAO,WAAW,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAA;QACrF,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,oBAAoB;IACxC,MAAM,WAAW,GAAG,MAAM,IAAA,WAAI,EAAC,oCAAoC,CAAC,CAAA;IACpE,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IACzC,kEAAkE;IAClE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;IACpD,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,UAAkB;IAChD,OAAO,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,QAAQ,CAAA;AACzD,CAAC"}
|
|
@@ -1,6 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts environment and AWS account ID from Spacelift stack ID.
|
|
3
|
+
*
|
|
4
|
+
* @param stackId - Spacelift stack identifier
|
|
5
|
+
* @returns Tuple of [environment, accountId]
|
|
6
|
+
*/
|
|
1
7
|
export declare function retrieveAccoundId(stackId: string): [string, string];
|
|
8
|
+
/**
|
|
9
|
+
* Gets the latest version number of a Lambda function.
|
|
10
|
+
*
|
|
11
|
+
* @param lambdaARN - AWS Lambda function ARN
|
|
12
|
+
* @param envVars - AWS credentials environment variables
|
|
13
|
+
* @returns Latest version number
|
|
14
|
+
*/
|
|
2
15
|
export declare function getLatestVersion(lambdaARN: string, envVars: Record<string, string>): Promise<string>;
|
|
16
|
+
/**
|
|
17
|
+
* Runs smoke tests on Lambda functions by invoking them with empty payload.
|
|
18
|
+
*
|
|
19
|
+
* @param stackId - Spacelift stack ID to determine environment
|
|
20
|
+
* @param lambdaFunctions - Array of Lambda function names to test
|
|
21
|
+
*/
|
|
3
22
|
export declare function runSmokeTests(stackId: string, lambdaFunctions: string[]): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Creates or updates a Lambda function alias to point to latest version.
|
|
25
|
+
*
|
|
26
|
+
* @param accountId - AWS account ID
|
|
27
|
+
* @param lambdaARN - Lambda function ARN
|
|
28
|
+
* @param alias - Alias name to create/update
|
|
29
|
+
* @param envVars - AWS credentials environment variables
|
|
30
|
+
*/
|
|
4
31
|
export declare function createOrUpdateLambdaAlias(accountId: string, lambdaARN: string, alias: string, envVars: Record<string, string>): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Sanitizes alias names for AWS Lambda compatibility (replaces dots with dashes).
|
|
34
|
+
*
|
|
35
|
+
* @param alias - Raw alias name
|
|
36
|
+
* @returns Sanitized alias name
|
|
37
|
+
*/
|
|
5
38
|
export declare function sanitizeAliasName(alias: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Creates or updates aliases for multiple Lambda functions in parallel.
|
|
41
|
+
*
|
|
42
|
+
* @param stackId - Spacelift stack ID to determine environment
|
|
43
|
+
* @param lambdaFunctions - Array of Lambda function names
|
|
44
|
+
* @param alias - Alias name to create/update
|
|
45
|
+
*/
|
|
6
46
|
export declare function createOrMoveAlias(stackId: string, lambdaFunctions: string[], alias: string): Promise<void>;
|
|
@@ -16,14 +16,27 @@ const ACCOUNT_IDS = {
|
|
|
16
16
|
shared: '574592175410',
|
|
17
17
|
prod: '614948436281',
|
|
18
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* Extracts environment and AWS account ID from Spacelift stack ID.
|
|
21
|
+
*
|
|
22
|
+
* @param stackId - Spacelift stack identifier
|
|
23
|
+
* @returns Tuple of [environment, accountId]
|
|
24
|
+
*/
|
|
19
25
|
function retrieveAccoundId(stackId) {
|
|
20
26
|
const environmentMatch = stackId.match(/-(dev|testing|prod|staging|shared)-/);
|
|
21
27
|
const environment = environmentMatch ? environmentMatch[1] : 'unknown';
|
|
22
28
|
return [environment, ACCOUNT_IDS[environment]];
|
|
23
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Gets the latest version number of a Lambda function.
|
|
32
|
+
*
|
|
33
|
+
* @param lambdaARN - AWS Lambda function ARN
|
|
34
|
+
* @param envVars - AWS credentials environment variables
|
|
35
|
+
* @returns Latest version number
|
|
36
|
+
*/
|
|
24
37
|
async function getLatestVersion(lambdaARN, envVars) {
|
|
25
38
|
logger_1.consola.log(`Retrieving latest version for function ${lambdaARN}`);
|
|
26
|
-
const latestVersionResult = await (0, exec_1.exec)(`aws lambda list-versions-by-function --function-name ${lambdaARN} --query 'Versions[?Version!=\`$LATEST\`] | [-1].Version' --output text`, { throwOnError:
|
|
39
|
+
const latestVersionResult = await (0, exec_1.exec)(`aws lambda list-versions-by-function --function-name ${lambdaARN} --query 'Versions[?Version!=\`$LATEST\`] | [-1].Version' --output text`, { throwOnError: false, nodeOptions: { env: envVars } });
|
|
27
40
|
if (latestVersionResult.exitCode !== 0) {
|
|
28
41
|
logger_1.consola.error(`AWS Lambda list-versions-by-function failed: ${latestVersionResult.stderr}`);
|
|
29
42
|
throw new Error(`AWS Lambda list-versions-by-function failed: ${latestVersionResult.stderr}`);
|
|
@@ -31,6 +44,12 @@ async function getLatestVersion(lambdaARN, envVars) {
|
|
|
31
44
|
// with pagination stdout looks like "49\n99\n109" we want to retieve the last version
|
|
32
45
|
return latestVersionResult.stdout.trim().split('\n').pop();
|
|
33
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Runs smoke tests on Lambda functions by invoking them with empty payload.
|
|
49
|
+
*
|
|
50
|
+
* @param stackId - Spacelift stack ID to determine environment
|
|
51
|
+
* @param lambdaFunctions - Array of Lambda function names to test
|
|
52
|
+
*/
|
|
34
53
|
async function runSmokeTests(stackId, lambdaFunctions) {
|
|
35
54
|
const [environment, accountId] = retrieveAccoundId(stackId);
|
|
36
55
|
const credentials = await assumeEnvironmentSpecificRole(environment);
|
|
@@ -42,7 +61,8 @@ async function runSmokeTests(stackId, lambdaFunctions) {
|
|
|
42
61
|
try {
|
|
43
62
|
logger_1.consola.log(`Running smoke tests for ${functionName} in env ${environment}`);
|
|
44
63
|
const emptyPayload = JSON.stringify({ Records: [] });
|
|
45
|
-
const invokeResult = await (0, exec_1.exec)(`aws lambda invoke --function-name ${lambdaFullARN} --payload ${btoa(emptyPayload)} /tmp/lambda-response.json`, { throwOnError:
|
|
64
|
+
const invokeResult = await (0, exec_1.exec)(`aws lambda invoke --function-name ${lambdaFullARN} --payload ${btoa(emptyPayload)} /tmp/lambda-response.json`, { throwOnError: false, nodeOptions: { env: envVars } });
|
|
65
|
+
logger_1.consola.log('invokeResult :', invokeResult);
|
|
46
66
|
if (JSON.parse(invokeResult.stdout)['FunctionError']) {
|
|
47
67
|
const errorFile = (0, devkit_1.readJsonFile)('/tmp/lambda-response.json');
|
|
48
68
|
const errorMessage = errorFile.errorMessage;
|
|
@@ -61,6 +81,14 @@ async function runSmokeTests(stackId, lambdaFunctions) {
|
|
|
61
81
|
await Promise.all(lambdaFunctions.map(smokeTestFunction));
|
|
62
82
|
logger_1.consola.success(`All smoke tests passed in ${environment} environment`);
|
|
63
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Creates or updates a Lambda function alias to point to latest version.
|
|
86
|
+
*
|
|
87
|
+
* @param accountId - AWS account ID
|
|
88
|
+
* @param lambdaARN - Lambda function ARN
|
|
89
|
+
* @param alias - Alias name to create/update
|
|
90
|
+
* @param envVars - AWS credentials environment variables
|
|
91
|
+
*/
|
|
64
92
|
async function createOrUpdateLambdaAlias(accountId, lambdaARN, alias, envVars) {
|
|
65
93
|
const latestVersion = await getLatestVersion(lambdaARN, envVars);
|
|
66
94
|
// Check if alias already exists
|
|
@@ -71,22 +99,32 @@ async function createOrUpdateLambdaAlias(accountId, lambdaARN, alias, envVars) {
|
|
|
71
99
|
logger_1.consola.log(`${aliasExists ? 'Updating' : 'Creating'} alias ${alias} for function ${lambdaARN} with version ${latestVersion}`);
|
|
72
100
|
logger_1.consola.log(`Executing command aws lambda ${aliasAction} --function-name ${lambdaARN} --name ${alias} --function-version ${latestVersion}`);
|
|
73
101
|
const result = await (0, exec_1.exec)(`aws lambda ${aliasAction} --function-name ${lambdaARN} --name ${alias} --function-version ${latestVersion}`, {
|
|
74
|
-
throwOnError:
|
|
102
|
+
throwOnError: false,
|
|
75
103
|
nodeOptions: { env: envVars },
|
|
76
104
|
});
|
|
105
|
+
if (result.exitCode !== 0) {
|
|
106
|
+
logger_1.consola.error(`Error when ${aliasAction} ${alias} for function ${lambdaARN} with version ${latestVersion}: ${result.stderr}`);
|
|
107
|
+
throw new Error(`AWS Lambda ${aliasAction} failed: ${result.stderr}`);
|
|
108
|
+
}
|
|
77
109
|
const response = JSON.parse(result.stdout);
|
|
78
110
|
if (response.Name !== alias) {
|
|
79
111
|
throw new Error(`Lambda alias ${alias} ${aliasExists ? 'update' : 'creation'} failed for function ${lambdaARN} in ${accountId}. Response name should match alias`);
|
|
80
112
|
}
|
|
81
113
|
logger_1.consola.success(`Successfully ${aliasExists ? 'updated' : 'created'} alias ${alias} for function ${lambdaARN} with version ${latestVersion}`);
|
|
82
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Assumes IAM role for environment-specific Lambda operations.
|
|
117
|
+
*
|
|
118
|
+
* @param environment - Target environment name
|
|
119
|
+
* @returns AWS temporary credentials
|
|
120
|
+
*/
|
|
83
121
|
async function assumeEnvironmentSpecificRole(environment) {
|
|
84
122
|
const roleName = `invoke-lambda-nx-core`;
|
|
85
123
|
const accountId = ACCOUNT_IDS[environment];
|
|
86
124
|
const roleArn = `arn:aws:iam::${accountId}:role/${roleName}`;
|
|
87
125
|
logger_1.consola.log(`Assuming role ${roleName} for environment ${environment}`);
|
|
88
126
|
try {
|
|
89
|
-
const result = await (0, exec_1.exec)(`aws sts assume-role --role-arn ${roleArn} --role-session-name nx-core`, { throwOnError:
|
|
127
|
+
const result = await (0, exec_1.exec)(`aws sts assume-role --role-arn ${roleArn} --role-session-name nx-core`, { throwOnError: false });
|
|
90
128
|
if (result.exitCode !== 0) {
|
|
91
129
|
logger_1.consola.error(`AWS STS assume-role failed: ${result.stderr}`);
|
|
92
130
|
throw new Error(`AWS STS assume-role failed: ${result.stderr}`);
|
|
@@ -143,6 +181,12 @@ async function assumeEnvironmentSpecificRole(environment) {
|
|
|
143
181
|
throw new Error(`Role assumption failed for ${environment}: ${error.message}`);
|
|
144
182
|
}
|
|
145
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* Converts assumed role credentials to environment variables.
|
|
186
|
+
*
|
|
187
|
+
* @param credentials - AWS temporary credentials
|
|
188
|
+
* @returns Environment variables with AWS credentials
|
|
189
|
+
*/
|
|
146
190
|
function getAssumedRoleEnvVars(credentials) {
|
|
147
191
|
// Only override the specific AWS credential environment variables
|
|
148
192
|
const baseEnv = { ...process.env };
|
|
@@ -151,11 +195,24 @@ function getAssumedRoleEnvVars(credentials) {
|
|
|
151
195
|
baseEnv.AWS_SESSION_TOKEN = credentials.sessionToken;
|
|
152
196
|
return baseEnv;
|
|
153
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Sanitizes alias names for AWS Lambda compatibility (replaces dots with dashes).
|
|
200
|
+
*
|
|
201
|
+
* @param alias - Raw alias name
|
|
202
|
+
* @returns Sanitized alias name
|
|
203
|
+
*/
|
|
154
204
|
function sanitizeAliasName(alias) {
|
|
155
205
|
// AWS Lambda alias names must satisfy: (?!^[0-9]+$)([a-zA-Z0-9-_]+)
|
|
156
206
|
// Replace dots with dashes and ensure it's not all numbers
|
|
157
207
|
return alias.replace(/\./g, '-');
|
|
158
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* Creates or updates aliases for multiple Lambda functions in parallel.
|
|
211
|
+
*
|
|
212
|
+
* @param stackId - Spacelift stack ID to determine environment
|
|
213
|
+
* @param lambdaFunctions - Array of Lambda function names
|
|
214
|
+
* @param alias - Alias name to create/update
|
|
215
|
+
*/
|
|
159
216
|
async function createOrMoveAlias(stackId, lambdaFunctions, alias) {
|
|
160
217
|
const [environment, accountId] = retrieveAccoundId(stackId);
|
|
161
218
|
const credentials = await assumeEnvironmentSpecificRole(environment);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aws-lambda.js","sourceRoot":"","sources":["../../../../src/utils/lambda/aws-lambda.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"aws-lambda.js","sourceRoot":"","sources":["../../../../src/utils/lambda/aws-lambda.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a ZIP archive of Lambda function code.
|
|
3
|
+
*
|
|
4
|
+
* @param source - Directory path containing Lambda code
|
|
5
|
+
* @param zipName - Name for the ZIP file
|
|
6
|
+
*/
|
|
1
7
|
export declare const createZip: (source: string, zipName: string) => Promise<import("tinyexec").Output>;
|
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createZip = void 0;
|
|
4
4
|
const exec_1 = require("../common/exec");
|
|
5
|
+
/**
|
|
6
|
+
* Creates a ZIP archive of Lambda function code.
|
|
7
|
+
*
|
|
8
|
+
* @param source - Directory path containing Lambda code
|
|
9
|
+
* @param zipName - Name for the ZIP file
|
|
10
|
+
*/
|
|
5
11
|
const createZip = async (source, zipName) => {
|
|
6
12
|
const cwd = process.cwd();
|
|
7
13
|
process.chdir(source);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../../src/utils/lambda/lambda.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;
|
|
1
|
+
{"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../../src/utils/lambda/lambda.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAErC;;;;;GAKG;AACI,MAAM,SAAS,GAAG,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE;IACjE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACrB,MAAM,GAAG,GAAG,UAAU,OAAO,IAAI,CAAA;IACjC,MAAM,GAAG,GAAG,MAAM,IAAA,WAAI,EAAC,GAAG,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;IACnD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAClB,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAPY,QAAA,SAAS,aAOrB"}
|
|
@@ -1 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pushes Lambda function package.json as OCI artifact to ECR using ORAS.
|
|
3
|
+
*
|
|
4
|
+
* @param lambdaEcrRepository - ECR repository name
|
|
5
|
+
* @param tag - Version tag for the artifact
|
|
6
|
+
* @param pathToPackageJson - Path to package.json file
|
|
7
|
+
*/
|
|
1
8
|
export declare function pushImageToEcr(lambdaEcrRepository: string, tag: string, pathToPackageJson: string): Promise<void>;
|
|
@@ -3,13 +3,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.pushImageToEcr = pushImageToEcr;
|
|
4
4
|
const consola_1 = require("consola");
|
|
5
5
|
const exec_1 = require("../common/exec");
|
|
6
|
+
/**
|
|
7
|
+
* Pushes Lambda function package.json as OCI artifact to ECR using ORAS.
|
|
8
|
+
*
|
|
9
|
+
* @param lambdaEcrRepository - ECR repository name
|
|
10
|
+
* @param tag - Version tag for the artifact
|
|
11
|
+
* @param pathToPackageJson - Path to package.json file
|
|
12
|
+
*/
|
|
6
13
|
async function pushImageToEcr(lambdaEcrRepository, tag, pathToPackageJson) {
|
|
7
14
|
if (!process.env.AWS_ECR_REGISTRY) {
|
|
8
15
|
throw new Error('AWS_ECR_REGISTRY environment variable is not set');
|
|
9
16
|
}
|
|
10
17
|
const uploadToOci = await (0, exec_1.exec)(`oras push ${process.env.AWS_ECR_REGISTRY}/${lambdaEcrRepository}:${tag} --disable-path-validation --artifact-type application/vnd.payfit.lambda.manifest ${pathToPackageJson}`, {
|
|
11
|
-
throwOnError:
|
|
18
|
+
throwOnError: false,
|
|
12
19
|
});
|
|
13
20
|
consola_1.consola.log(uploadToOci.stdout);
|
|
21
|
+
if (uploadToOci.exitCode !== 0) {
|
|
22
|
+
consola_1.consola.error(`Failed to push image to ECR: ${uploadToOci.stderr || 'Unknown error'}`);
|
|
23
|
+
throw new Error(`Failed to push image to ECR: ${uploadToOci.stderr || 'Unknown error'}`);
|
|
24
|
+
}
|
|
14
25
|
}
|
|
15
26
|
//# sourceMappingURL=oci.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oci.js","sourceRoot":"","sources":["../../../../src/utils/lambda/oci.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"oci.js","sourceRoot":"","sources":["../../../../src/utils/lambda/oci.ts"],"names":[],"mappings":";;AAWA,wCAuBC;AAlCD,qCAAiC;AAEjC,yCAAqC;AAErC;;;;;;GAMG;AACI,KAAK,UAAU,cAAc,CAClC,mBAA2B,EAC3B,GAAW,EACX,iBAAyB;IAEzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;IACrE,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,IAAA,WAAI,EAC5B,aAAa,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,mBAAmB,IAAI,GAAG,qFAAqF,iBAAiB,EAAE,EAC/K;QACE,YAAY,EAAE,KAAK;KACpB,CACF,CAAA;IACD,iBAAO,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAC/B,IAAI,WAAW,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC/B,iBAAO,CAAC,KAAK,CACX,gCAAgC,WAAW,CAAC,MAAM,IAAI,eAAe,EAAE,CACxE,CAAA;QACD,MAAM,IAAI,KAAK,CACb,gCAAgC,WAAW,CAAC,MAAM,IAAI,eAAe,EAAE,CACxE,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates new lambda release candidate for each stacks in parallel:
|
|
3
|
+
*- Update variable commit_sha in spacelift configuration f
|
|
4
|
+
*- Update variable ambda_version in spacelift configuration
|
|
5
|
+
* - Trigger Spacelift run to create a new lambda version
|
|
6
|
+
* - Run smoke tests on each lambda functions
|
|
7
|
+
* - Create alias on each lambda functions with the new release candidate
|
|
8
|
+
*
|
|
9
|
+
* @param stacksName - Array of Spacelift stack IDs
|
|
10
|
+
* @param lambdaFunctions - Array of Lambda function names
|
|
11
|
+
* @param version - Version string for deployment
|
|
12
|
+
*/
|
|
1
13
|
export declare function createLambdaVersion(stacksName: string[], lambdaFunctions: string[], version: string): Promise<void>;
|
|
@@ -7,6 +7,18 @@ const graphql_service_1 = require("../spacelift/lib/graphql.service");
|
|
|
7
7
|
const spacelift_service_1 = require("../spacelift/lib/spacelift.service");
|
|
8
8
|
const aws_lambda_1 = require("./aws-lambda");
|
|
9
9
|
const spacelift_1 = require("./spacelift");
|
|
10
|
+
/**
|
|
11
|
+
* Creates new lambda release candidate for each stacks in parallel:
|
|
12
|
+
*- Update variable commit_sha in spacelift configuration f
|
|
13
|
+
*- Update variable ambda_version in spacelift configuration
|
|
14
|
+
* - Trigger Spacelift run to create a new lambda version
|
|
15
|
+
* - Run smoke tests on each lambda functions
|
|
16
|
+
* - Create alias on each lambda functions with the new release candidate
|
|
17
|
+
*
|
|
18
|
+
* @param stacksName - Array of Spacelift stack IDs
|
|
19
|
+
* @param lambdaFunctions - Array of Lambda function names
|
|
20
|
+
* @param version - Version string for deployment
|
|
21
|
+
*/
|
|
10
22
|
async function createLambdaVersion(stacksName, lambdaFunctions, version) {
|
|
11
23
|
const graphqlService = new graphql_service_1.GraphQlService();
|
|
12
24
|
const spaceliftService = new spacelift_service_1.SpaceliftService(graphqlService);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../../src/utils/lambda/publish.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../../src/utils/lambda/publish.ts"],"names":[],"mappings":";;AAsBA,kDAwCC;AA9DD,6CAAyD;AACzD,6CAA0C;AAC1C,sEAAiE;AACjE,0EAAqE;AACrE,6CAA+D;AAC/D,2CAGoB;AAEpB;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,mBAAmB,CACvC,UAAoB,EACpB,eAAyB,EACzB,OAAe;IAEf,MAAM,cAAc,GAAG,IAAI,gCAAc,EAAE,CAAA;IAC3C,MAAM,gBAAgB,GAAG,IAAI,oCAAgB,CAAC,cAAc,CAAC,CAAA;IAC7D,MAAM,kBAAkB,GAAG,KAAK,EAAE,OAAe,EAAiB,EAAE;QAClE,MAAM,gBAAgB,GAAG,MAAM,IAAA,+BAAsB,GAAE,CAAA;QACvD,gBAAO,CAAC,GAAG,CACT,4BAA4B,OAAO,mCAAmC,gBAAgB,EAAE,CACzF,CAAA;QACD,MAAM,IAAA,8CAAkC,EACtC,gBAAgB,EAChB,OAAO,EACP,mBAAmB,EACnB,gBAAgB,CACjB,CAAA;QACD,gBAAO,CAAC,GAAG,CACT,4BAA4B,OAAO,uCAAuC,gBAAgB,EAAE,CAC7F,CAAA;QACD,MAAM,IAAA,8CAAkC,EACtC,gBAAgB,EAChB,OAAO,EACP,uBAAuB,EACvB,OAAO,CACR,CAAA;QAED,MAAM,IAAA,iCAAqB,EAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;QACtD,MAAM,IAAA,0BAAa,EAAC,OAAO,EAAE,eAAe,CAAC,CAAA;IAC/C,CAAC,CAAA;IAED,MAAM,eAAe,GAAG,KAAK,EAAE,OAAe,EAAiB,EAAE;QAC/D,MAAM,IAAA,8BAAiB,EAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,CAAA;IAC5D,CAAC,CAAA;IACD,sBAAsB;IACtB,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAA;IACrD,gBAAO,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAA;IAChE,gBAAO,CAAC,GAAG,CAAC,kDAAkD,OAAO,EAAE,CAAC,CAAA;IACxE,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAA;AACpD,CAAC"}
|
package/executors.json
CHANGED
|
@@ -9,6 +9,11 @@
|
|
|
9
9
|
"implementation": "./dist/src/executors/release/executor",
|
|
10
10
|
"schema": "./dist/src/executors/release/schema.json",
|
|
11
11
|
"description": "Custom release executor"
|
|
12
|
+
},
|
|
13
|
+
"preview-deploy": {
|
|
14
|
+
"implementation": "./dist/src/executors/preview-deploy/executor",
|
|
15
|
+
"schema": "./dist/src/executors/preview-deploy/schema.json",
|
|
16
|
+
"description": "Custom preview-deploy executor"
|
|
12
17
|
}
|
|
13
18
|
}
|
|
14
19
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payfit/nx-core",
|
|
3
|
-
"version": "4.46.0
|
|
3
|
+
"version": "4.46.0",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
"@graphql-typed-document-node/core": "^3.2.0",
|
|
16
16
|
"@nx/devkit": "21.3.8",
|
|
17
17
|
"@nx/js": "21.3.8",
|
|
18
|
+
"@octokit/auth-app": "^8.0.2",
|
|
19
|
+
"@octokit/rest": "^22.0.0",
|
|
18
20
|
"args-tokenizer": "^0.3.0",
|
|
19
21
|
"consola": "^3.4.2",
|
|
20
22
|
"cross-fetch": "4.1.0",
|