@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.
Files changed (62) hide show
  1. package/.gitattributes +1 -2
  2. package/.jsii +394 -186
  3. package/API.md +167 -27
  4. package/README.md +10 -20
  5. package/assets/delete-failed-runner.lambda/index.js +5 -3713
  6. package/assets/idle-runner-repear.lambda/index.js +5 -3713
  7. package/assets/image-builders/aws-image-builder/delete-ami.lambda/index.js +3 -22
  8. package/assets/image-builders/aws-image-builder/versioner.lambda/index.js +2 -2
  9. package/assets/{providers → image-builders}/build-image.lambda/index.js +2 -14
  10. package/assets/setup.lambda/index.js +3 -3711
  11. package/assets/status.lambda/index.js +5 -3713
  12. package/assets/token-retriever.lambda/index.js +5 -3713
  13. package/assets/webhook-handler.lambda/index.js +5 -3713
  14. package/lib/access.js +1 -1
  15. package/lib/image-builders/api.d.ts +2 -2
  16. package/lib/image-builders/api.js +6 -6
  17. package/lib/image-builders/aws-image-builder/ami.d.ts +1 -0
  18. package/lib/image-builders/aws-image-builder/ami.js +9 -9
  19. package/lib/image-builders/aws-image-builder/builder.d.ts +1 -2
  20. package/lib/image-builders/aws-image-builder/builder.js +128 -74
  21. package/lib/image-builders/aws-image-builder/common.d.ts +1 -1
  22. package/lib/image-builders/aws-image-builder/common.js +2 -2
  23. package/lib/image-builders/aws-image-builder/container.d.ts +2 -1
  24. package/lib/image-builders/aws-image-builder/container.js +14 -14
  25. package/lib/image-builders/aws-image-builder/delete-ami.lambda.d.ts +1 -8
  26. package/lib/image-builders/aws-image-builder/delete-ami.lambda.js +5 -27
  27. package/lib/image-builders/aws-image-builder/deprecated/ami.js +1 -1
  28. package/lib/image-builders/aws-image-builder/deprecated/container.js +4 -3
  29. package/lib/image-builders/aws-image-builder/deprecated/linux-components.js +1 -1
  30. package/lib/image-builders/aws-image-builder/deprecated/windows-components.js +1 -1
  31. package/lib/{providers → image-builders}/build-image-function.d.ts +1 -1
  32. package/lib/image-builders/build-image-function.js +23 -0
  33. package/lib/image-builders/build-image.lambda.js +80 -0
  34. package/lib/image-builders/codebuild-deprecated.js +4 -3
  35. package/lib/image-builders/codebuild.js +4 -7
  36. package/lib/image-builders/common.d.ts +18 -9
  37. package/lib/image-builders/common.js +1 -11
  38. package/lib/image-builders/components.d.ts +2 -2
  39. package/lib/image-builders/components.js +2 -2
  40. package/lib/image-builders/static.js +1 -1
  41. package/lib/providers/codebuild.d.ts +9 -3
  42. package/lib/providers/codebuild.js +10 -4
  43. package/lib/providers/common.js +3 -3
  44. package/lib/providers/ec2.d.ts +9 -3
  45. package/lib/providers/ec2.js +10 -4
  46. package/lib/providers/ecs.d.ts +9 -3
  47. package/lib/providers/ecs.js +9 -3
  48. package/lib/providers/fargate.d.ts +9 -3
  49. package/lib/providers/fargate.js +10 -4
  50. package/lib/providers/lambda.d.ts +9 -3
  51. package/lib/providers/lambda.js +10 -4
  52. package/lib/runner.js +3 -3
  53. package/lib/secrets.js +1 -1
  54. package/package.json +22 -26
  55. package/assets/image-builders/aws-image-builder/reaper.lambda/index.js +0 -165
  56. package/lib/image-builders/aws-image-builder/reaper-function.d.ts +0 -13
  57. package/lib/image-builders/aws-image-builder/reaper-function.js +0 -23
  58. package/lib/image-builders/aws-image-builder/reaper.lambda.d.ts +0 -9
  59. package/lib/image-builders/aws-image-builder/reaper.lambda.js +0 -151
  60. package/lib/providers/build-image-function.js +0 -23
  61. package/lib/providers/build-image.lambda.js +0 -92
  62. /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(launchTemplateId, stackName, builderName, deleteAll) {
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("", event.ResourceProperties.StackName, event.ResourceProperties.BuilderName, true);
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
- if (event.RequestType != "Scheduled") {
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/semver/node_modules/lru-cache/index.js
1199
+ // node_modules/lru-cache/index.js
1200
1200
  var require_lru_cache = __commonJS({
1201
- "node_modules/semver/node_modules/lru-cache/index.js"(exports, module2) {
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/providers/build-image.lambda.ts
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/providers/build-image.lambda.ts
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) {