@cloudsnorkel/cdk-github-runners 0.14.10 → 0.14.11

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 (38) hide show
  1. package/.jsii +35 -35
  2. package/assets/delete-failed-runner.lambda/index.js +18 -12
  3. package/assets/idle-runner-repear.lambda/index.js +32 -20
  4. package/assets/setup.lambda/index.html +7 -7
  5. package/assets/token-retriever.lambda/index.js +18 -12
  6. package/assets/webhook-handler.lambda/index.js +19 -13
  7. package/assets/webhook-redelivery.lambda/index.js +13401 -0
  8. package/lib/access.js +1 -1
  9. package/lib/idle-runner-repear.lambda.js +19 -11
  10. package/lib/image-builders/api.js +1 -1
  11. package/lib/image-builders/aws-image-builder/builder.js +1 -1
  12. package/lib/image-builders/aws-image-builder/deprecated/ami.js +1 -1
  13. package/lib/image-builders/aws-image-builder/deprecated/container.js +1 -1
  14. package/lib/image-builders/aws-image-builder/deprecated/linux-components.js +1 -1
  15. package/lib/image-builders/aws-image-builder/deprecated/windows-components.js +1 -1
  16. package/lib/image-builders/codebuild-deprecated.js +1 -1
  17. package/lib/image-builders/components.js +1 -1
  18. package/lib/image-builders/static.js +1 -1
  19. package/lib/lambda-github.d.ts +4 -0
  20. package/lib/lambda-github.js +57 -16
  21. package/lib/lambda-helpers.js +1 -1
  22. package/lib/providers/codebuild.js +2 -2
  23. package/lib/providers/common.js +3 -3
  24. package/lib/providers/ec2.js +2 -2
  25. package/lib/providers/ecs.js +1 -1
  26. package/lib/providers/fargate.js +2 -2
  27. package/lib/providers/lambda.js +2 -2
  28. package/lib/runner.d.ts +1 -0
  29. package/lib/runner.js +19 -2
  30. package/lib/secrets.js +1 -1
  31. package/lib/webhook-handler.lambda.js +2 -2
  32. package/lib/webhook-redelivery-function.d.ts +13 -0
  33. package/lib/webhook-redelivery-function.js +23 -0
  34. package/lib/webhook-redelivery.d.ts +26 -0
  35. package/lib/webhook-redelivery.js +43 -0
  36. package/lib/webhook-redelivery.lambda.d.ts +9 -0
  37. package/lib/webhook-redelivery.lambda.js +149 -0
  38. package/package.json +16 -14
