@cloudsnorkel/cdk-github-runners 0.9.4 → 0.9.6

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 (99) hide show
  1. package/.gitattributes +5 -3
  2. package/.jsii +332 -284
  3. package/API.md +55 -19
  4. package/README.md +135 -65
  5. package/assets/{providers/image-builders → image-builders}/aws-image-builder/delete-ami.lambda/index.js +2 -2
  6. package/assets/{providers/image-builders → image-builders}/aws-image-builder/filter-failed-builds.lambda/index.js +1 -1
  7. package/assets/image-builders/aws-image-builder/reaper.lambda/index.js +163 -0
  8. package/assets/{providers/image-builders → image-builders}/aws-image-builder/versioner.lambda/index.js +2 -2
  9. package/cdk.json +10 -0
  10. package/lib/access.js +1 -1
  11. package/lib/image-builders/api.js +47 -0
  12. package/lib/{providers/image-builders → image-builders}/aws-image-builder/ami.d.ts +2 -3
  13. package/lib/image-builders/aws-image-builder/ami.js +93 -0
  14. package/lib/{providers/image-builders → image-builders}/aws-image-builder/builder.d.ts +10 -3
  15. package/lib/image-builders/aws-image-builder/builder.js +568 -0
  16. package/lib/image-builders/aws-image-builder/common.js +46 -0
  17. package/lib/{providers/image-builders → image-builders}/aws-image-builder/container.d.ts +1 -1
  18. package/lib/image-builders/aws-image-builder/container.js +63 -0
  19. package/lib/{providers/image-builders → image-builders}/aws-image-builder/delete-ami-function.d.ts +1 -1
  20. package/lib/image-builders/aws-image-builder/delete-ami-function.js +23 -0
  21. package/lib/image-builders/aws-image-builder/delete-ami.lambda.js +87 -0
  22. package/lib/{providers/image-builders → image-builders}/aws-image-builder/deprecated/ami.d.ts +4 -4
  23. package/lib/image-builders/aws-image-builder/deprecated/ami.js +240 -0
  24. package/lib/{providers/image-builders → image-builders}/aws-image-builder/deprecated/common.d.ts +1 -1
  25. package/lib/image-builders/aws-image-builder/deprecated/common.js +144 -0
  26. package/lib/{providers/image-builders → image-builders}/aws-image-builder/deprecated/container.d.ts +3 -3
  27. package/lib/image-builders/aws-image-builder/deprecated/container.js +222 -0
  28. package/lib/{providers/image-builders → image-builders}/aws-image-builder/deprecated/index.js +1 -1
  29. package/lib/{providers/image-builders → image-builders}/aws-image-builder/deprecated/linux-components.d.ts +1 -1
  30. package/lib/image-builders/aws-image-builder/deprecated/linux-components.js +172 -0
  31. package/lib/{providers/image-builders → image-builders}/aws-image-builder/deprecated/windows-components.d.ts +1 -1
  32. package/lib/image-builders/aws-image-builder/deprecated/windows-components.js +126 -0
  33. package/lib/{providers/image-builders → image-builders}/aws-image-builder/filter-failed-builds-function.d.ts +1 -1
  34. package/lib/image-builders/aws-image-builder/filter-failed-builds-function.js +23 -0
  35. package/lib/image-builders/aws-image-builder/filter-failed-builds.lambda.js +18 -0
  36. package/lib/{providers/image-builders → image-builders}/aws-image-builder/index.js +1 -1
  37. package/lib/image-builders/aws-image-builder/reaper-function.d.ts +13 -0
  38. package/lib/image-builders/aws-image-builder/reaper-function.js +23 -0
  39. package/lib/image-builders/aws-image-builder/reaper.lambda.d.ts +1 -0
  40. package/lib/image-builders/aws-image-builder/reaper.lambda.js +149 -0
  41. package/lib/{providers/image-builders → image-builders}/aws-image-builder/versioner-function.d.ts +1 -1
  42. package/lib/image-builders/aws-image-builder/versioner-function.js +23 -0
  43. package/lib/image-builders/aws-image-builder/versioner.lambda.js +96 -0
  44. package/lib/{providers/image-builders → image-builders}/codebuild-deprecated.d.ts +5 -5
  45. package/lib/image-builders/codebuild-deprecated.js +373 -0
  46. package/lib/{providers/image-builders → image-builders}/codebuild.d.ts +2 -2
  47. package/lib/image-builders/codebuild.js +289 -0
  48. package/lib/{providers/image-builders → image-builders}/common.d.ts +6 -4
  49. package/lib/{providers/image-builders → image-builders}/common.js +1 -1
  50. package/lib/{providers/image-builders → image-builders}/components.d.ts +8 -2
  51. package/lib/image-builders/components.js +568 -0
  52. package/lib/{providers/image-builders → image-builders}/index.js +1 -1
  53. package/lib/{providers/image-builders → image-builders}/static.d.ts +1 -1
  54. package/lib/image-builders/static.js +58 -0
  55. package/lib/providers/codebuild.d.ts +1 -1
  56. package/lib/providers/codebuild.js +4 -4
  57. package/lib/providers/common.js +3 -3
  58. package/lib/providers/ec2.d.ts +2 -2
  59. package/lib/providers/ec2.js +4 -4
  60. package/lib/providers/ecs.d.ts +1 -1
  61. package/lib/providers/ecs.js +3 -3
  62. package/lib/providers/fargate.d.ts +1 -1
  63. package/lib/providers/fargate.js +4 -4
  64. package/lib/providers/index.d.ts +1 -1
  65. package/lib/providers/index.js +2 -2
  66. package/lib/providers/lambda.d.ts +1 -1
  67. package/lib/providers/lambda.js +4 -4
  68. package/lib/runner.d.ts +3 -3
  69. package/lib/runner.js +5 -5
  70. package/lib/secrets.js +1 -1
  71. package/package.json +12 -10
  72. package/lib/providers/image-builders/api.js +0 -47
  73. package/lib/providers/image-builders/aws-image-builder/ami.js +0 -81
  74. package/lib/providers/image-builders/aws-image-builder/builder.js +0 -520
  75. package/lib/providers/image-builders/aws-image-builder/common.js +0 -46
  76. package/lib/providers/image-builders/aws-image-builder/container.js +0 -63
  77. package/lib/providers/image-builders/aws-image-builder/delete-ami-function.js +0 -23
  78. package/lib/providers/image-builders/aws-image-builder/delete-ami.lambda.js +0 -87
  79. package/lib/providers/image-builders/aws-image-builder/deprecated/ami.js +0 -240
  80. package/lib/providers/image-builders/aws-image-builder/deprecated/common.js +0 -144
  81. package/lib/providers/image-builders/aws-image-builder/deprecated/container.js +0 -222
  82. package/lib/providers/image-builders/aws-image-builder/deprecated/linux-components.js +0 -172
  83. package/lib/providers/image-builders/aws-image-builder/deprecated/windows-components.js +0 -129
  84. package/lib/providers/image-builders/aws-image-builder/filter-failed-builds-function.js +0 -23
  85. package/lib/providers/image-builders/aws-image-builder/filter-failed-builds.lambda.js +0 -18
  86. package/lib/providers/image-builders/aws-image-builder/versioner-function.js +0 -23
  87. package/lib/providers/image-builders/aws-image-builder/versioner.lambda.js +0 -96
  88. package/lib/providers/image-builders/codebuild-deprecated.js +0 -373
  89. package/lib/providers/image-builders/codebuild.js +0 -287
  90. package/lib/providers/image-builders/components.js +0 -535
  91. package/lib/providers/image-builders/static.js +0 -58
  92. /package/lib/{providers/image-builders → image-builders}/api.d.ts +0 -0
  93. /package/lib/{providers/image-builders → image-builders}/aws-image-builder/common.d.ts +0 -0
  94. /package/lib/{providers/image-builders → image-builders}/aws-image-builder/delete-ami.lambda.d.ts +0 -0
  95. /package/lib/{providers/image-builders → image-builders}/aws-image-builder/deprecated/index.d.ts +0 -0
  96. /package/lib/{providers/image-builders → image-builders}/aws-image-builder/filter-failed-builds.lambda.d.ts +0 -0
  97. /package/lib/{providers/image-builders → image-builders}/aws-image-builder/index.d.ts +0 -0
  98. /package/lib/{providers/image-builders → image-builders}/aws-image-builder/versioner.lambda.d.ts +0 -0
  99. /package/lib/{providers/image-builders → image-builders}/index.d.ts +0 -0
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable-next-line import/no-extraneous-dependencies */
4
+ const AWS = require("aws-sdk");
5
+ const ec2 = new AWS.EC2();
6
+ const ecr = new AWS.ECR();
7
+ const ib = new AWS.Imagebuilder();
8
+ async function iterateImageVersions(imageName) {
9
+ let result = [];
10
+ let params = {
11
+ owner: 'Self',
12
+ filters: [
13
+ {
14
+ name: 'name',
15
+ values: [imageName],
16
+ },
17
+ ],
18
+ };
19
+ while (true) {
20
+ const response = await ib.listImages(params).promise();
21
+ if (response.imageVersionList) {
22
+ for (const imageVersion of response.imageVersionList) {
23
+ if (imageVersion.arn) {
24
+ result.push(imageVersion.arn);
25
+ }
26
+ }
27
+ }
28
+ if (!response.nextToken) {
29
+ break;
30
+ }
31
+ params.nextToken = response.nextToken;
32
+ }
33
+ return result;
34
+ }
35
+ async function iterateImageBuildVersions(imageVersionArn) {
36
+ let result = [];
37
+ let params = {
38
+ imageVersionArn: imageVersionArn,
39
+ };
40
+ while (true) {
41
+ const response = await ib.listImageBuildVersions(params).promise();
42
+ if (response.imageSummaryList) {
43
+ for (const imageBuildVersion of response.imageSummaryList) {
44
+ if (imageBuildVersion.state?.status !== 'AVAILABLE') {
45
+ // if it's not available, then it's still being created
46
+ console.log(`${imageBuildVersion.arn} is still being created, so we can't delete it`);
47
+ continue;
48
+ }
49
+ result.push(imageBuildVersion);
50
+ }
51
+ }
52
+ if (!response.nextToken) {
53
+ break;
54
+ }
55
+ params.nextToken = response.nextToken;
56
+ }
57
+ return result;
58
+ }
59
+ async function amisGone(amis) {
60
+ if (!amis) {
61
+ console.log('No AMIs found, so we can delete the image version build');
62
+ return true;
63
+ }
64
+ for (const ami of amis) {
65
+ console.log(`Checking if ${ami.image} exists`);
66
+ if (!ami.image) {
67
+ // no image? delete it
68
+ console.log('No AMI, so we can delete it');
69
+ continue;
70
+ }
71
+ try {
72
+ const response = await ec2.describeImages({
73
+ ImageIds: [ami.image],
74
+ }).promise();
75
+ if (response.Images?.length ?? 0 > 0) {
76
+ // image still available
77
+ console.log('AMI still available, so we can\'t delete it');
78
+ return false;
79
+ }
80
+ }
81
+ catch (e) {
82
+ if (e.code != 'InvalidAMIID.NotFound') {
83
+ // unknown exception, keep image for now
84
+ console.error(`Unknown exception while checking if ${ami.image} exists:`, e);
85
+ return false;
86
+ }
87
+ }
88
+ }
89
+ console.log('All AMIs are gone, so we can delete the image version build');
90
+ return true;
91
+ }
92
+ async function dockerImagesGone(dockerImages) {
93
+ if (!dockerImages) {
94
+ console.log('No docker images, so we can delete the image version build');
95
+ return true;
96
+ }
97
+ for (const images of dockerImages) {
98
+ for (const image of images.imageUris ?? []) {
99
+ const [repo, version] = image.split(':', 2);
100
+ const [_, repoName] = repo.split('/', 2);
101
+ if (version === 'latest') {
102
+ // don't check latest as image builder sometimes keeps that tag on forever
103
+ // we want to check if the image is still tagged as latest in ECR, not Image Builder
104
+ continue;
105
+ }
106
+ console.log(`Checking if ${repoName}:${version} exists`);
107
+ try {
108
+ const response = await ecr.describeImages({
109
+ repositoryName: repoName,
110
+ imageIds: [{ imageTag: version }],
111
+ }).promise();
112
+ if (response.imageDetails && response.imageDetails.length > 0) {
113
+ // image still available
114
+ if (response.imageDetails[0].imageTags?.includes('latest')) {
115
+ console.log(`Docker image ${repoName}:${version} still available and tagged latest, so we can't delete it`);
116
+ return false;
117
+ }
118
+ }
119
+ }
120
+ catch (e) {
121
+ if (e.code != 'RepositoryNotFoundException' && e.code != 'ImageNotFoundException') {
122
+ // unknown exception, keep image for now
123
+ console.error(`Unknown exception while checking if ${repoName}:${version} exists:`, e);
124
+ return false;
125
+ }
126
+ }
127
+ }
128
+ }
129
+ console.log('All Docker images are gone, so we can delete the image version build');
130
+ return true;
131
+ }
132
+ /* eslint-disable @typescript-eslint/no-require-imports, import/no-extraneous-dependencies */
133
+ exports.handler = async function (event, _context) {
134
+ for (const imageVersion of await iterateImageVersions(event.RecipeName)) {
135
+ for (const imageBuildVersion of await iterateImageBuildVersions(imageVersion)) {
136
+ if (!imageBuildVersion.arn) {
137
+ continue;
138
+ }
139
+ console.log(`Checking ${imageBuildVersion.name}/${imageBuildVersion.version}`);
140
+ if (await amisGone(imageBuildVersion.outputResources?.amis) && await dockerImagesGone(imageBuildVersion.outputResources?.containers)) {
141
+ console.log('Deleting image version build', imageBuildVersion.arn);
142
+ await ib.deleteImage({
143
+ imageBuildVersionArn: imageBuildVersion.arn,
144
+ }).promise();
145
+ }
146
+ }
147
+ }
148
+ };
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhcGVyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbWFnZS1idWlsZGVycy9hd3MtaW1hZ2UtYnVpbGRlci9yZWFwZXIubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsZ0VBQWdFO0FBQ2hFLCtCQUErQjtBQVMvQixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUVsQyxLQUFLLFVBQVUsb0JBQW9CLENBQUMsU0FBaUI7SUFDbkQsSUFBSSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBRTFCLElBQUksTUFBTSxHQUF1QztRQUMvQyxLQUFLLEVBQUUsTUFBTTtRQUNiLE9BQU8sRUFBRTtZQUNQO2dCQUNFLElBQUksRUFBRSxNQUFNO2dCQUNaLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQzthQUNwQjtTQUNGO0tBQ0YsQ0FBQztJQUVGLE9BQU8sSUFBSSxFQUFFO1FBQ1gsTUFBTSxRQUFRLEdBQUcsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXZELElBQUksUUFBUSxDQUFDLGdCQUFnQixFQUFFO1lBQzdCLEtBQUssTUFBTSxZQUFZLElBQUksUUFBUSxDQUFDLGdCQUFnQixFQUFFO2dCQUNwRCxJQUFJLFlBQVksQ0FBQyxHQUFHLEVBQUU7b0JBQ3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUMvQjthQUNGO1NBQ0Y7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRTtZQUN2QixNQUFNO1NBQ1A7UUFDRCxNQUFNLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxT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RixPQUFPLEtBQUssQ0FBQztpQkFDZDthQUNGO1NBQ0Y7S0FDRjtJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsc0VBQXNFLENBQUMsQ0FBQztJQUVwRixPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCw2RkFBNkY7QUFDN0YsT0FBTyxDQUFDLE9BQU8sR0FBRyxLQUFLLFdBQVcsS0FBa0IsRUFBRSxRQUEyQjtJQUMvRSxLQUFLLE1BQU0sWUFBWSxJQUFJLE1BQU0sb0JBQW9CLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ3ZFLEtBQUssTUFBTSxpQkFBaUIsSUFBSSxNQUFNLHlCQUF5QixDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQzdFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQzFCLFNBQVM7YUFDVjtZQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxpQkFBaUIsQ0FBQyxJQUFJLElBQUksaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUUvRSxJQUFJLE1BQU0sUUFBUSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxNQUFNLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsRUFBRTtnQkFDcEksT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkUsTUFBTSxFQUFFLENBQUMsV0FBVyxDQUFDO29CQUNuQixvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQyxHQUFHO2lCQUM1QyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDZDtTQUNGO0tBQ0Y7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG4vKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5pbXBvcnQgKiBhcyBBV1MgZnJvbSAnYXdzLXNkayc7XG5cbmludGVyZmFjZSBSZWFwZXJJbnB1dCB7XG4gIC8qKlxuICAgKiBSZWNpcGUvaW1hZ2UgbmFtZS5cbiAgICovXG4gIFJlY2lwZU5hbWU6IHN0cmluZztcbn1cblxuY29uc3QgZWMyID0gbmV3IEFXUy5FQzIoKTtcbmNvbnN0IGVjciA9IG5ldyBBV1MuRUNSKCk7XG5jb25zdCBpYiA9IG5ldyBBV1MuSW1hZ2VidWlsZGVyKCk7XG5cbmFzeW5jIGZ1bmN0aW9uIGl0ZXJhdGVJbWFnZVZlcnNpb25zKGltYWdlTmFtZTogc3RyaW5nKSB7XG4gIGxldCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG5cbiAgbGV0IHBhcmFtczogQVdTLkltYWdlYnVpbGRlci5MaXN0SW1hZ2VzUmVxdWVzdCA9IHtcbiAgICBvd25lcjogJ1NlbGYnLFxuICAgIGZpbHRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICB2YWx1ZXM6IFtpbWFnZU5hbWVdLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBpYi5saXN0SW1hZ2VzKHBhcmFtcykucHJvbWlzZSgpO1xuXG4gICAgaWYgKHJlc3BvbnNlLmltYWdlVmVyc2lvbkxpc3QpIHtcbiAgICAgIGZvciAoY29uc3QgaW1hZ2VWZXJzaW9uIG9mIHJlc3BvbnNlLmltYWdlVmVyc2lvbkxpc3QpIHtcbiAgICAgICAgaWYgKGltYWdlVmVyc2lvbi5hcm4pIHtcbiAgICAgICAgICByZXN1bHQucHVzaChpbWFnZVZlcnNpb24uYXJuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcmVzcG9uc2UubmV4dFRva2VuKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcGFyYW1zLm5leHRUb2tlbiA9IHJlc3BvbnNlLm5leHRUb2tlbjtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGl0ZXJhdGVJbWFnZUJ1aWxkVmVyc2lvbnMoaW1hZ2VWZXJzaW9uQXJuOiBzdHJpbmcpIHtcbiAgbGV0IHJlc3VsdDogQVdTLkltYWdlYnVpbGRlci5JbWFnZVN1bW1hcnlbXSA9IFtdO1xuXG4gIGxldCBwYXJhbXM6IEFXUy5JbWFnZWJ1aWxkZXIuTGlzdEltYWdlQnVpbGRWZXJzaW9uc1JlcXVlc3QgPSB7XG4gICAgaW1hZ2VWZXJzaW9uQXJuOiBpbWFnZVZlcnNpb25Bcm4sXG4gIH07XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGliLmxpc3RJbWFnZUJ1aWxkVmVyc2lvbnMocGFyYW1zKS5wcm9taXNlKCk7XG5cbiAgICBpZiAocmVzcG9uc2UuaW1hZ2VTdW1tYXJ5TGlzdCkge1xuICAgICAgZm9yIChjb25zdCBpbWFnZUJ1aWxkVmVyc2lvbiBvZiByZXNwb25zZS5pbWFnZVN1bW1hcnlMaXN0KSB7XG4gICAgICAgIGlmIChpbWFnZUJ1aWxkVmVyc2lvbi5zdGF0ZT8uc3RhdHVzICE9PSAnQVZBSUxBQkxFJykge1xuICAgICAgICAgIC8vIGlmIGl0J3Mgbm90IGF2YWlsYWJsZSwgdGhlbiBpdCdzIHN0aWxsIGJlaW5nIGNyZWF0ZWRcbiAgICAgICAgICBjb25zb2xlLmxvZyhgJHtpbWFnZUJ1aWxkVmVyc2lvbi5hcm59IGlzIHN0aWxsIGJlaW5nIGNyZWF0ZWQsIHNvIHdlIGNhbid0IGRlbGV0ZSBpdGApO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0LnB1c2goaW1hZ2VCdWlsZFZlcnNpb24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcmVzcG9uc2UubmV4dFRva2VuKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcGFyYW1zLm5leHRUb2tlbiA9IHJlc3BvbnNlLm5leHRUb2tlbjtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFtaXNHb25lKGFtaXM/OiBBV1MuSW1hZ2VidWlsZGVyLkFtaUxpc3QpIHtcbiAgaWYgKCFhbWlzKSB7XG4gICAgY29uc29sZS5sb2coJ05vIEFNSXMgZm91bmQsIHNvIHdlIGNhbiBkZWxldGUgdGhlIGltYWdlIHZlcnNpb24gYnVpbGQnKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGZvciAoY29uc3QgYW1pIG9mIGFtaXMpIHtcbiAgICBjb25zb2xlLmxvZyhgQ2hlY2tpbmcgaWYgJHthbWkuaW1hZ2V9IGV4aXN0c2ApO1xuXG4gICAgaWYgKCFhbWkuaW1hZ2UpIHtcbiAgICAgIC8vIG5vIGltYWdlPyBkZWxldGUgaXRcbiAgICAgIGNvbnNvbGUubG9nKCdObyBBTUksIHNvIHdlIGNhbiBkZWxldGUgaXQnKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGVjMi5kZXNjcmliZUltYWdlcyh7XG4gICAgICAgIEltYWdlSWRzOiBbYW1pLmltYWdlXSxcbiAgICAgIH0pLnByb21pc2UoKTtcblxuICAgICAgaWYgKHJlc3BvbnNlLkltYWdlcz8ubGVuZ3RoID8/IDAgPiAwKSB7XG4gICAgICAgIC8vIGltYWdlIHN0aWxsIGF2YWlsYWJsZVxuICAgICAgICBjb25zb2xlLmxvZygnQU1JIHN0aWxsIGF2YWlsYWJsZSwgc28gd2UgY2FuXFwndCBkZWxldGUgaXQnKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKGUuY29kZSAhPSAnSW52YWxpZEFNSUlELk5vdEZvdW5kJykge1xuICAgICAgICAvLyB1bmtub3duIGV4Y2VwdGlvbiwga2VlcCBpbWFnZSBmb3Igbm93XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFVua25vd24gZXhjZXB0aW9uIHdoaWxlIGNoZWNraW5nIGlmICR7YW1pLmltYWdlfSBleGlzdHM6YCwgZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zb2xlLmxvZygnQWxsIEFNSXMgYXJlIGdvbmUsIHNvIHdlIGNhbiBkZWxldGUgdGhlIGltYWdlIHZlcnNpb24gYnVpbGQnKTtcblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZG9ja2VySW1hZ2VzR29uZShkb2NrZXJJbWFnZXM/OiBBV1MuSW1hZ2VidWlsZGVyLkNvbnRhaW5lckxpc3QpIHtcbiAgaWYgKCFkb2NrZXJJbWFnZXMpIHtcbiAgICBjb25zb2xlLmxvZygnTm8gZG9ja2VyIGltYWdlcywgc28gd2UgY2FuIGRlbGV0ZSB0aGUgaW1hZ2UgdmVyc2lvbiBidWlsZCcpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZm9yIChjb25zdCBpbWFnZXMgb2YgZG9ja2VySW1hZ2VzKSB7XG4gICAgZm9yIChjb25zdCBpbWFnZSBvZiBpbWFnZXMuaW1hZ2VVcmlzID8/IFtdKSB7XG4gICAgICBjb25zdCBbcmVwbywgdmVyc2lvbl0gPSBpbWFnZS5zcGxpdCgnOicsIDIpO1xuICAgICAgY29uc3QgW18sIHJlcG9OYW1lXSA9IHJlcG8uc3BsaXQoJy8nLCAyKTtcblxuICAgICAgaWYgKHZlcnNpb24gPT09ICdsYXRlc3QnKSB7XG4gICAgICAgIC8vIGRvbid0IGNoZWNrIGxhdGVzdCBhcyBpbWFnZSBidWlsZGVyIHNvbWV0aW1lcyBrZWVwcyB0aGF0IHRhZyBvbiBmb3JldmVyXG4gICAgICAgIC8vIHdlIHdhbnQgdG8gY2hlY2sgaWYgdGhlIGltYWdlIGlzIHN0aWxsIHRhZ2dlZCBhcyBsYXRlc3QgaW4gRUNSLCBub3QgSW1hZ2UgQnVpbGRlclxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coYENoZWNraW5nIGlmICR7cmVwb05hbWV9OiR7dmVyc2lvbn0gZXhpc3RzYCk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZWNyLmRlc2NyaWJlSW1hZ2VzKHtcbiAgICAgICAgICByZXBvc2l0b3J5TmFtZTogcmVwb05hbWUsXG4gICAgICAgICAgaW1hZ2VJZHM6IFt7IGltYWdlVGFnOiB2ZXJzaW9uIH1dLFxuICAgICAgICB9KS5wcm9taXNlKCk7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLmltYWdlRGV0YWlscyAmJiByZXNwb25zZS5pbWFnZURldGFpbHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIGltYWdlIHN0aWxsIGF2YWlsYWJsZVxuICAgICAgICAgIGlmIChyZXNwb25zZS5pbWFnZURldGFpbHNbMF0uaW1hZ2VUYWdzPy5pbmNsdWRlcygnbGF0ZXN0JykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBEb2NrZXIgaW1hZ2UgJHtyZXBvTmFtZX06JHt2ZXJzaW9ufSBzdGlsbCBhdmFpbGFibGUgYW5kIHRhZ2dlZCBsYXRlc3QsIHNvIHdlIGNhbid0IGRlbGV0ZSBpdGApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIGlmIChlLmNvZGUgIT0gJ1JlcG9zaXRvcnlOb3RGb3VuZEV4Y2VwdGlvbicgJiYgZS5jb2RlICE9ICdJbWFnZU5vdEZvdW5kRXhjZXB0aW9uJykge1xuICAgICAgICAgIC8vIHVua25vd24gZXhjZXB0aW9uLCBrZWVwIGltYWdlIGZvciBub3dcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBVbmtub3duIGV4Y2VwdGlvbiB3aGlsZSBjaGVja2luZyBpZiAke3JlcG9OYW1lfToke3ZlcnNpb259IGV4aXN0czpgLCBlKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zb2xlLmxvZygnQWxsIERvY2tlciBpbWFnZXMgYXJlIGdvbmUsIHNvIHdlIGNhbiBkZWxldGUgdGhlIGltYWdlIHZlcnNpb24gYnVpbGQnKTtcblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cywgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5leHBvcnRzLmhhbmRsZXIgPSBhc3luYyBmdW5jdGlvbiAoZXZlbnQ6IFJlYXBlcklucHV0LCBfY29udGV4dDogQVdTTGFtYmRhLkNvbnRleHQpIHtcbiAgZm9yIChjb25zdCBpbWFnZVZlcnNpb24gb2YgYXdhaXQgaXRlcmF0ZUltYWdlVmVyc2lvbnMoZXZlbnQuUmVjaXBlTmFtZSkpIHtcbiAgICBmb3IgKGNvbnN0IGltYWdlQnVpbGRWZXJzaW9uIG9mIGF3YWl0IGl0ZXJhdGVJbWFnZUJ1aWxkVmVyc2lvbnMoaW1hZ2VWZXJzaW9uKSkge1xuICAgICAgaWYgKCFpbWFnZUJ1aWxkVmVyc2lvbi5hcm4pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUubG9nKGBDaGVja2luZyAke2ltYWdlQnVpbGRWZXJzaW9uLm5hbWV9LyR7aW1hZ2VCdWlsZFZlcnNpb24udmVyc2lvbn1gKTtcblxuICAgICAgaWYgKGF3YWl0IGFtaXNHb25lKGltYWdlQnVpbGRWZXJzaW9uLm91dHB1dFJlc291cmNlcz8uYW1pcykgJiYgYXdhaXQgZG9ja2VySW1hZ2VzR29uZShpbWFnZUJ1aWxkVmVyc2lvbi5vdXRwdXRSZXNvdXJjZXM/LmNvbnRhaW5lcnMpKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdEZWxldGluZyBpbWFnZSB2ZXJzaW9uIGJ1aWxkJywgaW1hZ2VCdWlsZFZlcnNpb24uYXJuKTtcbiAgICAgICAgYXdhaXQgaWIuZGVsZXRlSW1hZ2Uoe1xuICAgICAgICAgIGltYWdlQnVpbGRWZXJzaW9uQXJuOiBpbWFnZUJ1aWxkVmVyc2lvbi5hcm4sXG4gICAgICAgIH0pLnByb21pc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iXX0=
@@ -6,7 +6,7 @@ import { Construct } from 'constructs';
6
6
  export interface VersionerFunctionProps extends lambda.FunctionOptions {
7
7
  }
