@cloudsnorkel/cdk-github-runners 0.5.1 → 0.5.2

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 (32) hide show
  1. package/.gitattributes +0 -1
  2. package/.jsii +77 -77
  3. package/API.md +0 -10
  4. package/README.md +48 -12
  5. package/lib/lambdas/aws-image-builder-versioner/index.js +81 -41
  6. package/lib/lambdas/delete-runner/index.js +7 -2
  7. package/lib/lambdas/setup/index.html +1 -1
  8. package/lib/lambdas/setup/index.js +7 -2
  9. package/lib/lambdas/status/index.js +7 -2
  10. package/lib/lambdas/token-retriever/index.js +7 -2
  11. package/lib/lambdas/update-lambda/index.js +25236 -27
  12. package/lib/providers/codebuild.js +7 -5
  13. package/lib/providers/common.js +3 -3
  14. package/lib/providers/docker-images/codebuild/linux-arm64/Dockerfile +2 -0
  15. package/lib/providers/docker-images/codebuild/linux-x64/Dockerfile +2 -0
  16. package/lib/providers/docker-images/fargate/linux-arm64/Dockerfile +1 -0
  17. package/lib/providers/docker-images/fargate/linux-x64/Dockerfile +1 -0
  18. package/lib/providers/docker-images/lambda/linux-arm64/Dockerfile +1 -0
  19. package/lib/providers/docker-images/lambda/linux-arm64/runner.js +1 -0
  20. package/lib/providers/docker-images/lambda/linux-arm64/runner.sh +2 -2
  21. package/lib/providers/docker-images/lambda/linux-x64/Dockerfile +1 -0
  22. package/lib/providers/docker-images/lambda/linux-x64/runner.js +1 -0
  23. package/lib/providers/docker-images/lambda/linux-x64/runner.sh +2 -2
  24. package/lib/providers/fargate.d.ts +0 -10
  25. package/lib/providers/fargate.js +4 -4
  26. package/lib/providers/image-builders/codebuild.js +4 -2
  27. package/lib/providers/image-builders/container.js +7 -4
  28. package/lib/providers/image-builders/static.js +1 -1
  29. package/lib/providers/lambda.js +3 -15
  30. package/lib/runner.js +1 -1
  31. package/lib/secrets.js +1 -1
  32. package/package.json +13 -13
package/API.md CHANGED
@@ -2629,16 +2629,6 @@ Provider running an image to run inside CodeBuild with GitHub runner pre-configu
2629
2629
 
2630
2630
  A user named `runner` is expected to exist.
2631
2631
 
2632
- The entry point should start GitHub runner. For example:
2633
-
2634
- ```
2635
- #!/bin/bash
2636
- set -e -u -o pipefail
2637
-
2638
- /home/runner/config.sh --unattended --url "https://${GITHUB_DOMAIN}/${OWNER}/${REPO}" --token "${RUNNER_TOKEN}" --ephemeral --work _work --labels "${RUNNER_LABEL}" --disableupdate --name "${RUNNER_NAME}"
2639
- /home/runner/run.sh
2640
- ```
2641
-
2642
2632
  ---
2643
2633
 
2644
2634
  ##### `label`<sup>Optional</sup> <a name="label" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.label"></a>
package/README.md CHANGED
@@ -100,9 +100,9 @@ let bucket: s3.Bucket;
100
100
 
101
101
  // create a custom CodeBuild provider
102
102
  const myProvider = new CodeBuildRunner(this, 'codebuild runner', {
103
- label: 'my-codebuild',
104
- vpc: vpc,
105
- securityGroup: runnerSg,
103
+ label: 'my-codebuild',
104
+ vpc: vpc,
105
+ securityGroup: runnerSg,
106
106
  });
107
107
  // grant some permissions to the provider
108
108
  bucket.grantReadWrite(myProvider);