@@ -13200,6 +13200,7 @@ __export(token_retriever_lambda_exports, {
13200
13200
  module.exports = __toCommonJS(token_retriever_lambda_exports);
13201
13201
 
13202
13202
  // src/lambda-github.ts
13203
+ var import_crypto = require("crypto");
13203
13204
  var import_auth_app = __toESM(require_dist_node12());
13204
13205
  var import_rest = __toESM(require_dist_node19());
13205
13206
 
@@ -13227,26 +13228,33 @@ function baseUrlFromDomain(domain) {
13227
13228
  }
13228
13229
  return `https://${domain}/api/v3`;
13229
13230
  }
13230
- var octokitCache = {};
13231
+ var octokitCache = /* @__PURE__ */ new Map();
13231
13232
  async function getOctokit(installationId) {
13232
13233
  if (!process.env.GITHUB_SECRET_ARN || !process.env.GITHUB_PRIVATE_KEY_SECRET_ARN) {
13233
13234
  throw new Error("Missing environment variables");
13234
13235
  }
13235
13236
  const githubSecrets = await getSecretJsonValue(process.env.GITHUB_SECRET_ARN);
13236
- if (octokitCache.octokit && octokitCache.installationId == installationId && octokitCache.secrets && octokitCache.secrets.domain == githubSecrets.domain && octokitCache.secrets.appId == githubSecrets.appId && octokitCache.secrets.personalAuthToken == githubSecrets.personalAuthToken) {
13237
+ const cacheKey = (0, import_crypto.createHash)("sha256").update(`${installationId || "no-install"}-${githubSecrets.domain}-${githubSecrets.appId}-${githubSecrets.personalAuthToken}`).digest("hex");
13238
+ const cached = octokitCache.get(cacheKey);
13239
+ if (cached) {
13237
13240
  try {
13238
- await octokitCache.octokit.rest.meta.getOctocat();
13239
- console.log("Using cached octokit");
13241
+ await cached.rest.meta.getOctocat();
13242
+ console.log({
13243
+ notice: "Using cached octokit"
13244
+ });
13240
13245
  return {
13241
- octokit: octokitCache.octokit,
13242
- githubSecrets: octokitCache.secrets
13246
+ octokit: cached,
13247
+ githubSecrets
13243
13248
  };
13244
13249
  } catch (e) {
13245
- console.log("Octokit cache is invalid", e);
13246
- octokitCache.octokit = void 0;
13250
+ console.log({
13251
+ notice: "Octokit cache is invalid",
13252
+ error: e
13253
+ });
13254
+ octokitCache.delete(cacheKey);
13247
13255
  }
13248
13256
  }
13249
- let baseUrl = baseUrlFromDomain(githubSecrets.domain);
13257
+ const baseUrl = baseUrlFromDomain(githubSecrets.domain);
13250
13258
  let token;
13251
13259
  if (githubSecrets.personalAuthToken) {
13252
13260
  token = githubSecrets.personalAuthToken;
@@ -13269,9 +13277,7 @@ async function getOctokit(installationId) {
13269
13277
  baseUrl,
13270
13278
  auth: token
13271
13279
  });
13272
- octokitCache.octokit = octokit;
13273
- octokitCache.installationId = installationId;
13274
- octokitCache.secrets = githubSecrets;
13280
+ octokitCache.set(cacheKey, octokit);
13275
13281
  return {
13276
13282
  octokit,
13277
13283
  githubSecrets
@@ -13204,6 +13204,7 @@ var crypto = __toESM(require("crypto"));
13204
13204
  var import_client_sfn = require("@aws-sdk/client-sfn");
13205
13205
 
13206
13206
  // src/lambda-github.ts
13207
+ var import_crypto = require("crypto");
13207
13208
  var import_auth_app = __toESM(require_dist_node12());
13208
13209
  var import_rest = __toESM(require_dist_node19());
13209
13210
 
@@ -13231,26 +13232,33 @@ function baseUrlFromDomain(domain) {
13231
13232
  }
13232
13233
  return `https://${domain}/api/v3`;
13233
13234
  }
13234
- var octokitCache = {};
13235
+ var octokitCache = /* @__PURE__ */ new Map();
13235
13236
  async function getOctokit(installationId) {
13236
13237
  if (!process.env.GITHUB_SECRET_ARN || !process.env.GITHUB_PRIVATE_KEY_SECRET_ARN) {
13237
13238
  throw new Error("Missing environment variables");
13238
13239
  }
13239
13240
  const githubSecrets = await getSecretJsonValue(process.env.GITHUB_SECRET_ARN);
13240
- if (octokitCache.octokit && octokitCache.installationId == installationId && octokitCache.secrets && octokitCache.secrets.domain == githubSecrets.domain && octokitCache.secrets.appId == githubSecrets.appId && octokitCache.secrets.personalAuthToken == githubSecrets.personalAuthToken) {
13241
+ const cacheKey = (0, import_crypto.createHash)("sha256").update(`${installationId || "no-install"}-${githubSecrets.domain}-${githubSecrets.appId}-${githubSecrets.personalAuthToken}`).digest("hex");
13242
+ const cached = octokitCache.get(cacheKey);
13243
+ if (cached) {
13241
13244
  try {
13242
- await octokitCache.octokit.rest.meta.getOctocat();
13243
- console.log("Using cached octokit");
13245
+ await cached.rest.meta.getOctocat();
13246
+ console.log({
13247
+ notice: "Using cached octokit"
13248
+ });
13244
13249
  return {
13245
- octokit: octokitCache.octokit,
13246
- githubSecrets: octokitCache.secrets
13250
+ octokit: cached,
13251
+ githubSecrets
13247
13252
  };
13248
13253
  } catch (e) {
13249
- console.log("Octokit cache is invalid", e);
13250
- octokitCache.octokit = void 0;
13254
+ console.log({
13255
+ notice: "Octokit cache is invalid",
13256
+ error: e
13257
+ });
13258
+ octokitCache.delete(cacheKey);
13251
13259
  }
13252
13260
  }
13253
- let baseUrl = baseUrlFromDomain(githubSecrets.domain);
13261
+ const baseUrl = baseUrlFromDomain(githubSecrets.domain);
13254
13262
  let token;
13255
13263
  if (githubSecrets.personalAuthToken) {
13256
13264
  token = githubSecrets.personalAuthToken;
@@ -13273,9 +13281,7 @@ async function getOctokit(installationId) {
13273
13281
  baseUrl,
13274
13282
  auth: token
13275
13283
  });
13276
- octokitCache.octokit = octokit;
13277
- octokitCache.installationId = installationId;
13278
- octokitCache.secrets = githubSecrets;
13284
+ octokitCache.set(cacheKey, octokit);
13279
13285
  return {
13280
13286
  octokit,
13281
13287
  githubSecrets
@@ -13373,7 +13379,7 @@ async function handler(event) {
13373
13379
  if (getHeader(event, "x-github-event") !== "workflow_job") {
13374
13380
  console.error(`This webhook only accepts workflow_job, got ${getHeader(event, "x-github-event")}`);
13375
13381
  return {
13376
- statusCode: 400,
13382
+ statusCode: 200,
13377
13383
  body: "Expecting workflow_job"
13378
13384
  };
13379
13385
  }