@payfit/nx-core 4.46.0-ephemeral-last-fixes-lambda-fbac454.0 → 4.46.1
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/README.md +7 -3
- 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 +29 -4
- package/dist/src/executors/publisher/lambda.js.map +1 -1
- package/dist/src/executors/publisher/schema.json +4 -0
- 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 +28 -2
- package/dist/src/index.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 +42 -1
- package/dist/src/utils/lambda/aws-lambda.js +55 -3
- 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 +7 -0
- package/dist/src/utils/lambda/oci.js.map +1 -1
- package/dist/src/utils/lambda/publish.d.ts +14 -1
- package/dist/src/utils/lambda/publish.js +15 -2
- package/dist/src/utils/lambda/publish.js.map +1 -1
- package/executors.json +5 -0
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -83,8 +83,9 @@ When using Lambda functions, you can configure the following parameters in your
|
|
|
83
83
|
{
|
|
84
84
|
"metadata": {
|
|
85
85
|
"lambdaFunctions": ["your-lambda-registry"],
|
|
86
|
-
"lambdaStacks": ["
|
|
87
|
-
"lambdaBucket": "your-lambda-bucket"
|
|
86
|
+
"lambdaStacks": ["your-lambda-stack"],
|
|
87
|
+
"lambdaBucket": "your-lambda-bucket",
|
|
88
|
+
"lambdaHealthCheckPayload": "your-lambda-payload-json-string-formatted"
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
91
|
```
|
|
@@ -94,6 +95,7 @@ These fields are used to:
|
|
|
94
95
|
- `lambdaFunctions`: Lambda functions to deploy
|
|
95
96
|
- `lambdaStacks`: Spacelift stacks deploying lambdas
|
|
96
97
|
- `lambdaBucket`: the S3 bucket where Lambda function zip archives are stored
|
|
98
|
+
- `lambdaHealthCheckPayload`: Payload used for smoke tests invocation
|
|
97
99
|
|
|
98
100
|
If `lambdaBucket` is not specified, the plugin will fall back to the default bucket: `payfit-shared-lambda-artifacts`.
|
|
99
101
|
|
|
@@ -114,7 +116,8 @@ You'll need to add the following metadata to your project's `project.json` file:
|
|
|
114
116
|
"helmChartFolder": "your-helm-folder",
|
|
115
117
|
"lambdaFunctions": ["your-lambda-registry"],
|
|
116
118
|
"lambdaStacks": ["your-lambda-stack"],
|
|
117
|
-
"lambdaBucket": "your-lambda-bucket"
|
|
119
|
+
"lambdaBucket": "your-lambda-bucket",
|
|
120
|
+
"lambdaHealthCheckPayload": "your-lambda-payload-json-string-formatted"
|
|
118
121
|
}
|
|
119
122
|
}
|
|
120
123
|
```
|
|
@@ -128,6 +131,7 @@ These fields are used to:
|
|
|
128
131
|
- `lambdaStacks`: the spacelift stacks containing lambda to deploy
|
|
129
132
|
- `lambdaFunctions`: the lambda functions to deploy
|
|
130
133
|
- `lambdaBucket`: the S3 bucket where Lambda function zip archives are stored (defaults to `payfit-shared-lambda-artifacts`)
|
|
134
|
+
- `lambdaHealthCheckPayload`: Payload used for smoke tests invocation before lambda being released
|
|
131
135
|
|
|
132
136
|
## Automatic Release Target Inference
|
|
133
137
|
|
|
@@ -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)();
|
|
@@ -24,17 +39,27 @@ async function publishLambda(options, context, version, projectRoot, projectDist
|
|
|
24
39
|
if (!gitBranchName)
|
|
25
40
|
throw new Error('Unable to get current Git branch');
|
|
26
41
|
if (!options.lambdaFunctions) {
|
|
27
|
-
logger_1.consola.warn(
|
|
42
|
+
logger_1.consola.warn(`No lambda functions provided in project ${context.projectName} no "lambdaFunctions" parameter in project.json metadata, skipping`);
|
|
28
43
|
return;
|
|
29
44
|
}
|
|
30
45
|
if (!options.lambdaStacks) {
|
|
31
46
|
logger_1.consola.error('No lambda spacelift stacks provided, add "lambdaStacks" to your project.json metadata');
|
|
32
47
|
return;
|
|
33
48
|
}
|
|
34
|
-
if (!options.
|
|
35
|
-
logger_1.consola.error('
|
|
49
|
+
if (!options.lambdaHealthCheckPayload) {
|
|
50
|
+
logger_1.consola.error('A healthCheck payload should be defined to run smoke test before releasing the lambda', 'Add "lambdaHealthCheckPayload" to your project.json metadata');
|
|
36
51
|
return;
|
|
37
52
|
}
|
|
53
|
+
else {
|
|
54
|
+
const lambdaPayload = options.lambdaHealthCheckPayload;
|
|
55
|
+
try {
|
|
56
|
+
JSON.parse(lambdaPayload);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
logger_1.consola.error(`lambdaHealthCheckPayload should be a JSON string, got ${lambdaPayload}`);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
38
63
|
if (isDryRun) {
|
|
39
64
|
logger_1.consola.box(`Would have published lambda artefact to S3 ${zipFileNameS3} but --dry-run is enabled`);
|
|
40
65
|
return;
|
|
@@ -48,7 +73,7 @@ async function publishLambda(options, context, version, projectRoot, projectDist
|
|
|
48
73
|
await (0, s3_1.pushToS3)(zipPath, zipFileNameS3);
|
|
49
74
|
logger_1.consola.success(`Lambda artefact successfully pushed to S3 at ${zipFileNameS3}`);
|
|
50
75
|
logger_1.consola.box(`Creating new Lambda version and running smoke tests`);
|
|
51
|
-
await (0, publish_1.createLambdaVersion)(options.lambdaStacks, options.lambdaFunctions, version);
|
|
76
|
+
await (0, publish_1.createLambdaVersion)(options.lambdaStacks, options.lambdaFunctions, version, options.lambdaHealthCheckPayload);
|
|
52
77
|
const packageJsonPath = (0, path_1.join)(projectDist, 'package.json');
|
|
53
78
|
for (const registry of options.lambdaFunctions) {
|
|
54
79
|
logger_1.consola.info(`Pushing empty image to ECR ${process.env.AWS_ECR_REGISTRY}/${registry}:${version}`);
|
|
@@ -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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"}
|
|
@@ -52,6 +52,10 @@
|
|
|
52
52
|
"lambdaFunctions": {
|
|
53
53
|
"type": "array",
|
|
54
54
|
"description": "The list of lambda functions inside the workload"
|
|
55
|
+
},
|
|
56
|
+
"lambdaHealthCheckPayload": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"description": "Health check payload for the lambda functions. Must be in JSON string format"
|
|
55
59
|
}
|
|
56
60
|
},
|
|
57
61
|
"required": []
|
|
@@ -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,18 @@ async function createNodesInternal(configFilePath, options, context) {
|
|
|
49
49
|
? projectConfiguration.metadata &&
|
|
50
50
|
projectConfiguration.metadata['lambdaFunctions']
|
|
51
51
|
: undefined;
|
|
52
|
+
const lambdaHealthCheckPayload = isLambdaProject
|
|
53
|
+
? projectConfiguration.metadata &&
|
|
54
|
+
projectConfiguration.metadata['lambdaHealthCheckPayload']
|
|
55
|
+
: undefined;
|
|
56
|
+
const isRootProject = projectRoot === '.';
|
|
52
57
|
let release = null;
|
|
53
58
|
if (isHelmProject || isDockerProject || isLambdaProject) {
|
|
54
59
|
const publisherConfig = (0, devkit_1.readJsonFile)((0, path_1.join)(__dirname, '/executors/publisher/schema.json'));
|
|
55
60
|
targets['nx-release-publish'] = {
|
|
56
61
|
// infer the custom publisher target to handle publishing docker & helm artefacts
|
|
57
62
|
executor: '@payfit/nx-core:publisher',
|
|
63
|
+
cache: false,
|
|
58
64
|
options: {
|
|
59
65
|
ecrRegistry,
|
|
60
66
|
chartRegistry,
|
|
@@ -64,13 +70,15 @@ async function createNodesInternal(configFilePath, options, context) {
|
|
|
64
70
|
lambdaBucket,
|
|
65
71
|
lambdaStacks,
|
|
66
72
|
lambdaFunctions,
|
|
73
|
+
lambdaHealthCheckPayload,
|
|
67
74
|
},
|
|
68
75
|
metadata: {
|
|
69
76
|
technologies: ['helm', 'docker', 'lambda'],
|
|
70
77
|
description: publisherConfig.description,
|
|
71
78
|
},
|
|
72
79
|
};
|
|
73
|
-
if (!projectConfiguration?.release?.version
|
|
80
|
+
if (!projectConfiguration?.release?.version
|
|
81
|
+
?.versionActions) {
|
|
74
82
|
release = {
|
|
75
83
|
// infer the version actions to handle the custom versioning
|
|
76
84
|
version: {
|
|
@@ -79,6 +87,24 @@ async function createNodesInternal(configFilePath, options, context) {
|
|
|
79
87
|
};
|
|
80
88
|
}
|
|
81
89
|
}
|
|
90
|
+
if (isRootProject) {
|
|
91
|
+
const previewDeployConfig = (0, devkit_1.readJsonFile)((0, path_1.join)(__dirname, '/executors/preview-deploy/schema.json'));
|
|
92
|
+
targets['preview-deploy'] = {
|
|
93
|
+
executor: '@payfit/nx-core:preview-deploy',
|
|
94
|
+
cache: false,
|
|
95
|
+
metadata: {
|
|
96
|
+
description: previewDeployConfig.description,
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
const releaseConfig = (0, devkit_1.readJsonFile)((0, path_1.join)(__dirname, '/executors/release/schema.json'));
|
|
100
|
+
targets['release'] = {
|
|
101
|
+
executor: '@payfit/nx-core:release',
|
|
102
|
+
cache: false,
|
|
103
|
+
metadata: {
|
|
104
|
+
description: releaseConfig.description,
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
}
|
|
82
108
|
return {
|
|
83
109
|
projects: {
|
|
84
110
|
[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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"}
|
|
@@ -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,47 @@
|
|
|
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>;
|
|
3
|
-
|
|
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
|
+
* @param lambdaHealthCheckPayload
|
|
22
|
+
*/
|
|
23
|
+
export declare function runSmokeTests(stackId: string, lambdaFunctions: string[], lambdaHealthCheckPayload: string): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Creates or updates a Lambda function alias to point to latest version.
|
|
26
|
+
*
|
|
27
|
+
* @param accountId - AWS account ID
|
|
28
|
+
* @param lambdaARN - Lambda function ARN
|
|
29
|
+
* @param alias - Alias name to create/update
|
|
30
|
+
* @param envVars - AWS credentials environment variables
|
|
31
|
+
*/
|
|
4
32
|
export declare function createOrUpdateLambdaAlias(accountId: string, lambdaARN: string, alias: string, envVars: Record<string, string>): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Sanitizes alias names for AWS Lambda compatibility (replaces dots with dashes).
|
|
35
|
+
*
|
|
36
|
+
* @param alias - Raw alias name
|
|
37
|
+
* @returns Sanitized alias name
|
|
38
|
+
*/
|
|
5
39
|
export declare function sanitizeAliasName(alias: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* Creates or updates aliases for multiple Lambda functions in parallel.
|
|
42
|
+
*
|
|
43
|
+
* @param stackId - Spacelift stack ID to determine environment
|
|
44
|
+
* @param lambdaFunctions - Array of Lambda function names
|
|
45
|
+
* @param alias - Alias name to create/update
|
|
46
|
+
*/
|
|
6
47
|
export declare function createOrMoveAlias(stackId: string, lambdaFunctions: string[], alias: string): Promise<void>;
|
|
@@ -16,11 +16,24 @@ 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
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: true, nodeOptions: { env: envVars } });
|
|
@@ -31,7 +44,14 @@ 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
|
}
|
|
34
|
-
|
|
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
|
+
* @param lambdaHealthCheckPayload
|
|
53
|
+
*/
|
|
54
|
+
async function runSmokeTests(stackId, lambdaFunctions, lambdaHealthCheckPayload) {
|
|
35
55
|
const [environment, accountId] = retrieveAccoundId(stackId);
|
|
36
56
|
const credentials = await assumeEnvironmentSpecificRole(environment);
|
|
37
57
|
const envVars = getAssumedRoleEnvVars(credentials);
|
|
@@ -41,8 +61,7 @@ async function runSmokeTests(stackId, lambdaFunctions) {
|
|
|
41
61
|
const lambdaFullARN = `${lambdaARN}:${latestVersion}`;
|
|
42
62
|
try {
|
|
43
63
|
logger_1.consola.log(`Running smoke tests for ${functionName} in env ${environment}`);
|
|
44
|
-
const
|
|
45
|
-
const invokeResult = await (0, exec_1.exec)(`aws lambda invoke --function-name ${lambdaFullARN} --payload ${btoa(emptyPayload)} /tmp/lambda-response.json`, { throwOnError: true, nodeOptions: { env: envVars } });
|
|
64
|
+
const invokeResult = await (0, exec_1.exec)(`aws lambda invoke --function-name ${lambdaFullARN} --payload ${btoa(lambdaHealthCheckPayload)} /tmp/lambda-response.json`, { throwOnError: true, nodeOptions: { env: envVars } });
|
|
46
65
|
if (JSON.parse(invokeResult.stdout)['FunctionError']) {
|
|
47
66
|
const errorFile = (0, devkit_1.readJsonFile)('/tmp/lambda-response.json');
|
|
48
67
|
const errorMessage = errorFile.errorMessage;
|
|
@@ -61,6 +80,14 @@ async function runSmokeTests(stackId, lambdaFunctions) {
|
|
|
61
80
|
await Promise.all(lambdaFunctions.map(smokeTestFunction));
|
|
62
81
|
logger_1.consola.success(`All smoke tests passed in ${environment} environment`);
|
|
63
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Creates or updates a Lambda function alias to point to latest version.
|
|
85
|
+
*
|
|
86
|
+
* @param accountId - AWS account ID
|
|
87
|
+
* @param lambdaARN - Lambda function ARN
|
|
88
|
+
* @param alias - Alias name to create/update
|
|
89
|
+
* @param envVars - AWS credentials environment variables
|
|
90
|
+
*/
|
|
64
91
|
async function createOrUpdateLambdaAlias(accountId, lambdaARN, alias, envVars) {
|
|
65
92
|
const latestVersion = await getLatestVersion(lambdaARN, envVars);
|
|
66
93
|
// Check if alias already exists
|
|
@@ -80,6 +107,12 @@ async function createOrUpdateLambdaAlias(accountId, lambdaARN, alias, envVars) {
|
|
|
80
107
|
}
|
|
81
108
|
logger_1.consola.success(`Successfully ${aliasExists ? 'updated' : 'created'} alias ${alias} for function ${lambdaARN} with version ${latestVersion}`);
|
|
82
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Assumes IAM role for environment-specific Lambda operations.
|
|
112
|
+
*
|
|
113
|
+
* @param environment - Target environment name
|
|
114
|
+
* @returns AWS temporary credentials
|
|
115
|
+
*/
|
|
83
116
|
async function assumeEnvironmentSpecificRole(environment) {
|
|
84
117
|
const roleName = `invoke-lambda-nx-core`;
|
|
85
118
|
const accountId = ACCOUNT_IDS[environment];
|
|
@@ -143,6 +176,12 @@ async function assumeEnvironmentSpecificRole(environment) {
|
|
|
143
176
|
throw new Error(`Role assumption failed for ${environment}: ${error.message}`);
|
|
144
177
|
}
|
|
145
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* Converts assumed role credentials to environment variables.
|
|
181
|
+
*
|
|
182
|
+
* @param credentials - AWS temporary credentials
|
|
183
|
+
* @returns Environment variables with AWS credentials
|
|
184
|
+
*/
|
|
146
185
|
function getAssumedRoleEnvVars(credentials) {
|
|
147
186
|
// Only override the specific AWS credential environment variables
|
|
148
187
|
const baseEnv = { ...process.env };
|
|
@@ -151,11 +190,24 @@ function getAssumedRoleEnvVars(credentials) {
|
|
|
151
190
|
baseEnv.AWS_SESSION_TOKEN = credentials.sessionToken;
|
|
152
191
|
return baseEnv;
|
|
153
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* Sanitizes alias names for AWS Lambda compatibility (replaces dots with dashes).
|
|
195
|
+
*
|
|
196
|
+
* @param alias - Raw alias name
|
|
197
|
+
* @returns Sanitized alias name
|
|
198
|
+
*/
|
|
154
199
|
function sanitizeAliasName(alias) {
|
|
155
200
|
// AWS Lambda alias names must satisfy: (?!^[0-9]+$)([a-zA-Z0-9-_]+)
|
|
156
201
|
// Replace dots with dashes and ensure it's not all numbers
|
|
157
202
|
return alias.replace(/\./g, '-');
|
|
158
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Creates or updates aliases for multiple Lambda functions in parallel.
|
|
206
|
+
*
|
|
207
|
+
* @param stackId - Spacelift stack ID to determine environment
|
|
208
|
+
* @param lambdaFunctions - Array of Lambda function names
|
|
209
|
+
* @param alias - Alias name to create/update
|
|
210
|
+
*/
|
|
159
211
|
async function createOrMoveAlias(stackId, lambdaFunctions, alias) {
|
|
160
212
|
const [environment, accountId] = retrieveAccoundId(stackId);
|
|
161
213
|
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,6 +3,13 @@ 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');
|
|
@@ -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,wCAeC;AA1BD,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,IAAI;KACnB,CACF,CAAA;IACD,iBAAO,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;AACjC,CAAC"}
|
|
@@ -1 +1,14 @@
|
|
|
1
|
-
|
|
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
|
+
* @param lambdaHealthCheckPayload
|
|
13
|
+
*/
|
|
14
|
+
export declare function createLambdaVersion(stacksName: string[], lambdaFunctions: string[], version: string, lambdaHealthCheckPayload: string): Promise<void>;
|
|
@@ -7,7 +7,20 @@ 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
|
-
|
|
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
|
+
* @param lambdaHealthCheckPayload
|
|
22
|
+
*/
|
|
23
|
+
async function createLambdaVersion(stacksName, lambdaFunctions, version, lambdaHealthCheckPayload) {
|
|
11
24
|
const graphqlService = new graphql_service_1.GraphQlService();
|
|
12
25
|
const spaceliftService = new spacelift_service_1.SpaceliftService(graphqlService);
|
|
13
26
|
const processEnvironment = async (stackId) => {
|
|
@@ -17,7 +30,7 @@ async function createLambdaVersion(stacksName, lambdaFunctions, version) {
|
|
|
17
30
|
logger_1.consola.log(`Updating Spacelift stack ${stackId} TF_VAR_lambda_version with version ${currentCommitSha}`);
|
|
18
31
|
await (0, spacelift_1.updateSpaceliftEnvironmentVariable)(spaceliftService, stackId, 'TF_VAR_lambda_version', version);
|
|
19
32
|
await (0, spacelift_1.triggerSpaceliftStack)(spaceliftService, stackId);
|
|
20
|
-
await (0, aws_lambda_1.runSmokeTests)(stackId, lambdaFunctions);
|
|
33
|
+
await (0, aws_lambda_1.runSmokeTests)(stackId, lambdaFunctions, lambdaHealthCheckPayload);
|
|
21
34
|
};
|
|
22
35
|
const publishFunction = async (stackId) => {
|
|
23
36
|
await (0, aws_lambda_1.createOrMoveAlias)(stackId, lambdaFunctions, version);
|
|
@@ -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":";;AAuBA,kDAyCC;AAhED,6CAAyD;AACzD,6CAA0C;AAC1C,sEAAiE;AACjE,0EAAqE;AACrE,6CAA+D;AAC/D,2CAGoB;AAEpB;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,mBAAmB,CACvC,UAAoB,EACpB,eAAyB,EACzB,OAAe,EACf,wBAAgC;IAEhC,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,EAAE,wBAAwB,CAAC,CAAA;IACzE,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.
|
|
3
|
+
"version": "4.46.1",
|
|
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",
|