@@ -110,7 +110,7 @@ dbSg.connections.allowFrom(runnerSg, ec2.Port.tcp(3306), 'allow runners to conne
110
110
 
111
111
  // create the runner infrastructure
112
112
  new GitHubRunners(this, 'runners', {
113
- providers: [myProvider],
113
+ providers: [myProvider],
114
114
  });
115
115
  ```
116
116
 
@@ -118,21 +118,22 @@ Another way to customize runners is by modifying the image used to spin them up.
118
118
 
119
119
  ```typescript
120
120
  const myBuilder = new CodeBuildImageBuilder(this, 'image builder', {
121
- dockerfilePath: FargateProvider.LINUX_X64_DOCKERFILE_PATH,
122
- runnerVersion: RunnerVersion.specific('2.291.0'),
123
- rebuildInterval: Duration.days(14),
121
+ dockerfilePath: FargateRunner.LINUX_X64_DOCKERFILE_PATH,
122
+ runnerVersion: RunnerVersion.specific('2.291.0'),
123
+ rebuildInterval: Duration.days(14),
124
124
  });
125
125
  myBuilder.setBuildArg('EXTRA_PACKAGES', 'nginx xz-utils');
126
126
 
127
- const myProvider = new FargateProvider(this, 'fargate runner', {
128
- label: 'customized-fargate',
129
- vpc: vpc,
130
- securityGroup: runnerSg,
127
+ const myProvider = new FargateRunner(this, 'fargate runner', {
128
+ label: 'customized-fargate',
129
+ vpc: vpc,
130
+ securityGroup: runnerSg,
131
+ imageBuilder: myBuilder,
131
132
  });
132
133
 
133
134
  // create the runner infrastructure
134
135
  new GitHubRunners(stack, 'runners', {
135
- providers: [myProvider],
136
+ providers: [myProvider],
136
137
  });
137
138
  ```
138
139
 
@@ -148,6 +149,41 @@ jobs:
148
149
  - run: echo hello world
149
150
  ```
150
151
 
152
+ Windows images must be built with AWS Image Builder.
153
+
154
+ ```typescript
155
+ const myWindowsBuilder = new ContainerImageBuilder(this, 'Windows image builder', {
156
+ architecture: Architecture.X86_64,
157
+ os: Os.WINDOWS,
158
+ runnerVersion: RunnerVersion.specific('2.291.0'),
159
+ rebuildInterval: Duration.days(14),
160
+ });
161
+ myWindowsBuilder.addComponent(new ImageBuilderComponent(this, 'Ninja Component',
162
+ {
163
+ displayName: 'Ninja',
164
+ description: 'Download and install Ninja build system',
165
+ platform: 'Windows',
166
+ commands: [
167
+ 'Invoke-WebRequest -UseBasicParsing -Uri "https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip" -OutFile ninja.zip',
168
+ 'Expand-Archive ninja.zip -DestinationPath C:\\actions',
169
+ 'del ninja.zip',
170
+ ],
171
+ }
172
+ ));
173
+
174
+ const myProvider = new FargateRunner(this, 'fargate runner', {
175
+ label: 'customized-windows-fargate',
176
+ vpc: vpc,
177
+ securityGroup: runnerSg,
178
+ imageBuiler: myWindowsBuilder,
179
+ });
180
+
181
+ // create the runner infrastructure
182
+ new GitHubRunners(stack, 'runners', {
183
+ providers: [myProvider],
184
+ });
185
+ ```
186
+
151
187
  ## Architecture
152
188
 
153
189
  ![Architecture diagram](architecture.svg)
@@ -2293,51 +2293,91 @@ var require_subset = __commonJS({
2293
2293
  var require_semver2 = __commonJS({
2294
2294
  "node_modules/semver/index.js"(exports, module2) {
2295
2295
  var internalRe = require_re();
2296
+ var constants = require_constants();
2297
+ var SemVer = require_semver();
2298
+ var identifiers = require_identifiers();
2299
+ var parse = require_parse();
2300
+ var valid = require_valid();
2301
+ var clean = require_clean();
2302
+ var inc2 = require_inc();
2303
+ var diff = require_diff();
2304
+ var major = require_major();
2305
+ var minor = require_minor();
2306
+ var patch = require_patch();
2307
+ var prerelease = require_prerelease();
2308
+ var compare = require_compare();
2309
+ var rcompare = require_rcompare();
2310
+ var compareLoose = require_compare_loose();
2311
+ var compareBuild = require_compare_build();
2312
+ var sort = require_sort();
2313
+ var rsort = require_rsort();
2314
+ var gt = require_gt();
2315
+ var lt = require_lt();
2316
+ var eq = require_eq();
2317
+ var neq = require_neq();
2318
+ var gte = require_gte();
2319
+ var lte = require_lte();
2320
+ var cmp = require_cmp();
2321
+ var coerce = require_coerce();
2322
+ var Comparator = require_comparator();
2323
+ var Range = require_range();
2324
+ var satisfies = require_satisfies();
2325
+ var toComparators = require_to_comparators();
2326
+ var maxSatisfying2 = require_max_satisfying();
2327
+ var minSatisfying = require_min_satisfying();
2328
+ var minVersion = require_min_version();
2329
+ var validRange = require_valid2();
2330
+ var outside = require_outside();
2331
+ var gtr = require_gtr();
2332
+ var ltr = require_ltr();
2333
+ var intersects = require_intersects();
2334
+ var simplifyRange = require_simplify();
2335
+ var subset = require_subset();
2296
2336
  module2.exports = {
2337
+ parse,
2338
+ valid,
2339
+ clean,
2340
+ inc: inc2,
2341
+ diff,
2342
+ major,
2343
+ minor,
2344
+ patch,
2345
+ prerelease,
2346
+ compare,
2347
+ rcompare,
2348
+ compareLoose,
2349
+ compareBuild,
2350
+ sort,
2351
+ rsort,
2352
+ gt,
2353
+ lt,
2354
+ eq,
2355
+ neq,
2356
+ gte,
2357
+ lte,
2358
+ cmp,
2359
+ coerce,
2360
+ Comparator,
2361
+ Range,
2362
+ satisfies,
2363
+ toComparators,
2364
+ maxSatisfying: maxSatisfying2,
2365
+ minSatisfying,
2366
+ minVersion,
2367
+ validRange,
2368
+ outside,
2369
+ gtr,
2370
+ ltr,
2371
+ intersects,
2372
+ simplifyRange,
2373
+ subset,
2374
+ SemVer,
2297
2375
  re: internalRe.re,
2298
2376
  src: internalRe.src,
2299
2377
  tokens: internalRe.t,
2300
- SEMVER_SPEC_VERSION: require_constants().SEMVER_SPEC_VERSION,
2301
- SemVer: require_semver(),
2302
- compareIdentifiers: require_identifiers().compareIdentifiers,
2303
- rcompareIdentifiers: require_identifiers().rcompareIdentifiers,
2304
- parse: require_parse(),
2305
- valid: require_valid(),
2306
- clean: require_clean(),
2307
- inc: require_inc(),
2308
- diff: require_diff(),
2309
- major: require_major(),
2310
- minor: require_minor(),
2311
- patch: require_patch(),
2312
- prerelease: require_prerelease(),
2313
- compare: require_compare(),
2314
- rcompare: require_rcompare(),
2315
- compareLoose: require_compare_loose(),
2316
- compareBuild: require_compare_build(),
2317
- sort: require_sort(),
2318
- rsort: require_rsort(),
2319
- gt: require_gt(),
2320
- lt: require_lt(),
2321
- eq: require_eq(),
2322
- neq: require_neq(),
2323
- gte: require_gte(),
2324
- lte: require_lte(),
2325
- cmp: require_cmp(),
2326
- coerce: require_coerce(),
2327
- Comparator: require_comparator(),
2328
- Range: require_range(),
2329
- satisfies: require_satisfies(),
2330
- toComparators: require_to_comparators(),
2331
- maxSatisfying: require_max_satisfying(),
2332
- minSatisfying: require_min_satisfying(),
2333
- minVersion: require_min_version(),
2334
- validRange: require_valid2(),
2335
- outside: require_outside(),
2336
- gtr: require_gtr(),
2337
- ltr: require_ltr(),
2338
- intersects: require_intersects(),
2339
- simplifyRange: require_simplify(),
2340
- subset: require_subset()
2378
+ SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,
2379
+ compareIdentifiers: identifiers.compareIdentifiers,
2380
+ rcompareIdentifiers: identifiers.rcompareIdentifiers
2341
2381
  };
2342
2382
  }
2343
2383
  });
@@ -14372,7 +14372,10 @@ var require_before_after_hook = __commonJS({
14372
14372
  var bind = Function.bind;
14373
14373
  var bindable = bind.bind(bind);
14374
14374
  function bindApi(hook, state, name) {
14375
- var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]);
14375
+ var removeHookRef = bindable(removeHook, null).apply(
14376
+ null,
14377
+ name ? [state, name] : [state]
14378
+ );
14376
14379
  hook.api = { remove: removeHookRef };
14377
14380
  hook.remove = removeHookRef;
14378
14381
  ["before", "error", "after", "wrap"].forEach(function(kind) {
@@ -14400,7 +14403,9 @@ var require_before_after_hook = __commonJS({
14400
14403
  var collectionHookDeprecationMessageDisplayed = false;
14401
14404
  function Hook() {
14402
14405
  if (!collectionHookDeprecationMessageDisplayed) {
14403
- console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4');
14406
+ console.warn(
14407
+ '[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4'
14408
+ );
14404
14409
  collectionHookDeprecationMessageDisplayed = true;
14405
14410
  }
14406
14411
  return HookCollection();