8
8
  /**
9
- * An AWS Lambda function which executes src/providers/image-builders/aws-image-builder/versioner.
9
+ * An AWS Lambda function which executes src/image-builders/aws-image-builder/versioner.
10
10
  */
11
11
  export declare class VersionerFunction extends lambda.Function {
12
12
  constructor(scope: Construct, id: string, props?: VersionerFunctionProps);
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VersionerFunction = void 0;
4
+ // ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen".
5
+ const path = require("path");
6
+ const lambda = require("aws-cdk-lib/aws-lambda");
7
+ /**
8
+ * An AWS Lambda function which executes src/image-builders/aws-image-builder/versioner.
9
+ */
10
+ class VersionerFunction extends lambda.Function {
11
+ constructor(scope, id, props) {
12
+ super(scope, id, {
13
+ description: 'src/image-builders/aws-image-builder/versioner.lambda.ts',
14
+ ...props,
15
+ runtime: new lambda.Runtime('nodejs16.x', lambda.RuntimeFamily.NODEJS),
16
+ handler: 'index.handler',
17
+ code: lambda.Code.fromAsset(path.join(__dirname, '../../../assets/image-builders/aws-image-builder/versioner.lambda')),
18
+ });
19
+ this.addEnvironment('AWS_NODEJS_CONNECTION_REUSE_ENABLED', '1', { removeInEdge: true });
20
+ }
21
+ }
22
+ exports.VersionerFunction = VersionerFunction;
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbmVyLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ltYWdlLWJ1aWxkZXJzL2F3cy1pbWFnZS1idWlsZGVyL3ZlcnNpb25lci1mdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2RUFBNkU7QUFDN0UsNkJBQTZCO0FBQzdCLGlEQUFpRDtBQVNqRDs7R0FFRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsTUFBTSxDQUFDLFFBQVE7SUFDcEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE4QjtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFdBQVcsRUFBRSwwREFBMEQ7WUFDdkUsR0FBRyxLQUFLO1lBQ1IsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDdEUsT0FBTyxFQUFFLGVBQWU7WUFDeEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLG1FQUFtRSxDQUFDLENBQUM7U0FDdkgsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRixDQUFDO0NBQ0Y7QUFYRCw4Q0FXQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMuanMgYW5kIHJ1biBcIm5weCBwcm9qZW5cIi5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBQcm9wcyBmb3IgVmVyc2lvbmVyRnVuY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uZXJGdW5jdGlvblByb3BzIGV4dGVuZHMgbGFtYmRhLkZ1bmN0aW9uT3B0aW9ucyB7XG59XG5cbi8qKlxuICogQW4gQVdTIExhbWJkYSBmdW5jdGlvbiB3aGljaCBleGVjdXRlcyBzcmMvaW1hZ2UtYnVpbGRlcnMvYXdzLWltYWdlLWJ1aWxkZXIvdmVyc2lvbmVyLlxuICovXG5leHBvcnQgY2xhc3MgVmVyc2lvbmVyRnVuY3Rpb24gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFZlcnNpb25lckZ1bmN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnc3JjL2ltYWdlLWJ1aWxkZXJzL2F3cy1pbWFnZS1idWlsZGVyL3ZlcnNpb25lci5sYW1iZGEudHMnLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBydW50aW1lOiBuZXcgbGFtYmRhLlJ1bnRpbWUoJ25vZGVqczE2LngnLCBsYW1iZGEuUnVudGltZUZhbWlseS5OT0RFSlMpLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8uLi9hc3NldHMvaW1hZ2UtYnVpbGRlcnMvYXdzLWltYWdlLWJ1aWxkZXIvdmVyc2lvbmVyLmxhbWJkYScpKSxcbiAgICB9KTtcbiAgICB0aGlzLmFkZEVudmlyb25tZW50KCdBV1NfTk9ERUpTX0NPTk5FQ1RJT05fUkVVU0VfRU5BQkxFRCcsICcxJywgeyByZW1vdmVJbkVkZ2U6IHRydWUgfSk7XG4gIH1cbn0iXX0=
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handler = void 0;
4
+ /* eslint-disable import/no-extraneous-dependencies */
5
+ const AWS = require("aws-sdk");
6
+ const semver_1 = require("semver");
7
+ const lambda_helpers_1 = require("../../lambda-helpers");
8
+ const ib = new AWS.Imagebuilder();
9
+ /* eslint-disable @typescript-eslint/no-require-imports, import/no-extraneous-dependencies */
10
+ async function handler(event, context) {
11
+ console.log(JSON.stringify({ ...event, ResponseURL: '...' }));
12
+ try {
13
+ const objectType = event.ResourceProperties.ObjectType;
14
+ const objectName = event.ResourceProperties.ObjectName;
15
+ switch (event.RequestType) {
16
+ case 'Create':
17
+ case 'Update':
18
+ let version = '1.0.0';
19
+ let allVersions = [];
20
+ try {
21
+ switch (objectType) {
22
+ case 'Component': {
23
+ let result = {};
24
+ do {
25
+ result = await ib.listComponents({
26
+ filters: [{
27
+ name: 'name',
28
+ values: [objectName],
29
+ }],
30
+ nextToken: result.nextToken,
31
+ }).promise();
32
+ allVersions = allVersions.concat(result.componentVersionList.map(i => i.version || '1.0.0'));
33
+ } while (result.nextToken);
34
+ break;
35
+ }
36
+ case 'ImageRecipe': {
37
+ let result = {};
38
+ do {
39
+ result = await ib.listImageRecipes({
40
+ filters: [{
41
+ name: 'name',
42
+ values: [objectName],
43
+ }],
44
+ nextToken: result.nextToken,
45
+ }).promise();
46
+ allVersions = allVersions.concat(result.imageRecipeSummaryList.map(i => i.arn?.split('/').pop() || '1.0.0'));
47
+ } while (result.nextToken);
48
+ break;
49
+ }
50
+ case 'ContainerRecipe': {
51
+ let result = {};
52
+ do {
53
+ result = await ib.listContainerRecipes({
54
+ filters: [{
55
+ name: 'name',
56
+ values: [objectName],
57
+ }],
58
+ nextToken: result.nextToken,
59
+ }).promise();
60
+ allVersions = allVersions.concat(result.containerRecipeSummaryList.map(i => i.arn?.split('/').pop() || '1.0.0'));
61
+ } while (result.nextToken);
62
+ break;
63
+ }
64
+ }
65
+ }
66
+ catch (e) {
67
+ if (e.code !== 'ResourceNotFoundException') {
68
+ throw e;
69
+ }
70
+ else {
71
+ console.log('Resource not found, assuming first version');
72
+ }
73
+ }
74
+ version = (0, semver_1.maxSatisfying)(allVersions, '>=0.0.0');
75
+ if (version === null) {
76
+ version = '1.0.0';
77
+ }
78
+ console.log(`Found versions ${allVersions} -- latest is ${version}`);
79
+ version = (0, semver_1.inc)(version, 'patch');
80
+ if (version === null) {
81
+ throw new Error('Unable to bump version');
82
+ }
83
+ await (0, lambda_helpers_1.customResourceRespond)(event, 'SUCCESS', 'OK', version, {});
84
+ break;
85
+ case 'Delete':
86
+ await (0, lambda_helpers_1.customResourceRespond)(event, 'SUCCESS', 'OK', event.PhysicalResourceId, {});
87
+ break;
88
+ }
89
+ }
90
+ catch (e) {
91
+ console.log(e);
92
+ await (0, lambda_helpers_1.customResourceRespond)(event, 'FAILED', e.message || 'Internal Error', context.logStreamName, {});
93
+ }
94
+ }
95
+ exports.handler = handler;
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbmVyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbWFnZS1idWlsZGVycy9hd3MtaW1hZ2UtYnVpbGRlci92ZXJzaW9uZXIubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHNEQUFzRDtBQUN0RCwrQkFBK0I7QUFDL0IsbUNBQTRDO0FBQzVDLHlEQUE2RDtBQUU3RCxNQUFNLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUVsQyw2RkFBNkY7QUFDdEYsS0FBSyxVQUFVLE9BQU8sQ0FBQyxLQUFrRCxFQUFFLE9BQTBCO0lBQzFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFOUQsSUFBSTtRQUNGLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7UUFDdkQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztRQUV2RCxRQUFRLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDekIsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxPQUFPLEdBQWtCLE9BQU8sQ0FBQztnQkFDckMsSUFBSSxXQUFXLEdBQWEsRUFBRSxDQUFDO2dCQUMvQixJQUFJO29CQUNGLFFBQVEsVUFBVSxFQUFFO3dCQUNsQixLQUFLLFdBQVcsQ0FBQyxDQUFDOzRCQUNoQixJQUFJLE1BQU0sR0FBNEMsRUFBRSxDQUFDOzRCQUN6RCxHQUFHO2dDQUNELE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0NBQy9CLE9BQU8sRUFBRSxDQUFDOzRDQUNSLElBQUksRUFBRSxNQUFNOzRDQUNaLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQzt5Q0FDckIsQ0FBQztvQ0FDRixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7aUNBQzVCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQ0FDYixXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsb0JBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDOzZCQUMvRixRQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUU7NEJBQzNCLE1BQU07eUJBQ1A7d0JBQ0QsS0FBSyxhQUFhLENBQUMsQ0FBQzs0QkFDbEIsSUFBSSxNQUFNLEdBQThDLEVBQUUsQ0FBQzs0QkFDM0QsR0FBRztnQ0FDRCxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0NBQ2pDLE9BQU8sRUFBRSxDQUFDOzRDQUNSLElBQUksRUFBRSxNQUFNOzRDQUNaLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQzt5Q0FDckIsQ0FBQztvQ0FDRixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7aUNBQzVCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQ0FDYixXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsc0JBQXVCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQzs2QkFDL0csUUFBUSxNQUFNLENBQUMsU0FBUyxFQUFFOzRCQUMzQixNQUFNO3lCQUNQO3dCQUNELEtBQUssaUJBQWlCLENBQUMsQ0FBQzs0QkFDdEIsSUFBSSxNQUFNLEdBQWtELEVBQUUsQ0FBQzs0QkFDL0QsR0FBRztnQ0FDRCxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsb0JBQW9CLENBQUM7b0NBQ3JDLE9BQU8sRUFBRSxDQUFDOzRDQUNSLElBQUksRUFBRSxNQUFNOzRDQUNaLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQzt5Q0FDckIsQ0FBQztvQ0FDRixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7aUNBQzVCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQ0FDYixXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsMEJBQTJCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQzs2QkFDbkgsUUFBUSxNQUFNLENBQUMsU0FBUyxFQUFFOzRCQUMzQixNQUFNO3lCQUNQO3FCQUNGO2lCQUNGO2dCQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNWLElBQUssQ0FBUyxDQUFDLElBQUksS0FBSywyQkFBMkIsRUFBRTt3QkFDbkQsTUFBTSxDQUFDLENBQUM7cUJBQ1Q7eUJBQU07d0JBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO3FCQUMzRDtpQkFDRjtnQkFFRCxPQUFPLEdBQUcsSUFBQSxzQkFBYSxFQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO29CQUNwQixPQUFPLEdBQUcsT0FBTyxDQUFDO2lCQUNuQjtnQkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixXQUFXLGlCQUFpQixPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUVyRSxPQUFPLEdBQUcsSUFBQSxZQUFHLEVBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7b0JBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztpQkFDM0M7Z0JBQ0QsTUFBTSxJQUFBLHNDQUFxQixFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFFakUsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxNQUFNLElBQUEsc0NBQXFCLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRixNQUFNO1NBQ1Q7S0FDRjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLE1BQU0sSUFBQSxzQ0FBcUIsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFHLENBQVcsQ0FBQyxPQUFPLElBQUksZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztLQUNuSDtBQUNILENBQUM7QUF0RkQsMEJBc0ZDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyxpbXBvcnQvbm8tdW5yZXNvbHZlZCAqL1xuaW1wb3J0ICogYXMgQVdTTGFtYmRhIGZyb20gJ2F3cy1sYW1iZGEnO1xuLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5pbXBvcnQgKiBhcyBBV1MgZnJvbSAnYXdzLXNkayc7XG5pbXBvcnQgeyBpbmMsIG1heFNhdGlzZnlpbmcgfSBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHsgY3VzdG9tUmVzb3VyY2VSZXNwb25kIH0gZnJvbSAnLi4vLi4vbGFtYmRhLWhlbHBlcnMnO1xuXG5jb25zdCBpYiA9IG5ldyBBV1MuSW1hZ2VidWlsZGVyKCk7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHMsIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQ6IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnQsIGNvbnRleHQ6IEFXU0xhbWJkYS5Db250ZXh0KSB7XG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHsgLi4uZXZlbnQsIFJlc3BvbnNlVVJMOiAnLi4uJyB9KSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBvYmplY3RUeXBlID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLk9iamVjdFR5cGU7XG4gICAgY29uc3Qgb2JqZWN0TmFtZSA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5PYmplY3ROYW1lO1xuXG4gICAgc3dpdGNoIChldmVudC5SZXF1ZXN0VHlwZSkge1xuICAgICAgY2FzZSAnQ3JlYXRlJzpcbiAgICAgIGNhc2UgJ1VwZGF0ZSc6XG4gICAgICAgIGxldCB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsID0gJzEuMC4wJztcbiAgICAgICAgbGV0IGFsbFZlcnNpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHN3aXRjaCAob2JqZWN0VHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnQ29tcG9uZW50Jzoge1xuICAgICAgICAgICAgICBsZXQgcmVzdWx0OiBBV1MuSW1hZ2VidWlsZGVyLkxpc3RDb21wb25lbnRzUmVzcG9uc2UgPSB7fTtcbiAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IGliLmxpc3RDb21wb25lbnRzKHtcbiAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IFt7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbb2JqZWN0TmFtZV0sXG4gICAgICAgICAgICAgICAgICB9XSxcbiAgICAgICAgICAgICAgICAgIG5leHRUb2tlbjogcmVzdWx0Lm5leHRUb2tlbixcbiAgICAgICAgICAgICAgICB9KS5wcm9taXNlKCk7XG4gICAgICAgICAgICAgICAgYWxsVmVyc2lvbnMgPSBhbGxWZXJzaW9ucy5jb25jYXQocmVzdWx0LmNvbXBvbmVudFZlcnNpb25MaXN0IS5tYXAoaSA9PiBpLnZlcnNpb24gfHwgJzEuMC4wJykpO1xuICAgICAgICAgICAgICB9IHdoaWxlIChyZXN1bHQubmV4dFRva2VuKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdJbWFnZVJlY2lwZSc6IHtcbiAgICAgICAgICAgICAgbGV0IHJlc3VsdDogQVdTLkltYWdlYnVpbGRlci5MaXN0SW1hZ2VSZWNpcGVzUmVzcG9uc2UgPSB7fTtcbiAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IGliLmxpc3RJbWFnZVJlY2lwZXMoe1xuICAgICAgICAgICAgICAgICAgZmlsdGVyczogW3tcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFtvYmplY3ROYW1lXSxcbiAgICAgICAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgICAgICAgbmV4dFRva2VuOiByZXN1bHQubmV4dFRva2VuLFxuICAgICAgICAgICAgICAgIH0pLnByb21pc2UoKTtcbiAgICAgICAgICAgICAgICBhbGxWZXJzaW9ucyA9IGFsbFZlcnNpb25zLmNvbmNhdChyZXN1bHQuaW1hZ2VSZWNpcGVTdW1tYXJ5TGlzdCEubWFwKGkgPT4gaS5hcm4/LnNwbGl0KCcvJykucG9wKCkgfHwgJzEuMC4wJykpO1xuICAgICAgICAgICAgICB9IHdoaWxlIChyZXN1bHQubmV4dFRva2VuKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdDb250YWluZXJSZWNpcGUnOiB7XG4gICAgICAgICAgICAgIGxldCByZXN1bHQ6IEFXUy5JbWFnZWJ1aWxkZXIuTGlzdENvbnRhaW5lclJlY2lwZXNSZXNwb25zZSA9IHt9O1xuICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgaWIubGlzdENvbnRhaW5lclJlY2lwZXMoe1xuICAgICAgICAgICAgICAgICAgZmlsdGVyczogW3tcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFtvYmplY3ROYW1lXSxcbiAgICAgICAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgICAgICAgbmV4dFRva2VuOiByZXN1bHQubmV4dFRva2VuLFxuICAgICAgICAgICAgICAgIH0pLnByb21pc2UoKTtcbiAgICAgICAgICAgICAgICBhbGxWZXJzaW9ucyA9IGFsbFZlcnNpb25zLmNvbmNhdChyZXN1bHQuY29udGFpbmVyUmVjaXBlU3VtbWFyeUxpc3QhLm1hcChpID0+IGkuYXJuPy5zcGxpdCgnLycpLnBvcCgpIHx8ICcxLjAuMCcpKTtcbiAgICAgICAgICAgICAgfSB3aGlsZSAocmVzdWx0Lm5leHRUb2tlbik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmICgoZSBhcyBhbnkpLmNvZGUgIT09ICdSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uJykge1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1Jlc291cmNlIG5vdCBmb3VuZCwgYXNzdW1pbmcgZmlyc3QgdmVyc2lvbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZlcnNpb24gPSBtYXhTYXRpc2Z5aW5nKGFsbFZlcnNpb25zLCAnPj0wLjAuMCcpO1xuICAgICAgICBpZiAodmVyc2lvbiA9PT0gbnVsbCkge1xuICAgICAgICAgIHZlcnNpb24gPSAnMS4wLjAnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKGBGb3VuZCB2ZXJzaW9ucyAke2FsbFZlcnNpb25zfSAtLSBsYXRlc3QgaXMgJHt2ZXJzaW9ufWApO1xuXG4gICAgICAgIHZlcnNpb24gPSBpbmModmVyc2lvbiwgJ3BhdGNoJyk7XG4gICAgICAgIGlmICh2ZXJzaW9uID09PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gYnVtcCB2ZXJzaW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgY3VzdG9tUmVzb3VyY2VSZXNwb25kKGV2ZW50LCAnU1VDQ0VTUycsICdPSycsIHZlcnNpb24sIHt9KTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RlbGV0ZSc6XG4gICAgICAgIGF3YWl0IGN1c3RvbVJlc291cmNlUmVzcG9uZChldmVudCwgJ1NVQ0NFU1MnLCAnT0snLCBldmVudC5QaHlzaWNhbFJlc291cmNlSWQsIHt9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5sb2coZSk7XG4gICAgYXdhaXQgY3VzdG9tUmVzb3VyY2VSZXNwb25kKGV2ZW50LCAnRkFJTEVEJywgKGUgYXMgRXJyb3IpLm1lc3NhZ2UgfHwgJ0ludGVybmFsIEVycm9yJywgY29udGV4dC5sb2dTdHJlYW1OYW1lLCB7fSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { aws_codebuild as codebuild, aws_ec2 as ec2, aws_iam as iam, aws_logs as logs, Duration, RemovalPolicy } from 'aws-cdk-lib';
2
2
  import { Construct } from 'constructs';
3
3
  import { IRunnerImageBuilder } from './common';
4
- import { Architecture, Os, RunnerAmi, RunnerImage, RunnerVersion } from '../common';
4
+ import { Architecture, Os, RunnerAmi, RunnerImage, RunnerVersion } from '../providers/common';
5
5
  /**
6
6
  * Properties for CodeBuildImageBuilder construct.
7
7
  */
@@ -66,7 +66,7 @@ export interface CodeBuildImageBuilderProps {
66
66
  *
67
67
  * The only action taken in CodeBuild is running `docker build`. You would therefore not need to change this setting often.
68
68
  *
69
- * @default Ubuntu 20.04 for x64 and Amazon Linux 2 for ARM64
69
+ * @default Ubuntu 22.04 for x64 and Amazon Linux 2 for ARM64
70
70
  */
71
71
  readonly buildImage?: codebuild.IBuildImage;
72
72
  /**
@@ -105,13 +105,13 @@ export interface CodeBuildImageBuilderProps {
105
105
  *
106
106
  * ```
107
107
  * const builder = new CodeBuildImageBuilder(this, 'Builder', {
108
- * dockerfilePath: FargateProvider.LINUX_X64_DOCKERFILE_PATH,
108
+ * dockerfilePath: FargateRunnerProvider.LINUX_X64_DOCKERFILE_PATH,
109
109
  * runnerVersion: RunnerVersion.specific('2.293.0'),
110
110
  * rebuildInterval: Duration.days(14),
111
111
  * });
112
112
  * builder.setBuildArg('EXTRA_PACKAGES', 'nginx xz-utils');
113
- * new FargateRunner(this, 'Fargate provider', {
114
- * label: 'customized-fargate',
113
+ * new FargateRunnerProvider(this, 'Fargate provider', {
114
+ * labels: ['customized-fargate'],
115
115
  * imageBuilder: builder,
116
116
  * });
117
117
  * ```