@cloudsnorkel/cdk-github-runners 0.11.6 → 0.12.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/.gitattributes +1 -2
- package/.jsii +394 -186
- package/API.md +167 -27
- package/README.md +10 -20
- package/assets/delete-failed-runner.lambda/index.js +5 -3713
- package/assets/idle-runner-repear.lambda/index.js +5 -3713
- package/assets/image-builders/aws-image-builder/delete-ami.lambda/index.js +3 -22
- package/assets/image-builders/aws-image-builder/versioner.lambda/index.js +2 -2
- package/assets/{providers → image-builders}/build-image.lambda/index.js +2 -14
- package/assets/setup.lambda/index.js +3 -3711
- package/assets/status.lambda/index.js +5 -3713
- package/assets/token-retriever.lambda/index.js +5 -3713
- package/assets/webhook-handler.lambda/index.js +5 -3713
- package/lib/access.js +1 -1
- package/lib/image-builders/api.d.ts +2 -2
- package/lib/image-builders/api.js +6 -6
- package/lib/image-builders/aws-image-builder/ami.d.ts +1 -0
- package/lib/image-builders/aws-image-builder/ami.js +9 -9
- package/lib/image-builders/aws-image-builder/builder.d.ts +1 -2
- package/lib/image-builders/aws-image-builder/builder.js +128 -74
- package/lib/image-builders/aws-image-builder/common.d.ts +1 -1
- package/lib/image-builders/aws-image-builder/common.js +2 -2
- package/lib/image-builders/aws-image-builder/container.d.ts +2 -1
- package/lib/image-builders/aws-image-builder/container.js +14 -14
- package/lib/image-builders/aws-image-builder/delete-ami.lambda.d.ts +1 -8
- package/lib/image-builders/aws-image-builder/delete-ami.lambda.js +5 -27
- package/lib/image-builders/aws-image-builder/deprecated/ami.js +1 -1
- package/lib/image-builders/aws-image-builder/deprecated/container.js +4 -3
- package/lib/image-builders/aws-image-builder/deprecated/linux-components.js +1 -1
- package/lib/image-builders/aws-image-builder/deprecated/windows-components.js +1 -1
- package/lib/{providers → image-builders}/build-image-function.d.ts +1 -1
- package/lib/image-builders/build-image-function.js +23 -0
- package/lib/image-builders/build-image.lambda.js +80 -0
- package/lib/image-builders/codebuild-deprecated.js +4 -3
- package/lib/image-builders/codebuild.js +4 -7
- package/lib/image-builders/common.d.ts +18 -9
- package/lib/image-builders/common.js +1 -11
- package/lib/image-builders/components.d.ts +2 -2
- package/lib/image-builders/components.js +2 -2
- package/lib/image-builders/static.js +1 -1
- package/lib/providers/codebuild.d.ts +9 -3
- package/lib/providers/codebuild.js +10 -4
- package/lib/providers/common.js +3 -3
- package/lib/providers/ec2.d.ts +9 -3
- package/lib/providers/ec2.js +10 -4
- package/lib/providers/ecs.d.ts +9 -3
- package/lib/providers/ecs.js +9 -3
- package/lib/providers/fargate.d.ts +9 -3
- package/lib/providers/fargate.js +10 -4
- package/lib/providers/lambda.d.ts +9 -3
- package/lib/providers/lambda.js +10 -4
- package/lib/runner.js +3 -3
- package/lib/secrets.js +1 -1
- package/package.json +22 -26
- package/assets/image-builders/aws-image-builder/reaper.lambda/index.js +0 -165
- package/lib/image-builders/aws-image-builder/reaper-function.d.ts +0 -13
- package/lib/image-builders/aws-image-builder/reaper-function.js +0 -23
- package/lib/image-builders/aws-image-builder/reaper.lambda.d.ts +0 -9
- package/lib/image-builders/aws-image-builder/reaper.lambda.js +0 -151
- package/lib/providers/build-image-function.js +0 -23
- package/lib/providers/build-image.lambda.js +0 -92
- /package/lib/{providers → image-builders}/build-image.lambda.d.ts +0 -0
|
@@ -64,7 +64,7 @@ async function customResourceRespond(event, responseStatus, reason, physicalReso
|
|
|
64
64
|
|
|
65
65
|
// src/image-builders/aws-image-builder/delete-ami.lambda.ts
|
|
66
66
|
var ec2 = new import_client_ec2.EC2Client();
|
|
67
|
-
async function deleteAmis(
|
|
67
|
+
async function deleteAmis(stackName, builderName) {
|
|
68
68
|
const images = await ec2.send(new import_client_ec2.DescribeImagesCommand({
|
|
69
69
|
Owners: ["self"],
|
|
70
70
|
Filters: [
|
|
@@ -81,20 +81,6 @@ async function deleteAmis(launchTemplateId, stackName, builderName, deleteAll) {
|
|
|
81
81
|
let imagesToDelete = images.Images ?? [];
|
|
82
82
|
console.log(`Found ${imagesToDelete.length} AMIs`);
|
|
83
83
|
console.log(JSON.stringify(imagesToDelete.map((i) => i.ImageId)));
|
|
84
|
-
if (!deleteAll) {
|
|
85
|
-
const launchTemplates = await ec2.send(new import_client_ec2.DescribeLaunchTemplateVersionsCommand({
|
|
86
|
-
LaunchTemplateId: launchTemplateId,
|
|
87
|
-
Versions: ["$Default"]
|
|
88
|
-
}));
|
|
89
|
-
if (!launchTemplates.LaunchTemplateVersions) {
|
|
90
|
-
console.error(`Unable to describe launch template ${launchTemplateId}`);
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
const launchTemplate = launchTemplates.LaunchTemplateVersions[0];
|
|
94
|
-
imagesToDelete = imagesToDelete.filter((i) => i.ImageId != launchTemplate.LaunchTemplateData?.ImageId);
|
|
95
|
-
imagesToDelete = imagesToDelete.filter((i) => i.CreationDate && Date.parse(i.CreationDate) < Date.now() - 1e3 * 60 * 60 * 48);
|
|
96
|
-
console.log(`${imagesToDelete.length} AMIs left after filtering by date and excluding AMI used by launch template`);
|
|
97
|
-
}
|
|
98
84
|
for (const image of imagesToDelete) {
|
|
99
85
|
if (!image.ImageId) {
|
|
100
86
|
console.warn(`No image id? ${JSON.stringify(image)}`);
|
|
@@ -118,23 +104,18 @@ async function handler(event, context) {
|
|
|
118
104
|
try {
|
|
119
105
|
console.log(JSON.stringify({ ...event, ResponseURL: "..." }));
|
|
120
106
|
switch (event.RequestType) {
|
|
121
|
-
case "Scheduled":
|
|
122
|
-
await deleteAmis(event.LaunchTemplateId, event.StackName, event.BuilderName, false);
|
|
123
|
-
return;
|
|
124
107
|
case "Create":
|
|
125
108
|
case "Update":
|
|
126
109
|
await customResourceRespond(event, "SUCCESS", "OK", "DeleteAmis", {});
|
|
127
110
|
break;
|
|
128
111
|
case "Delete":
|
|
129
|
-
await deleteAmis(
|
|
112
|
+
await deleteAmis(event.ResourceProperties.StackName, event.ResourceProperties.BuilderName);
|
|
130
113
|
await customResourceRespond(event, "SUCCESS", "OK", event.PhysicalResourceId, {});
|
|
131
114
|
break;
|
|
132
115
|
}
|
|
133
116
|
} catch (e) {
|
|
134
117
|
console.error(e);
|
|
135
|
-
|
|
136
|
-
await customResourceRespond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {});
|
|
137
|
-
}
|
|
118
|
+
await customResourceRespond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {});
|
|
138
119
|
}
|
|
139
120
|
}
|
|
140
121
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1196,9 +1196,9 @@ var require_yallist = __commonJS({
|
|
|
1196
1196
|
}
|
|
1197
1197
|
});
|
|
1198
1198
|
|
|
1199
|
-
// node_modules/
|
|
1199
|
+
// node_modules/lru-cache/index.js
|
|
1200
1200
|
var require_lru_cache = __commonJS({
|
|
1201
|
-
"node_modules/
|
|
1201
|
+
"node_modules/lru-cache/index.js"(exports, module2) {
|
|
1202
1202
|
"use strict";
|
|
1203
1203
|
var Yallist = require_yallist();
|
|
1204
1204
|
var MAX = Symbol("max");
|
|
@@ -17,14 +17,13 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
|
|
20
|
-
// src/
|
|
20
|
+
// src/image-builders/build-image.lambda.ts
|
|
21
21
|
var build_image_lambda_exports = {};
|
|
22
22
|
__export(build_image_lambda_exports, {
|
|
23
23
|
handler: () => handler
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(build_image_lambda_exports);
|
|
26
26
|
var import_client_codebuild = require("@aws-sdk/client-codebuild");
|
|
27
|
-
var import_client_ecr = require("@aws-sdk/client-ecr");
|
|
28
27
|
var import_client_imagebuilder = require("@aws-sdk/client-imagebuilder");
|
|
29
28
|
|
|
30
29
|
// src/lambda-helpers.ts
|
|
@@ -64,15 +63,13 @@ async function customResourceRespond(event, responseStatus, reason, physicalReso
|
|
|
64
63
|
});
|
|
65
64
|
}
|
|
66
65
|
|
|
67
|
-
// src/
|
|
66
|
+
// src/image-builders/build-image.lambda.ts
|
|
68
67
|
var codebuild = new import_client_codebuild.CodeBuildClient();
|
|
69
|
-
var ecr = new import_client_ecr.ECRClient();
|
|
70
68
|
var ib = new import_client_imagebuilder.ImagebuilderClient();
|
|
71
69
|
async function handler(event, context) {
|
|
72
70
|
try {
|
|
73
71
|
console.log(JSON.stringify({ ...event, ResponseURL: "..." }));
|
|
74
72
|
const deleteOnly = event.ResourceProperties.DeleteOnly;
|
|
75
|
-
const repoName = event.ResourceProperties.RepoName;
|
|
76
73
|
const projectName = event.ResourceProperties.ProjectName;
|
|
77
74
|
const ibName = event.ResourceProperties.ImageBuilderName;
|
|
78
75
|
switch (event.RequestType) {
|
|
@@ -110,15 +107,6 @@ async function handler(event, context) {
|
|
|
110
107
|
}));
|
|
111
108
|
break;
|
|
112
109
|
case "Delete":
|
|
113
|
-
const ecrImages = await ecr.send(new import_client_ecr.ListImagesCommand({ repositoryName: repoName, maxResults: 100 }));
|
|
114
|
-
if (ecrImages.imageIds && ecrImages.imageIds.length > 0) {
|
|
115
|
-
await ecr.send(new import_client_ecr.BatchDeleteImageCommand({
|
|
116
|
-
imageIds: ecrImages.imageIds.map((i) => {
|
|
117
|
-
return { imageDigest: i.imageDigest };
|
|
118
|
-
}),
|
|
119
|
-
repositoryName: repoName
|
|
120
|
-
}));
|
|
121
|
-
}
|
|
122
110
|
if (ibName) {
|
|
123
111
|
const ibImages = await ib.send(new import_client_imagebuilder.ListImagesCommand({ filters: [{ name: "name", values: [ibName] }] }));
|
|
124
112
|
if (ibImages.imageVersionList) {
|