@cloudsnorkel/cdk-github-runners 0.8.4 → 0.9.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 (77) hide show
  1. package/.jsii +2257 -744
  2. package/API.md +2005 -558
  3. package/README.md +29 -31
  4. package/assets/docker-images/codebuild/linux-arm64/Dockerfile +2 -0
  5. package/assets/docker-images/codebuild/linux-x64/Dockerfile +2 -0
  6. package/assets/docker-images/fargate/linux-arm64/Dockerfile +2 -0
  7. package/assets/docker-images/fargate/linux-x64/Dockerfile +2 -0
  8. package/assets/docker-images/lambda/linux-arm64/Dockerfile +3 -1
  9. package/assets/docker-images/lambda/linux-arm64/runner.sh +1 -1
  10. package/assets/docker-images/lambda/linux-x64/Dockerfile +3 -1
  11. package/assets/docker-images/lambda/linux-x64/runner.sh +1 -1
  12. package/assets/lambdas/setup.lambda/index.html +1 -1
  13. package/lib/index.js +7 -3
  14. package/lib/lambdas/aws-image-builder-versioner.lambda.js +6 -6
  15. package/lib/lambdas/build-image.lambda.js +4 -4
  16. package/lib/lambdas/delete-ami.lambda.js +4 -4
  17. package/lib/lambdas/delete-runner.lambda.js +2 -2
  18. package/lib/lambdas/github.js +3 -3
  19. package/lib/lambdas/setup.lambda.js +16 -16
  20. package/lib/lambdas/status.lambda.js +5 -5
  21. package/lib/lambdas/token-retriever.lambda.js +2 -2
  22. package/lib/lambdas/webhook-handler.lambda.js +2 -2
  23. package/lib/providers/codebuild.d.ts +24 -4
  24. package/lib/providers/codebuild.js +42 -12
  25. package/lib/providers/common.d.ts +17 -39
  26. package/lib/providers/common.js +26 -16
  27. package/lib/providers/ec2.d.ts +23 -5
  28. package/lib/providers/ec2.js +43 -12
  29. package/lib/providers/fargate.d.ts +21 -4
  30. package/lib/providers/fargate.js +50 -20
  31. package/lib/providers/image-builders/api.d.ts +15 -0
  32. package/lib/providers/image-builders/api.js +47 -0
  33. package/lib/providers/image-builders/aws-image-builder/ami.d.ts +43 -0
  34. package/lib/providers/image-builders/aws-image-builder/ami.js +81 -0
  35. package/lib/providers/image-builders/aws-image-builder/builder.d.ts +133 -0
  36. package/lib/providers/image-builders/aws-image-builder/builder.js +488 -0
  37. package/lib/providers/image-builders/aws-image-builder/common.d.ts +10 -0
  38. package/lib/providers/image-builders/aws-image-builder/common.js +46 -0
  39. package/lib/providers/image-builders/aws-image-builder/container.d.ts +58 -0
  40. package/lib/providers/image-builders/aws-image-builder/container.js +63 -0
  41. package/lib/providers/image-builders/{ami.d.ts → aws-image-builder/deprecated/ami.d.ts} +8 -4
  42. package/lib/providers/image-builders/aws-image-builder/deprecated/ami.js +239 -0
  43. package/lib/providers/image-builders/aws-image-builder/deprecated/common.d.ts +34 -0
  44. package/lib/providers/image-builders/aws-image-builder/deprecated/common.js +139 -0
  45. package/lib/providers/image-builders/{container.d.ts → aws-image-builder/deprecated/container.d.ts} +8 -4
  46. package/lib/providers/image-builders/aws-image-builder/deprecated/container.js +222 -0
  47. package/lib/providers/image-builders/aws-image-builder/deprecated/index.d.ts +5 -0
  48. package/lib/providers/image-builders/aws-image-builder/deprecated/index.js +22 -0
  49. package/lib/providers/image-builders/{linux-components.d.ts → aws-image-builder/deprecated/linux-components.d.ts} +4 -2
  50. package/lib/providers/image-builders/aws-image-builder/deprecated/linux-components.js +180 -0
  51. package/lib/providers/image-builders/{windows-components.d.ts → aws-image-builder/deprecated/windows-components.d.ts} +4 -2
  52. package/lib/providers/image-builders/aws-image-builder/deprecated/windows-components.js +142 -0
  53. package/lib/providers/image-builders/aws-image-builder/index.d.ts +5 -0
  54. package/lib/providers/image-builders/aws-image-builder/index.js +22 -0
  55. package/lib/providers/image-builders/codebuild-deprecated.d.ts +195 -0
  56. package/lib/providers/image-builders/codebuild-deprecated.js +373 -0
  57. package/lib/providers/image-builders/codebuild.d.ts +26 -157
  58. package/lib/providers/image-builders/codebuild.js +118 -210
  59. package/lib/providers/image-builders/common.d.ts +164 -107
  60. package/lib/providers/image-builders/common.js +30 -272
  61. package/lib/providers/image-builders/components.d.ts +114 -0
  62. package/lib/providers/image-builders/components.js +534 -0
  63. package/lib/providers/image-builders/index.d.ts +6 -4
  64. package/lib/providers/image-builders/index.js +13 -7
  65. package/lib/providers/image-builders/static.d.ts +4 -3
  66. package/lib/providers/image-builders/static.js +10 -10
  67. package/lib/providers/index.js +7 -3
  68. package/lib/providers/lambda.d.ts +25 -6
  69. package/lib/providers/lambda.js +50 -13
  70. package/lib/runner.d.ts +3 -5
  71. package/lib/runner.js +3 -3
  72. package/lib/secrets.js +3 -3
  73. package/package.json +7 -11
  74. package/lib/providers/image-builders/ami.js +0 -280
  75. package/lib/providers/image-builders/container.js +0 -247
  76. package/lib/providers/image-builders/linux-components.js +0 -177
  77. package/lib/providers/image-builders/windows-components.js +0 -139
package/API.md CHANGED
@@ -4,11 +4,11 @@
4
4
 
5
5
  ### AmiBuilder <a name="AmiBuilder" id="@cloudsnorkel/cdk-github-runners.AmiBuilder"></a>
6
6
 
7
- - *Implements:* <a href="#@cloudsnorkel/cdk-github-runners.IAmiBuilder">IAmiBuilder</a>, aws-cdk-lib.aws_ec2.IConnectable
7
+ - *Implements:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder">IRunnerImageBuilder</a>
8
8
 
9
9
  An AMI builder that uses AWS Image Builder to build AMIs pre-baked with all the GitHub Actions runner requirements.
10
10
 
11
- Builders can be used with {@link Ec2Runner}.
11
+ Builders can be used with {@link Ec2Runner }.
12
12
 
13
13
  Each builder re-runs automatically at a set interval to make sure the AMIs contain the latest versions of everything.
14
14
 
@@ -18,21 +18,21 @@ For example, to set a specific runner version, rebuild the image every 2 weeks,
18
18
 
19
19
  ```
20
20
  const builder = new AmiBuilder(this, 'Builder', {
21
- runnerVersion: RunnerVersion.specific('2.293.0'),
22
- rebuildInterval: Duration.days(14),
21
+ runnerVersion: RunnerVersion.specific('2.293.0'),
22
+ rebuildInterval: Duration.days(14),
23
23
  });
24
24
  builder.addComponent(new ImageBuilderComponent(scope, id, {
25
- platform: 'Linux',
26
- displayName: 'p7zip',
27
- description: 'Install some more packages',
28
- commands: [
29
- 'set -ex',
30
- 'apt-get install p7zip',
31
- ],
25
+ platform: 'Linux',
26
+ displayName: 'p7zip',
27
+ description: 'Install some more packages',
28
+ commands: [
29
+ 'set -ex',
30
+ 'apt-get install p7zip',
31
+ ],
32
32
  }));
33
33
  new Ec2Runner(this, 'EC2 provider', {
34
- label: 'custom-ec2',
35
- amiBuilder: builder,
34
+ label: 'custom-ec2',
35
+ amiBuilder: builder,
36
36
  });
37
37
  ```
38
38
 
@@ -77,12 +77,13 @@ new AmiBuilder(scope: Construct, id: string, props?: AmiBuilderProps)
77
77
  | <code><a href="#@cloudsnorkel/cdk-github-runners.AmiBuilder.toString">toString</a></code> | Returns a string representation of this construct. |
78
78
  | <code><a href="#@cloudsnorkel/cdk-github-runners.AmiBuilder.addComponent">addComponent</a></code> | Add a component to be installed. |
79
79
  | <code><a href="#@cloudsnorkel/cdk-github-runners.AmiBuilder.addExtraCertificates">addExtraCertificates</a></code> | Add extra trusted certificates. |
80
- | <code><a href="#@cloudsnorkel/cdk-github-runners.AmiBuilder.bind">bind</a></code> | Called by IRunnerProvider to finalize settings and create the AMI builder. |
80
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.AmiBuilder.bindAmi">bindAmi</a></code> | Called by IRunnerProvider to finalize settings and create the AMI builder. |
81
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.AmiBuilder.bindDockerImage">bindDockerImage</a></code> | Build and return a Docker image with GitHub Runner installed in it. |
81
82
  | <code><a href="#@cloudsnorkel/cdk-github-runners.AmiBuilder.prependComponent">prependComponent</a></code> | Add a component to be installed before any other components. |
82
83
 
83
84
  ---
84
85
 
85
- ##### `toString` <a name="toString" id="@cloudsnorkel/cdk-github-runners.AmiBuilder.toString"></a>
86
+ ##### ~~`toString`~~ <a name="toString" id="@cloudsnorkel/cdk-github-runners.AmiBuilder.toString"></a>
86
87
 
87
88
  ```typescript
88
89
  public toString(): string
@@ -90,7 +91,7 @@ public toString(): string
90
91
 
91
92
  Returns a string representation of this construct.
92
93
 
93
- ##### `addComponent` <a name="addComponent" id="@cloudsnorkel/cdk-github-runners.AmiBuilder.addComponent"></a>
94
+ ##### ~~`addComponent`~~ <a name="addComponent" id="@cloudsnorkel/cdk-github-runners.AmiBuilder.addComponent"></a>
94
95
 
95
96
  ```typescript
96
97
  public addComponent(component: ImageBuilderComponent): void
@@ -104,7 +105,7 @@ Add a component to be installed.
104
105
 
105
106
  ---
106
107
 
107
- ##### `addExtraCertificates` <a name="addExtraCertificates" id="@cloudsnorkel/cdk-github-runners.AmiBuilder.addExtraCertificates"></a>
108
+ ##### ~~`addExtraCertificates`~~ <a name="addExtraCertificates" id="@cloudsnorkel/cdk-github-runners.AmiBuilder.addExtraCertificates"></a>
108
109
 
109
110
  ```typescript
110
111
  public addExtraCertificates(path: string): void
@@ -122,15 +123,29 @@ path to directory containing a file called certs.pem containing all the required
122
123
 
123
124
  ---
124
125
 
125
- ##### `bind` <a name="bind" id="@cloudsnorkel/cdk-github-runners.AmiBuilder.bind"></a>
126
+ ##### ~~`bindAmi`~~ <a name="bindAmi" id="@cloudsnorkel/cdk-github-runners.AmiBuilder.bindAmi"></a>
126
127
 
127
128
  ```typescript
128
- public bind(): RunnerAmi
129
+ public bindAmi(): RunnerAmi
129
130
  ```
130
131
 
131
132
  Called by IRunnerProvider to finalize settings and create the AMI builder.
132
133
 
133
- ##### `prependComponent` <a name="prependComponent" id="@cloudsnorkel/cdk-github-runners.AmiBuilder.prependComponent"></a>
134
+ ##### ~~`bindDockerImage`~~ <a name="bindDockerImage" id="@cloudsnorkel/cdk-github-runners.AmiBuilder.bindDockerImage"></a>
135
+
136
+ ```typescript
137
+ public bindDockerImage(): RunnerImage
138
+ ```
139
+
140
+ Build and return a Docker image with GitHub Runner installed in it.
141
+
142
+ Anything that ends up with an ECR repository containing a Docker image that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing image and nothing else.
143
+
144
+ It's important that the specified image tag be available at the time the repository is available. Providers usually assume the image is ready and will fail if it's not.
145
+
146
+ The image can be further updated over time manually or using a schedule as long as it is always written to the same tag.
147
+
148
+ ##### ~~`prependComponent`~~ <a name="prependComponent" id="@cloudsnorkel/cdk-github-runners.AmiBuilder.prependComponent"></a>
134
149
 
135
150
  ```typescript
136
151
  public prependComponent(component: ImageBuilderComponent): void
@@ -181,7 +196,9 @@ Any object.
181
196
 
182
197
  ---
183
198
 
184
- ##### `node`<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.AmiBuilder.property.node"></a>
199
+ ##### ~~`node`~~<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.AmiBuilder.property.node"></a>
200
+
201
+ - *Deprecated:* use RunnerImageBuilder
185
202
 
186
203
  ```typescript
187
204
  public readonly node: Node;
@@ -193,7 +210,9 @@ The tree node.
193
210
 
194
211
  ---
195
212
 
196
- ##### `connections`<sup>Required</sup> <a name="connections" id="@cloudsnorkel/cdk-github-runners.AmiBuilder.property.connections"></a>
213
+ ##### ~~`connections`~~<sup>Required</sup> <a name="connections" id="@cloudsnorkel/cdk-github-runners.AmiBuilder.property.connections"></a>
214
+
215
+ - *Deprecated:* use RunnerImageBuilder
197
216
 
198
217
  ```typescript
199
218
  public readonly connections: Connections;
@@ -208,7 +227,7 @@ The network connections associated with this resource.
208
227
 
209
228
  ### CodeBuildImageBuilder <a name="CodeBuildImageBuilder" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder"></a>
210
229
 
211
- - *Implements:* <a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder">IImageBuilder</a>
230
+ - *Implements:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder">IRunnerImageBuilder</a>
212
231
 
213
232
  An image builder that uses CodeBuild to build Docker images pre-baked with all the GitHub Actions runner requirements.
214
233
 
@@ -222,14 +241,14 @@ For example, to set a specific runner version, rebuild the image every 2 weeks,
222
241
 
223
242
  ```
224
243
  const builder = new CodeBuildImageBuilder(this, 'Builder', {
225
- dockerfilePath: FargateProvider.LINUX_X64_DOCKERFILE_PATH,
226
- runnerVersion: RunnerVersion.specific('2.293.0'),
227
- rebuildInterval: Duration.days(14),
244
+ dockerfilePath: FargateProvider.LINUX_X64_DOCKERFILE_PATH,
245
+ runnerVersion: RunnerVersion.specific('2.293.0'),
246
+ rebuildInterval: Duration.days(14),
228
247
  });
229
248
  builder.setBuildArg('EXTRA_PACKAGES', 'nginx xz-utils');
230
249
  new FargateRunner(this, 'Fargate provider', {
231
- label: 'customized-fargate',
232
- imageBuilder: builder,
250
+ label: 'customized-fargate',
251
+ imageBuilder: builder,
233
252
  });
234
253
  ```
235
254
 
@@ -277,12 +296,13 @@ new CodeBuildImageBuilder(scope: Construct, id: string, props: CodeBuildImageBui
277
296
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.addPolicyStatement">addPolicyStatement</a></code> | Add a policy statement to the builder to access resources required to the image build. |
278
297
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.addPostBuildCommand">addPostBuildCommand</a></code> | Adds a command that runs after `docker build` and `docker push`. |
279
298
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.addPreBuildCommand">addPreBuildCommand</a></code> | Adds a command that runs before `docker build`. |
280
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.bind">bind</a></code> | Called by IRunnerProvider to finalize settings and create the image builder. |
299
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.bindAmi">bindAmi</a></code> | Build and return an AMI with GitHub Runner installed in it. |
300
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.bindDockerImage">bindDockerImage</a></code> | Called by IRunnerProvider to finalize settings and create the image builder. |
281
301
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.setBuildArg">setBuildArg</a></code> | Adds a build argument for Docker. |
282
302
 
283
303
  ---
284
304
 
285
- ##### `toString` <a name="toString" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.toString"></a>
305
+ ##### ~~`toString`~~ <a name="toString" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.toString"></a>
286
306
 
287
307
  ```typescript
288
308
  public toString(): string
@@ -290,7 +310,7 @@ public toString(): string
290
310
 
291
311
  Returns a string representation of this construct.
292
312
 
293
- ##### `addExtraCertificates` <a name="addExtraCertificates" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.addExtraCertificates"></a>
313
+ ##### ~~`addExtraCertificates`~~ <a name="addExtraCertificates" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.addExtraCertificates"></a>
294
314
 
295
315
  ```typescript
296
316
  public addExtraCertificates(path: string): void
@@ -308,7 +328,7 @@ path to directory containing a file called certs.pem containing all the required
308
328
 
309
329
  ---
310
330
 
311
- ##### `addFiles` <a name="addFiles" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.addFiles"></a>
331
+ ##### ~~`addFiles`~~ <a name="addFiles" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.addFiles"></a>
312
332
 
313
333
  ```typescript
314
334
  public addFiles(sourcePath: string, destName: string): void
@@ -332,7 +352,7 @@ name of destination folder.
332
352
 
333
353
  ---
334
354
 
335
- ##### `addPolicyStatement` <a name="addPolicyStatement" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.addPolicyStatement"></a>
355
+ ##### ~~`addPolicyStatement`~~ <a name="addPolicyStatement" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.addPolicyStatement"></a>
336
356
 
337
357
  ```typescript
338
358
  public addPolicyStatement(statement: PolicyStatement): void
@@ -348,7 +368,7 @@ IAM policy statement.
348
368
 
349
369
  ---
350
370
 
351
- ##### `addPostBuildCommand` <a name="addPostBuildCommand" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.addPostBuildCommand"></a>
371
+ ##### ~~`addPostBuildCommand`~~ <a name="addPostBuildCommand" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.addPostBuildCommand"></a>
352
372
 
353
373
  ```typescript
354
374
  public addPostBuildCommand(command: string): void
@@ -364,7 +384,7 @@ command to add.
364
384
 
365
385
  ---
366
386
 
367
- ##### `addPreBuildCommand` <a name="addPreBuildCommand" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.addPreBuildCommand"></a>
387
+ ##### ~~`addPreBuildCommand`~~ <a name="addPreBuildCommand" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.addPreBuildCommand"></a>
368
388
 
369
389
  ```typescript
370
390
  public addPreBuildCommand(command: string): void
@@ -380,15 +400,27 @@ command to add.
380
400
 
381
401
  ---
382
402
 
383
- ##### `bind` <a name="bind" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.bind"></a>
403
+ ##### ~~`bindAmi`~~ <a name="bindAmi" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.bindAmi"></a>
404
+
405
+ ```typescript
406
+ public bindAmi(): RunnerAmi
407
+ ```
408
+
409
+ Build and return an AMI with GitHub Runner installed in it.
410
+
411
+ Anything that ends up with a launch template pointing to an AMI that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing AMI and nothing else.
412
+
413
+ The AMI can be further updated over time manually or using a schedule as long as it is always written to the same launch template.
414
+
415
+ ##### ~~`bindDockerImage`~~ <a name="bindDockerImage" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.bindDockerImage"></a>
384
416
 
385
417
  ```typescript
386
- public bind(): RunnerImage
418
+ public bindDockerImage(): RunnerImage
387
419
  ```
388
420
 
389
421
  Called by IRunnerProvider to finalize settings and create the image builder.
390
422
 
391
- ##### `setBuildArg` <a name="setBuildArg" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.setBuildArg"></a>
423
+ ##### ~~`setBuildArg`~~ <a name="setBuildArg" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.setBuildArg"></a>
392
424
 
393
425
  ```typescript
394
426
  public setBuildArg(name: string, value: string): void
@@ -445,11 +477,14 @@ Any object.
445
477
  | **Name** | **Type** | **Description** |
446
478
  | --- | --- | --- |
447
479
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
480
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.property.connections">connections</a></code> | <code>aws-cdk-lib.aws_ec2.Connections</code> | *No description.* |
448
481
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.property.props">props</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilderProps">CodeBuildImageBuilderProps</a></code> | *No description.* |
449
482
 
450
483
  ---
451
484
 
452
- ##### `node`<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.property.node"></a>
485
+ ##### ~~`node`~~<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.property.node"></a>
486
+
487
+ - *Deprecated:* use RunnerImageBuilder
453
488
 
454
489
  ```typescript
455
490
  public readonly node: Node;
@@ -461,7 +496,21 @@ The tree node.
461
496
 
462
497
  ---
463
498
 
464
- ##### `props`<sup>Required</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.property.props"></a>
499
+ ##### ~~`connections`~~<sup>Required</sup> <a name="connections" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.property.connections"></a>
500
+
501
+ - *Deprecated:* use RunnerImageBuilder
502
+
503
+ ```typescript
504
+ public readonly connections: Connections;
505
+ ```
506
+
507
+ - *Type:* aws-cdk-lib.aws_ec2.Connections
508
+
509
+ ---
510
+
511
+ ##### ~~`props`~~<sup>Required</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.property.props"></a>
512
+
513
+ - *Deprecated:* use RunnerImageBuilder
465
514
 
466
515
  ```typescript
467
516
  public readonly props: CodeBuildImageBuilderProps;
@@ -583,6 +632,7 @@ Also gives the status function any needed permissions to query the Docker image
583
632
  | **Name** | **Description** |
584
633
  | --- | --- |
585
634
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
635
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner.imageBuilder">imageBuilder</a></code> | Create new image builder that builds CodeBuild specific runner images using Ubuntu. |
586
636
 
587
637
  ---
588
638
 
@@ -604,6 +654,43 @@ Any object.
604
654
 
605
655
  ---
606
656
 
657
+ ##### ~~`imageBuilder`~~ <a name="imageBuilder" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.imageBuilder"></a>
658
+
659
+ ```typescript
660
+ import { CodeBuildRunner } from '@cloudsnorkel/cdk-github-runners'
661
+
662
+ CodeBuildRunner.imageBuilder(scope: Construct, id: string, props?: RunnerImageBuilderProps)
663
+ ```
664
+
665
+ Create new image builder that builds CodeBuild specific runner images using Ubuntu.
666
+
667
+ Included components:
668
+ * `RunnerImageComponent.requiredPackages()`
669
+ * `RunnerImageComponent.runnerUser()`
670
+ * `RunnerImageComponent.git()`
671
+ * `RunnerImageComponent.githubCli()`
672
+ * `RunnerImageComponent.awsCli()`
673
+ * `RunnerImageComponent.dockerInDocker()`
674
+ * `RunnerImageComponent.githubRunner()`
675
+
676
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.imageBuilder.parameter.scope"></a>
677
+
678
+ - *Type:* constructs.Construct
679
+
680
+ ---
681
+
682
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.imageBuilder.parameter.id"></a>
683
+
684
+ - *Type:* string
685
+
686
+ ---
687
+
688
+ ###### `props`<sup>Optional</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.imageBuilder.parameter.props"></a>
689
+
690
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps">RunnerImageBuilderProps</a>
691
+
692
+ ---
693
+
607
694
  #### Properties <a name="Properties" id="Properties"></a>
608
695
 
609
696
  | **Name** | **Type** | **Description** |
@@ -620,7 +707,7 @@ Any object.
620
707
 
621
708
  ##### ~~`node`~~<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.node"></a>
622
709
 
623
- - *Deprecated:* use {@link CodeBuildRunnerProvider}
710
+ - *Deprecated:* use {@link CodeBuildRunnerProvider }
624
711
 
625
712
  ```typescript
626
713
  public readonly node: Node;
@@ -634,7 +721,7 @@ The tree node.
634
721
 
635
722
  ##### ~~`connections`~~<sup>Required</sup> <a name="connections" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.connections"></a>
636
723
 
637
- - *Deprecated:* use {@link CodeBuildRunnerProvider}
724
+ - *Deprecated:* use {@link CodeBuildRunnerProvider }
638
725
 
639
726
  ```typescript
640
727
  public readonly connections: Connections;
@@ -648,7 +735,7 @@ The network connections associated with this resource.
648
735
 
649
736
  ##### ~~`grantPrincipal`~~<sup>Required</sup> <a name="grantPrincipal" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.grantPrincipal"></a>
650
737
 
651
- - *Deprecated:* use {@link CodeBuildRunnerProvider}
738
+ - *Deprecated:* use {@link CodeBuildRunnerProvider }
652
739
 
653
740
  ```typescript
654
741
  public readonly grantPrincipal: IPrincipal;
@@ -662,7 +749,7 @@ Grant principal used to add permissions to the runner role.
662
749
 
663
750
  ##### ~~`image`~~<sup>Required</sup> <a name="image" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.image"></a>
664
751
 
665
- - *Deprecated:* use {@link CodeBuildRunnerProvider}
752
+ - *Deprecated:* use {@link CodeBuildRunnerProvider }
666
753
 
667
754
  ```typescript
668
755
  public readonly image: RunnerImage;
@@ -678,7 +765,7 @@ The image is built by an image builder and is specific to CodeBuild.
678
765
 
679
766
  ##### ~~`labels`~~<sup>Required</sup> <a name="labels" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.labels"></a>
680
767
 
681
- - *Deprecated:* use {@link CodeBuildRunnerProvider}
768
+ - *Deprecated:* use {@link CodeBuildRunnerProvider }
682
769
 
683
770
  ```typescript
684
771
  public readonly labels: string[];
@@ -692,7 +779,7 @@ Labels associated with this provider.
692
779
 
693
780
  ##### ~~`logGroup`~~<sup>Required</sup> <a name="logGroup" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.logGroup"></a>
694
781
 
695
- - *Deprecated:* use {@link CodeBuildRunnerProvider}
782
+ - *Deprecated:* use {@link CodeBuildRunnerProvider }
696
783
 
697
784
  ```typescript
698
785
  public readonly logGroup: ILogGroup;
@@ -708,7 +795,7 @@ Note that this is not the job log, but the runner itself. It will not contain ou
708
795
 
709
796
  ##### ~~`project`~~<sup>Required</sup> <a name="project" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.project"></a>
710
797
 
711
- - *Deprecated:* use {@link CodeBuildRunnerProvider}
798
+ - *Deprecated:* use {@link CodeBuildRunnerProvider }
712
799
 
713
800
  ```typescript
714
801
  public readonly project: Project;
@@ -731,7 +818,7 @@ CodeBuild project hosting the runner.
731
818
 
732
819
  ##### ~~`LINUX_ARM64_DOCKERFILE_PATH`~~<sup>Required</sup> <a name="LINUX_ARM64_DOCKERFILE_PATH" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.LINUX_ARM64_DOCKERFILE_PATH"></a>
733
820
 
734
- - *Deprecated:* use {@link CodeBuildRunnerProvider}
821
+ - *Deprecated:* Use `imageBuilder()` instead.
735
822
 
736
823
  ```typescript
737
824
  public readonly LINUX_ARM64_DOCKERFILE_PATH: string;
@@ -755,7 +842,7 @@ Available build arguments that can be set in the image builder:
755
842
 
756
843
  ##### ~~`LINUX_X64_DOCKERFILE_PATH`~~<sup>Required</sup> <a name="LINUX_X64_DOCKERFILE_PATH" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.LINUX_X64_DOCKERFILE_PATH"></a>
757
844
 
758
- - *Deprecated:* use {@link CodeBuildRunnerProvider}
845
+ - *Deprecated:* Use `imageBuilder()` instead.
759
846
 
760
847
  ```typescript
761
848
  public readonly LINUX_X64_DOCKERFILE_PATH: string;
@@ -896,6 +983,7 @@ Also gives the status function any needed permissions to query the Docker image
896
983
  | **Name** | **Description** |
897
984
  | --- | --- |
898
985
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProvider.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
986
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProvider.imageBuilder">imageBuilder</a></code> | Create new image builder that builds CodeBuild specific runner images using Ubuntu. |
899
987
 
900
988
  ---
901
989
 
@@ -917,6 +1005,43 @@ Any object.
917
1005
 
918
1006
  ---
919
1007
 
1008
+ ##### `imageBuilder` <a name="imageBuilder" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProvider.imageBuilder"></a>
1009
+
1010
+ ```typescript
1011
+ import { CodeBuildRunnerProvider } from '@cloudsnorkel/cdk-github-runners'
1012
+
1013
+ CodeBuildRunnerProvider.imageBuilder(scope: Construct, id: string, props?: RunnerImageBuilderProps)
1014
+ ```
1015
+
1016
+ Create new image builder that builds CodeBuild specific runner images using Ubuntu.
1017
+
1018
+ Included components:
1019
+ * `RunnerImageComponent.requiredPackages()`
1020
+ * `RunnerImageComponent.runnerUser()`
1021
+ * `RunnerImageComponent.git()`
1022
+ * `RunnerImageComponent.githubCli()`
1023
+ * `RunnerImageComponent.awsCli()`
1024
+ * `RunnerImageComponent.dockerInDocker()`
1025
+ * `RunnerImageComponent.githubRunner()`
1026
+
1027
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProvider.imageBuilder.parameter.scope"></a>
1028
+
1029
+ - *Type:* constructs.Construct
1030
+
1031
+ ---
1032
+
1033
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProvider.imageBuilder.parameter.id"></a>
1034
+
1035
+ - *Type:* string
1036
+
1037
+ ---
1038
+
1039
+ ###### `props`<sup>Optional</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProvider.imageBuilder.parameter.props"></a>
1040
+
1041
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps">RunnerImageBuilderProps</a>
1042
+
1043
+ ---
1044
+
920
1045
  #### Properties <a name="Properties" id="Properties"></a>
921
1046
 
922
1047
  | **Name** | **Type** | **Description** |
@@ -1028,7 +1153,9 @@ CodeBuild project hosting the runner.
1028
1153
 
1029
1154
  ---
1030
1155
 
1031
- ##### `LINUX_ARM64_DOCKERFILE_PATH`<sup>Required</sup> <a name="LINUX_ARM64_DOCKERFILE_PATH" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProvider.property.LINUX_ARM64_DOCKERFILE_PATH"></a>
1156
+ ##### ~~`LINUX_ARM64_DOCKERFILE_PATH`~~<sup>Required</sup> <a name="LINUX_ARM64_DOCKERFILE_PATH" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProvider.property.LINUX_ARM64_DOCKERFILE_PATH"></a>
1157
+
1158
+ - *Deprecated:* Use `imageBuilder()` instead.
1032
1159
 
1033
1160
  ```typescript
1034
1161
  public readonly LINUX_ARM64_DOCKERFILE_PATH: string;
@@ -1050,7 +1177,9 @@ Available build arguments that can be set in the image builder:
1050
1177
 
1051
1178
  ---
1052
1179
 
1053
- ##### `LINUX_X64_DOCKERFILE_PATH`<sup>Required</sup> <a name="LINUX_X64_DOCKERFILE_PATH" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProvider.property.LINUX_X64_DOCKERFILE_PATH"></a>
1180
+ ##### ~~`LINUX_X64_DOCKERFILE_PATH`~~<sup>Required</sup> <a name="LINUX_X64_DOCKERFILE_PATH" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProvider.property.LINUX_X64_DOCKERFILE_PATH"></a>
1181
+
1182
+ - *Deprecated:* Use `imageBuilder()` instead.
1054
1183
 
1055
1184
  ```typescript
1056
1185
  public readonly LINUX_X64_DOCKERFILE_PATH: string;
@@ -1074,7 +1203,7 @@ Available build arguments that can be set in the image builder:
1074
1203
 
1075
1204
  ### ContainerImageBuilder <a name="ContainerImageBuilder" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder"></a>
1076
1205
 
1077
- - *Implements:* <a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder">IImageBuilder</a>, aws-cdk-lib.aws_ec2.IConnectable
1206
+ - *Implements:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder">IRunnerImageBuilder</a>
1078
1207
 
1079
1208
  An image builder that uses AWS Image Builder to build Docker images pre-baked with all the GitHub Actions runner requirements.
1080
1209
 
@@ -1090,12 +1219,12 @@ For example, to set a specific runner version, rebuild the image every 2 weeks,
1090
1219
 
1091
1220
  ```
1092
1221
  const builder = new ContainerImageBuilder(this, 'Builder', {
1093
- runnerVersion: RunnerVersion.specific('2.293.0'),
1094
- rebuildInterval: Duration.days(14),
1222
+ runnerVersion: RunnerVersion.specific('2.293.0'),
1223
+ rebuildInterval: Duration.days(14),
1095
1224
  });
1096
1225
  new CodeBuildRunner(this, 'CodeBuild provider', {
1097
- label: 'custom-codebuild',
1098
- imageBuilder: builder,
1226
+ label: 'custom-codebuild',
1227
+ imageBuilder: builder,
1099
1228
  });
1100
1229
  ```
1101
1230
 
@@ -1140,12 +1269,13 @@ new ContainerImageBuilder(scope: Construct, id: string, props?: ContainerImageBu
1140
1269
  | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.toString">toString</a></code> | Returns a string representation of this construct. |
1141
1270
  | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.addComponent">addComponent</a></code> | Add a component to be installed. |
1142
1271
  | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.addExtraCertificates">addExtraCertificates</a></code> | Add extra trusted certificates. This helps deal with self-signed certificates for GitHub Enterprise Server. |
1143
- | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.bind">bind</a></code> | Called by IRunnerProvider to finalize settings and create the image builder. |
1272
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.bindAmi">bindAmi</a></code> | Build and return an AMI with GitHub Runner installed in it. |
1273
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.bindDockerImage">bindDockerImage</a></code> | Called by IRunnerProvider to finalize settings and create the image builder. |
1144
1274
  | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.prependComponent">prependComponent</a></code> | Add a component to be installed before any other components. |
1145
1275
 
1146
1276
  ---
1147
1277
 
1148
- ##### `toString` <a name="toString" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.toString"></a>
1278
+ ##### ~~`toString`~~ <a name="toString" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.toString"></a>
1149
1279
 
1150
1280
  ```typescript
1151
1281
  public toString(): string
@@ -1153,7 +1283,7 @@ public toString(): string
1153
1283
 
1154
1284
  Returns a string representation of this construct.
1155
1285
 
1156
- ##### `addComponent` <a name="addComponent" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.addComponent"></a>
1286
+ ##### ~~`addComponent`~~ <a name="addComponent" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.addComponent"></a>
1157
1287
 
1158
1288
  ```typescript
1159
1289
  public addComponent(component: ImageBuilderComponent): void
@@ -1167,7 +1297,7 @@ Add a component to be installed.
1167
1297
 
1168
1298
  ---
1169
1299
 
1170
- ##### `addExtraCertificates` <a name="addExtraCertificates" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.addExtraCertificates"></a>
1300
+ ##### ~~`addExtraCertificates`~~ <a name="addExtraCertificates" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.addExtraCertificates"></a>
1171
1301
 
1172
1302
  ```typescript
1173
1303
  public addExtraCertificates(path: string): void
@@ -1185,15 +1315,27 @@ path to directory containing a file called certs.pem containing all the required
1185
1315
 
1186
1316
  ---
1187
1317
 
1188
- ##### `bind` <a name="bind" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.bind"></a>
1318
+ ##### ~~`bindAmi`~~ <a name="bindAmi" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.bindAmi"></a>
1189
1319
 
1190
1320
  ```typescript
1191
- public bind(): RunnerImage
1321
+ public bindAmi(): RunnerAmi
1322
+ ```
1323
+
1324
+ Build and return an AMI with GitHub Runner installed in it.
1325
+
1326
+ Anything that ends up with a launch template pointing to an AMI that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing AMI and nothing else.
1327
+
1328
+ The AMI can be further updated over time manually or using a schedule as long as it is always written to the same launch template.
1329
+
1330
+ ##### ~~`bindDockerImage`~~ <a name="bindDockerImage" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.bindDockerImage"></a>
1331
+
1332
+ ```typescript
1333
+ public bindDockerImage(): RunnerImage
1192
1334
  ```
1193
1335
 
1194
1336
  Called by IRunnerProvider to finalize settings and create the image builder.
1195
1337
 
1196
- ##### `prependComponent` <a name="prependComponent" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.prependComponent"></a>
1338
+ ##### ~~`prependComponent`~~ <a name="prependComponent" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.prependComponent"></a>
1197
1339
 
1198
1340
  ```typescript
1199
1341
  public prependComponent(component: ImageBuilderComponent): void
@@ -1245,7 +1387,9 @@ Any object.
1245
1387
 
1246
1388
  ---
1247
1389
 
1248
- ##### `node`<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.node"></a>
1390
+ ##### ~~`node`~~<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.node"></a>
1391
+
1392
+ - *Deprecated:* use RunnerImageBuilder
1249
1393
 
1250
1394
  ```typescript
1251
1395
  public readonly node: Node;
@@ -1257,7 +1401,9 @@ The tree node.
1257
1401
 
1258
1402
  ---
1259
1403
 
1260
- ##### `connections`<sup>Required</sup> <a name="connections" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.connections"></a>
1404
+ ##### ~~`connections`~~<sup>Required</sup> <a name="connections" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.connections"></a>
1405
+
1406
+ - *Deprecated:* use RunnerImageBuilder
1261
1407
 
1262
1408
  ```typescript
1263
1409
  public readonly connections: Connections;
@@ -1269,7 +1415,9 @@ The network connections associated with this resource.
1269
1415
 
1270
1416
  ---
1271
1417
 
1272
- ##### `repository`<sup>Required</sup> <a name="repository" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.repository"></a>
1418
+ ##### ~~`repository`~~<sup>Required</sup> <a name="repository" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.repository"></a>
1419
+
1420
+ - *Deprecated:* use RunnerImageBuilder
1273
1421
 
1274
1422
  ```typescript
1275
1423
  public readonly repository: IRepository;
@@ -1391,6 +1539,7 @@ Also gives the status function any needed permissions to query the Docker image
1391
1539
  | **Name** | **Description** |
1392
1540
  | --- | --- |
1393
1541
  | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
1542
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.imageBuilder">imageBuilder</a></code> | Create new image builder that builds EC2 specific runner images using Ubuntu. |
1394
1543
 
1395
1544
  ---
1396
1545
 
@@ -1412,6 +1561,43 @@ Any object.
1412
1561
 
1413
1562
  ---
1414
1563
 
1564
+ ##### ~~`imageBuilder`~~ <a name="imageBuilder" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.imageBuilder"></a>
1565
+
1566
+ ```typescript
1567
+ import { Ec2Runner } from '@cloudsnorkel/cdk-github-runners'
1568
+
1569
+ Ec2Runner.imageBuilder(scope: Construct, id: string, props?: RunnerImageBuilderProps)
1570
+ ```
1571
+
1572
+ Create new image builder that builds EC2 specific runner images using Ubuntu.
1573
+
1574
+ Included components:
1575
+ * `RunnerImageComponent.requiredPackages()`
1576
+ * `RunnerImageComponent.runnerUser()`
1577
+ * `RunnerImageComponent.git()`
1578
+ * `RunnerImageComponent.githubCli()`
1579
+ * `RunnerImageComponent.awsCli()`
1580
+ * `RunnerImageComponent.docker()`
1581
+ * `RunnerImageComponent.githubRunner()`
1582
+
1583
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.imageBuilder.parameter.scope"></a>
1584
+
1585
+ - *Type:* constructs.Construct
1586
+
1587
+ ---
1588
+
1589
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.imageBuilder.parameter.id"></a>
1590
+
1591
+ - *Type:* string
1592
+
1593
+ ---
1594
+
1595
+ ###### `props`<sup>Optional</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.imageBuilder.parameter.props"></a>
1596
+
1597
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps">RunnerImageBuilderProps</a>
1598
+
1599
+ ---
1600
+
1415
1601
  #### Properties <a name="Properties" id="Properties"></a>
1416
1602
 
1417
1603
  | **Name** | **Type** | **Description** |
@@ -1426,7 +1612,7 @@ Any object.
1426
1612
 
1427
1613
  ##### ~~`node`~~<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.property.node"></a>
1428
1614
 
1429
- - *Deprecated:* use {@link Ec2RunnerProvider}
1615
+ - *Deprecated:* use {@link Ec2RunnerProvider }
1430
1616
 
1431
1617
  ```typescript
1432
1618
  public readonly node: Node;
@@ -1440,7 +1626,7 @@ The tree node.
1440
1626
 
1441
1627
  ##### ~~`connections`~~<sup>Required</sup> <a name="connections" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.property.connections"></a>
1442
1628
 
1443
- - *Deprecated:* use {@link Ec2RunnerProvider}
1629
+ - *Deprecated:* use {@link Ec2RunnerProvider }
1444
1630
 
1445
1631
  ```typescript
1446
1632
  public readonly connections: Connections;
@@ -1454,7 +1640,7 @@ The network connections associated with this resource.
1454
1640
 
1455
1641
  ##### ~~`grantPrincipal`~~<sup>Required</sup> <a name="grantPrincipal" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.property.grantPrincipal"></a>
1456
1642
 
1457
- - *Deprecated:* use {@link Ec2RunnerProvider}
1643
+ - *Deprecated:* use {@link Ec2RunnerProvider }
1458
1644
 
1459
1645
  ```typescript
1460
1646
  public readonly grantPrincipal: IPrincipal;
@@ -1468,7 +1654,7 @@ Grant principal used to add permissions to the runner role.
1468
1654
 
1469
1655
  ##### ~~`labels`~~<sup>Required</sup> <a name="labels" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.property.labels"></a>
1470
1656
 
1471
- - *Deprecated:* use {@link Ec2RunnerProvider}
1657
+ - *Deprecated:* use {@link Ec2RunnerProvider }
1472
1658
 
1473
1659
  ```typescript
1474
1660
  public readonly labels: string[];
@@ -1482,7 +1668,7 @@ Labels associated with this provider.
1482
1668
 
1483
1669
  ##### ~~`logGroup`~~<sup>Required</sup> <a name="logGroup" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.property.logGroup"></a>
1484
1670
 
1485
- - *Deprecated:* use {@link Ec2RunnerProvider}
1671
+ - *Deprecated:* use {@link Ec2RunnerProvider }
1486
1672
 
1487
1673
  ```typescript
1488
1674
  public readonly logGroup: ILogGroup;
@@ -1614,6 +1800,7 @@ Also gives the status function any needed permissions to query the Docker image
1614
1800
  | **Name** | **Description** |
1615
1801
  | --- | --- |
1616
1802
  | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProvider.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
1803
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProvider.imageBuilder">imageBuilder</a></code> | Create new image builder that builds EC2 specific runner images using Ubuntu. |
1617
1804
 
1618
1805
  ---
1619
1806
 
@@ -1635,6 +1822,43 @@ Any object.
1635
1822
 
1636
1823
  ---
1637
1824
 
1825
+ ##### `imageBuilder` <a name="imageBuilder" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProvider.imageBuilder"></a>
1826
+
1827
+ ```typescript
1828
+ import { Ec2RunnerProvider } from '@cloudsnorkel/cdk-github-runners'
1829
+
1830
+ Ec2RunnerProvider.imageBuilder(scope: Construct, id: string, props?: RunnerImageBuilderProps)
1831
+ ```
1832
+
1833
+ Create new image builder that builds EC2 specific runner images using Ubuntu.
1834
+
1835
+ Included components:
1836
+ * `RunnerImageComponent.requiredPackages()`
1837
+ * `RunnerImageComponent.runnerUser()`
1838
+ * `RunnerImageComponent.git()`
1839
+ * `RunnerImageComponent.githubCli()`
1840
+ * `RunnerImageComponent.awsCli()`
1841
+ * `RunnerImageComponent.docker()`
1842
+ * `RunnerImageComponent.githubRunner()`
1843
+
1844
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProvider.imageBuilder.parameter.scope"></a>
1845
+
1846
+ - *Type:* constructs.Construct
1847
+
1848
+ ---
1849
+
1850
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProvider.imageBuilder.parameter.id"></a>
1851
+
1852
+ - *Type:* string
1853
+
1854
+ ---
1855
+
1856
+ ###### `props`<sup>Optional</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProvider.imageBuilder.parameter.props"></a>
1857
+
1858
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps">RunnerImageBuilderProps</a>
1859
+
1860
+ ---
1861
+
1638
1862
  #### Properties <a name="Properties" id="Properties"></a>
1639
1863
 
1640
1864
  | **Name** | **Type** | **Description** |
@@ -1821,6 +2045,7 @@ Also gives the status function any needed permissions to query the Docker image
1821
2045
  | **Name** | **Description** |
1822
2046
  | --- | --- |
1823
2047
  | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunner.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
2048
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunner.imageBuilder">imageBuilder</a></code> | Create new image builder that builds Fargate specific runner images using Ubuntu. |
1824
2049
 
1825
2050
  ---
1826
2051
 
@@ -1842,6 +2067,42 @@ Any object.
1842
2067
 
1843
2068
  ---
1844
2069
 
2070
+ ##### ~~`imageBuilder`~~ <a name="imageBuilder" id="@cloudsnorkel/cdk-github-runners.FargateRunner.imageBuilder"></a>
2071
+
2072
+ ```typescript
2073
+ import { FargateRunner } from '@cloudsnorkel/cdk-github-runners'
2074
+
2075
+ FargateRunner.imageBuilder(scope: Construct, id: string, props?: RunnerImageBuilderProps)
2076
+ ```
2077
+
2078
+ Create new image builder that builds Fargate specific runner images using Ubuntu.
2079
+
2080
+ Included components:
2081
+ * `RunnerImageComponent.requiredPackages()`
2082
+ * `RunnerImageComponent.runnerUser()`
2083
+ * `RunnerImageComponent.git()`
2084
+ * `RunnerImageComponent.githubCli()`
2085
+ * `RunnerImageComponent.awsCli()`
2086
+ * `RunnerImageComponent.githubRunner()`
2087
+
2088
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.FargateRunner.imageBuilder.parameter.scope"></a>
2089
+
2090
+ - *Type:* constructs.Construct
2091
+
2092
+ ---
2093
+
2094
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.FargateRunner.imageBuilder.parameter.id"></a>
2095
+
2096
+ - *Type:* string
2097
+
2098
+ ---
2099
+
2100
+ ###### `props`<sup>Optional</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.FargateRunner.imageBuilder.parameter.props"></a>
2101
+
2102
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps">RunnerImageBuilderProps</a>
2103
+
2104
+ ---
2105
+
1845
2106
  #### Properties <a name="Properties" id="Properties"></a>
1846
2107
 
1847
2108
  | **Name** | **Type** | **Description** |
@@ -1864,7 +2125,7 @@ Any object.
1864
2125
 
1865
2126
  ##### ~~`node`~~<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.FargateRunner.property.node"></a>
1866
2127
 
1867
- - *Deprecated:* use {@link FargateRunnerProvider}
2128
+ - *Deprecated:* use {@link FargateRunnerProvider }
1868
2129
 
1869
2130
  ```typescript
1870
2131
  public readonly node: Node;
@@ -1878,7 +2139,7 @@ The tree node.
1878
2139
 
1879
2140
  ##### ~~`assignPublicIp`~~<sup>Required</sup> <a name="assignPublicIp" id="@cloudsnorkel/cdk-github-runners.FargateRunner.property.assignPublicIp"></a>
1880
2141
 
1881
- - *Deprecated:* use {@link FargateRunnerProvider}
2142
+ - *Deprecated:* use {@link FargateRunnerProvider }
1882
2143
 
1883
2144
  ```typescript
1884
2145
  public readonly assignPublicIp: boolean;
@@ -1892,7 +2153,7 @@ Whether runner task will have a public IP.
1892
2153
 
1893
2154
  ##### ~~`cluster`~~<sup>Required</sup> <a name="cluster" id="@cloudsnorkel/cdk-github-runners.FargateRunner.property.cluster"></a>
1894
2155
 
1895
- - *Deprecated:* use {@link FargateRunnerProvider}
2156
+ - *Deprecated:* use {@link FargateRunnerProvider }
1896
2157
 
1897
2158
  ```typescript
1898
2159
  public readonly cluster: Cluster;
@@ -1906,7 +2167,7 @@ Cluster hosting the task hosting the runner.
1906
2167
 
1907
2168
  ##### ~~`connections`~~<sup>Required</sup> <a name="connections" id="@cloudsnorkel/cdk-github-runners.FargateRunner.property.connections"></a>
1908
2169
 
1909
- - *Deprecated:* use {@link FargateRunnerProvider}
2170
+ - *Deprecated:* use {@link FargateRunnerProvider }
1910
2171
 
1911
2172
  ```typescript
1912
2173
  public readonly connections: Connections;
@@ -1920,7 +2181,7 @@ The network connections associated with this resource.
1920
2181
 
1921
2182
  ##### ~~`container`~~<sup>Required</sup> <a name="container" id="@cloudsnorkel/cdk-github-runners.FargateRunner.property.container"></a>
1922
2183
 
1923
- - *Deprecated:* use {@link FargateRunnerProvider}
2184
+ - *Deprecated:* use {@link FargateRunnerProvider }
1924
2185
 
1925
2186
  ```typescript
1926
2187
  public readonly container: ContainerDefinition;
@@ -1934,7 +2195,7 @@ Container definition hosting the runner.
1934
2195
 
1935
2196
  ##### ~~`grantPrincipal`~~<sup>Required</sup> <a name="grantPrincipal" id="@cloudsnorkel/cdk-github-runners.FargateRunner.property.grantPrincipal"></a>
1936
2197
 
1937
- - *Deprecated:* use {@link FargateRunnerProvider}
2198
+ - *Deprecated:* use {@link FargateRunnerProvider }
1938
2199
 
1939
2200
  ```typescript
1940
2201
  public readonly grantPrincipal: IPrincipal;
@@ -1948,7 +2209,7 @@ Grant principal used to add permissions to the runner role.
1948
2209
 
1949
2210
  ##### ~~`image`~~<sup>Required</sup> <a name="image" id="@cloudsnorkel/cdk-github-runners.FargateRunner.property.image"></a>
1950
2211
 
1951
- - *Deprecated:* use {@link FargateRunnerProvider}
2212
+ - *Deprecated:* use {@link FargateRunnerProvider }
1952
2213
 
1953
2214
  ```typescript
1954
2215
  public readonly image: RunnerImage;
@@ -1964,7 +2225,7 @@ The image is built by an image builder and is specific to Fargate tasks.
1964
2225
 
1965
2226
  ##### ~~`labels`~~<sup>Required</sup> <a name="labels" id="@cloudsnorkel/cdk-github-runners.FargateRunner.property.labels"></a>
1966
2227
 
1967
- - *Deprecated:* use {@link FargateRunnerProvider}
2228
+ - *Deprecated:* use {@link FargateRunnerProvider }
1968
2229
 
1969
2230
  ```typescript
1970
2231
  public readonly labels: string[];
@@ -1978,7 +2239,7 @@ Labels associated with this provider.
1978
2239
 
1979
2240
  ##### ~~`logGroup`~~<sup>Required</sup> <a name="logGroup" id="@cloudsnorkel/cdk-github-runners.FargateRunner.property.logGroup"></a>
1980
2241
 
1981
- - *Deprecated:* use {@link FargateRunnerProvider}
2242
+ - *Deprecated:* use {@link FargateRunnerProvider }
1982
2243
 
1983
2244
  ```typescript
1984
2245
  public readonly logGroup: ILogGroup;
@@ -1994,7 +2255,7 @@ Note that this is not the job log, but the runner itself. It will not contain ou
1994
2255
 
1995
2256
  ##### ~~`spot`~~<sup>Required</sup> <a name="spot" id="@cloudsnorkel/cdk-github-runners.FargateRunner.property.spot"></a>
1996
2257
 
1997
- - *Deprecated:* use {@link FargateRunnerProvider}
2258
+ - *Deprecated:* use {@link FargateRunnerProvider }
1998
2259
 
1999
2260
  ```typescript
2000
2261
  public readonly spot: boolean;
@@ -2008,7 +2269,7 @@ Use spot pricing for Fargate tasks.
2008
2269
 
2009
2270
  ##### ~~`task`~~<sup>Required</sup> <a name="task" id="@cloudsnorkel/cdk-github-runners.FargateRunner.property.task"></a>
2010
2271
 
2011
- - *Deprecated:* use {@link FargateRunnerProvider}
2272
+ - *Deprecated:* use {@link FargateRunnerProvider }
2012
2273
 
2013
2274
  ```typescript
2014
2275
  public readonly task: FargateTaskDefinition;
@@ -2022,7 +2283,7 @@ Fargate task hosting the runner.
2022
2283
 
2023
2284
  ##### ~~`subnetSelection`~~<sup>Optional</sup> <a name="subnetSelection" id="@cloudsnorkel/cdk-github-runners.FargateRunner.property.subnetSelection"></a>
2024
2285
 
2025
- - *Deprecated:* use {@link FargateRunnerProvider}
2286
+ - *Deprecated:* use {@link FargateRunnerProvider }
2026
2287
 
2027
2288
  ```typescript
2028
2289
  public readonly subnetSelection: SubnetSelection;
@@ -2036,7 +2297,7 @@ Subnets used for hosting the runner task.
2036
2297
 
2037
2298
  ##### ~~`vpc`~~<sup>Optional</sup> <a name="vpc" id="@cloudsnorkel/cdk-github-runners.FargateRunner.property.vpc"></a>
2038
2299
 
2039
- - *Deprecated:* use {@link FargateRunnerProvider}
2300
+ - *Deprecated:* use {@link FargateRunnerProvider }
2040
2301
 
2041
2302
  ```typescript
2042
2303
  public readonly vpc: IVpc;
@@ -2059,7 +2320,7 @@ VPC used for hosting the runner task.
2059
2320
 
2060
2321
  ##### ~~`LINUX_ARM64_DOCKERFILE_PATH`~~<sup>Required</sup> <a name="LINUX_ARM64_DOCKERFILE_PATH" id="@cloudsnorkel/cdk-github-runners.FargateRunner.property.LINUX_ARM64_DOCKERFILE_PATH"></a>
2061
2322
 
2062
- - *Deprecated:* use {@link FargateRunnerProvider}
2323
+ - *Deprecated:* Use `imageBuilder()` instead.
2063
2324
 
2064
2325
  ```typescript
2065
2326
  public readonly LINUX_ARM64_DOCKERFILE_PATH: string;
@@ -2079,7 +2340,7 @@ Available build arguments that can be set in the image builder:
2079
2340
 
2080
2341
  ##### ~~`LINUX_X64_DOCKERFILE_PATH`~~<sup>Required</sup> <a name="LINUX_X64_DOCKERFILE_PATH" id="@cloudsnorkel/cdk-github-runners.FargateRunner.property.LINUX_X64_DOCKERFILE_PATH"></a>
2081
2342
 
2082
- - *Deprecated:* use {@link FargateRunnerProvider}
2343
+ - *Deprecated:* Use `imageBuilder()` instead.
2083
2344
 
2084
2345
  ```typescript
2085
2346
  public readonly LINUX_X64_DOCKERFILE_PATH: string;
@@ -2216,6 +2477,7 @@ Also gives the status function any needed permissions to query the Docker image
2216
2477
  | **Name** | **Description** |
2217
2478
  | --- | --- |
2218
2479
  | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProvider.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
2480
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProvider.imageBuilder">imageBuilder</a></code> | Create new image builder that builds Fargate specific runner images using Ubuntu. |
2219
2481
 
2220
2482
  ---
2221
2483
 
@@ -2237,6 +2499,42 @@ Any object.
2237
2499
 
2238
2500
  ---
2239
2501
 
2502
+ ##### `imageBuilder` <a name="imageBuilder" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProvider.imageBuilder"></a>
2503
+
2504
+ ```typescript
2505
+ import { FargateRunnerProvider } from '@cloudsnorkel/cdk-github-runners'
2506
+
2507
+ FargateRunnerProvider.imageBuilder(scope: Construct, id: string, props?: RunnerImageBuilderProps)
2508
+ ```
2509
+
2510
+ Create new image builder that builds Fargate specific runner images using Ubuntu.
2511
+
2512
+ Included components:
2513
+ * `RunnerImageComponent.requiredPackages()`
2514
+ * `RunnerImageComponent.runnerUser()`
2515
+ * `RunnerImageComponent.git()`
2516
+ * `RunnerImageComponent.githubCli()`
2517
+ * `RunnerImageComponent.awsCli()`
2518
+ * `RunnerImageComponent.githubRunner()`
2519
+
2520
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProvider.imageBuilder.parameter.scope"></a>
2521
+
2522
+ - *Type:* constructs.Construct
2523
+
2524
+ ---
2525
+
2526
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProvider.imageBuilder.parameter.id"></a>
2527
+
2528
+ - *Type:* string
2529
+
2530
+ ---
2531
+
2532
+ ###### `props`<sup>Optional</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProvider.imageBuilder.parameter.props"></a>
2533
+
2534
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps">RunnerImageBuilderProps</a>
2535
+
2536
+ ---
2537
+
2240
2538
  #### Properties <a name="Properties" id="Properties"></a>
2241
2539
 
2242
2540
  | **Name** | **Type** | **Description** |
@@ -2426,7 +2724,9 @@ VPC used for hosting the runner task.
2426
2724
 
2427
2725
  ---
2428
2726
 
2429
- ##### `LINUX_ARM64_DOCKERFILE_PATH`<sup>Required</sup> <a name="LINUX_ARM64_DOCKERFILE_PATH" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProvider.property.LINUX_ARM64_DOCKERFILE_PATH"></a>
2727
+ ##### ~~`LINUX_ARM64_DOCKERFILE_PATH`~~<sup>Required</sup> <a name="LINUX_ARM64_DOCKERFILE_PATH" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProvider.property.LINUX_ARM64_DOCKERFILE_PATH"></a>
2728
+
2729
+ - *Deprecated:* Use `imageBuilder()` instead.
2430
2730
 
2431
2731
  ```typescript
2432
2732
  public readonly LINUX_ARM64_DOCKERFILE_PATH: string;
@@ -2444,7 +2744,9 @@ Available build arguments that can be set in the image builder:
2444
2744
 
2445
2745
  ---
2446
2746
 
2447
- ##### `LINUX_X64_DOCKERFILE_PATH`<sup>Required</sup> <a name="LINUX_X64_DOCKERFILE_PATH" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProvider.property.LINUX_X64_DOCKERFILE_PATH"></a>
2747
+ ##### ~~`LINUX_X64_DOCKERFILE_PATH`~~<sup>Required</sup> <a name="LINUX_X64_DOCKERFILE_PATH" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProvider.property.LINUX_X64_DOCKERFILE_PATH"></a>
2748
+
2749
+ - *Deprecated:* Use `imageBuilder()` instead.
2448
2750
 
2449
2751
  ```typescript
2450
2752
  public readonly LINUX_X64_DOCKERFILE_PATH: string;
@@ -2484,12 +2786,12 @@ const bucket = new s3.Bucket(this, 'runner bucket');
2484
2786
 
2485
2787
  // create a custom CodeBuild provider
2486
2788
  const myProvider = new CodeBuildRunner(
2487
- this, 'codebuild runner',
2488
- {
2489
- label: 'my-codebuild',
2490
- vpc: vpc,
2491
- securityGroup: runnerSg,
2492
- },
2789
+ this, 'codebuild runner',
2790
+ {
2791
+ label: 'my-codebuild',
2792
+ vpc: vpc,
2793
+ securityGroup: runnerSg,
2794
+ },
2493
2795
  );
2494
2796
  // grant some permissions to the provider
2495
2797
  bucket.grantReadWrite(myProvider);
@@ -2497,11 +2799,11 @@ dbSg.connections.allowFrom(runnerSg, ec2.Port.tcp(3306), 'allow runners to conne
2497
2799
 
2498
2800
  // create the runner infrastructure
2499
2801
  new GitHubRunners(
2500
- this,
2501
- 'runners',
2502
- {
2503
- providers: [myProvider],
2504
- }
2802
+ this,
2803
+ 'runners',
2804
+ {
2805
+ providers: [myProvider],
2806
+ }
2505
2807
  );
2506
2808
  ```
2507
2809
 
@@ -2721,13 +3023,13 @@ Example:
2721
3023
 
2722
3024
  ```
2723
3025
  new ImageBuilderComponent(this, 'AWS CLI', {
2724
- platform: 'Windows',
2725
- displayName: 'AWS CLI',
2726
- description: 'Install latest version of AWS CLI',
2727
- commands: [
2728
- '$ErrorActionPreference = \'Stop\'',
2729
- 'Start-Process msiexec.exe -Wait -ArgumentList \'/i https://awscli.amazonaws.com/AWSCLIV2.msi /qn\'',
2730
- ],
3026
+ platform: 'Windows',
3027
+ displayName: 'AWS CLI',
3028
+ description: 'Install latest version of AWS CLI',
3029
+ commands: [
3030
+ '$ErrorActionPreference = \'Stop\'',
3031
+ 'Start-Process msiexec.exe -Wait -ArgumentList \'/i https://awscli.amazonaws.com/AWSCLIV2.msi /qn\'',
3032
+ ],
2731
3033
  }
2732
3034
  ```
2733
3035
 
@@ -2772,10 +3074,11 @@ new ImageBuilderComponent(scope: Construct, id: string, props: ImageBuilderCompo
2772
3074
  | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.toString">toString</a></code> | Returns a string representation of this construct. |
2773
3075
  | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.applyRemovalPolicy">applyRemovalPolicy</a></code> | Apply the given removal policy to this resource. |
2774
3076
  | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.grantAssetsRead">grantAssetsRead</a></code> | Grants read permissions to the principal on the assets buckets. |
3077
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.prefixCommandsWithErrorHandling">prefixCommandsWithErrorHandling</a></code> | *No description.* |
2775
3078
 
2776
3079
  ---
2777
3080
 
2778
- ##### `toString` <a name="toString" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.toString"></a>
3081
+ ##### ~~`toString`~~ <a name="toString" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.toString"></a>
2779
3082
 
2780
3083
  ```typescript
2781
3084
  public toString(): string
@@ -2783,7 +3086,7 @@ public toString(): string
2783
3086
 
2784
3087
  Returns a string representation of this construct.
2785
3088
 
2786
- ##### `applyRemovalPolicy` <a name="applyRemovalPolicy" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.applyRemovalPolicy"></a>
3089
+ ##### ~~`applyRemovalPolicy`~~ <a name="applyRemovalPolicy" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.applyRemovalPolicy"></a>
2787
3090
 
2788
3091
  ```typescript
2789
3092
  public applyRemovalPolicy(policy: RemovalPolicy): void
@@ -2805,7 +3108,7 @@ account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
2805
3108
 
2806
3109
  ---
2807
3110
 
2808
- ##### `grantAssetsRead` <a name="grantAssetsRead" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.grantAssetsRead"></a>
3111
+ ##### ~~`grantAssetsRead`~~ <a name="grantAssetsRead" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.grantAssetsRead"></a>
2809
3112
 
2810
3113
  ```typescript
2811
3114
  public grantAssetsRead(grantee: IGrantable): void
@@ -2819,6 +3122,24 @@ Grants read permissions to the principal on the assets buckets.
2819
3122
 
2820
3123
  ---
2821
3124
 
3125
+ ##### ~~`prefixCommandsWithErrorHandling`~~ <a name="prefixCommandsWithErrorHandling" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.prefixCommandsWithErrorHandling"></a>
3126
+
3127
+ ```typescript
3128
+ public prefixCommandsWithErrorHandling(platform: string, commands: string[]): string[]
3129
+ ```
3130
+
3131
+ ###### `platform`<sup>Required</sup> <a name="platform" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.prefixCommandsWithErrorHandling.parameter.platform"></a>
3132
+
3133
+ - *Type:* string
3134
+
3135
+ ---
3136
+
3137
+ ###### `commands`<sup>Required</sup> <a name="commands" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.prefixCommandsWithErrorHandling.parameter.commands"></a>
3138
+
3139
+ - *Type:* string[]
3140
+
3141
+ ---
3142
+
2822
3143
  #### Static Functions <a name="Static Functions" id="Static Functions"></a>
2823
3144
 
2824
3145
  | **Name** | **Description** |
@@ -2847,7 +3168,7 @@ Any object.
2847
3168
 
2848
3169
  ---
2849
3170
 
2850
- ##### `isOwnedResource` <a name="isOwnedResource" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isOwnedResource"></a>
3171
+ ##### ~~`isOwnedResource`~~ <a name="isOwnedResource" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isOwnedResource"></a>
2851
3172
 
2852
3173
  ```typescript
2853
3174
  import { ImageBuilderComponent } from '@cloudsnorkel/cdk-github-runners'
@@ -2863,7 +3184,7 @@ Returns true if the construct was created by CDK, and false otherwise.
2863
3184
 
2864
3185
  ---
2865
3186
 
2866
- ##### `isResource` <a name="isResource" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isResource"></a>
3187
+ ##### ~~`isResource`~~ <a name="isResource" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isResource"></a>
2867
3188
 
2868
3189
  ```typescript
2869
3190
  import { ImageBuilderComponent } from '@cloudsnorkel/cdk-github-runners'
@@ -2891,7 +3212,9 @@ Check whether the given construct is a Resource.
2891
3212
 
2892
3213
  ---
2893
3214
 
2894
- ##### `node`<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.node"></a>
3215
+ ##### ~~`node`~~<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.node"></a>
3216
+
3217
+ - *Deprecated:* Use `RunnerImageComponent` instead as this be internal soon.
2895
3218
 
2896
3219
  ```typescript
2897
3220
  public readonly node: Node;
@@ -2903,7 +3226,9 @@ The tree node.
2903
3226
 
2904
3227
  ---
2905
3228
 
2906
- ##### `env`<sup>Required</sup> <a name="env" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.env"></a>
3229
+ ##### ~~`env`~~<sup>Required</sup> <a name="env" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.env"></a>
3230
+
3231
+ - *Deprecated:* Use `RunnerImageComponent` instead as this be internal soon.
2907
3232
 
2908
3233
  ```typescript
2909
3234
  public readonly env: ResourceEnvironment;
@@ -2922,7 +3247,9 @@ that might be different than the stack they were imported into.
2922
3247
 
2923
3248
  ---
2924
3249
 
2925
- ##### `stack`<sup>Required</sup> <a name="stack" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.stack"></a>
3250
+ ##### ~~`stack`~~<sup>Required</sup> <a name="stack" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.stack"></a>
3251
+
3252
+ - *Deprecated:* Use `RunnerImageComponent` instead as this be internal soon.
2926
3253
 
2927
3254
  ```typescript
2928
3255
  public readonly stack: Stack;
@@ -2934,7 +3261,9 @@ The stack in which this resource is defined.
2934
3261
 
2935
3262
  ---
2936
3263
 
2937
- ##### `arn`<sup>Required</sup> <a name="arn" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.arn"></a>
3264
+ ##### ~~`arn`~~<sup>Required</sup> <a name="arn" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.arn"></a>
3265
+
3266
+ - *Deprecated:* Use `RunnerImageComponent` instead as this be internal soon.
2938
3267
 
2939
3268
  ```typescript
2940
3269
  public readonly arn: string;
@@ -2946,7 +3275,9 @@ Component ARN.
2946
3275
 
2947
3276
  ---
2948
3277
 
2949
- ##### `platform`<sup>Required</sup> <a name="platform" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.platform"></a>
3278
+ ##### ~~`platform`~~<sup>Required</sup> <a name="platform" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.platform"></a>
3279
+
3280
+ - *Deprecated:* Use `RunnerImageComponent` instead as this be internal soon.
2950
3281
 
2951
3282
  ```typescript
2952
3283
  public readonly platform: string;
@@ -3070,6 +3401,7 @@ Also gives the status function any needed permissions to query the Docker image
3070
3401
  | **Name** | **Description** |
3071
3402
  | --- | --- |
3072
3403
  | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunner.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
3404
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunner.imageBuilder">imageBuilder</a></code> | Create new image builder that builds Lambda specific runner images using Amazon Linux 2. |
3073
3405
 
3074
3406
  ---
3075
3407
 
@@ -3091,6 +3423,45 @@ Any object.
3091
3423
 
3092
3424
  ---
3093
3425
 
3426
+ ##### ~~`imageBuilder`~~ <a name="imageBuilder" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.imageBuilder"></a>
3427
+
3428
+ ```typescript
3429
+ import { LambdaRunner } from '@cloudsnorkel/cdk-github-runners'
3430
+
3431
+ LambdaRunner.imageBuilder(scope: Construct, id: string, props?: RunnerImageBuilderProps)
3432
+ ```
3433
+
3434
+ Create new image builder that builds Lambda specific runner images using Amazon Linux 2.
3435
+
3436
+ Included components:
3437
+ * `RunnerImageComponent.requiredPackages()`
3438
+ * `RunnerImageComponent.runnerUser()`
3439
+ * `RunnerImageComponent.git()`
3440
+ * `RunnerImageComponent.githubCli()`
3441
+ * `RunnerImageComponent.awsCli()`
3442
+ * `RunnerImageComponent.githubRunner()`
3443
+ * `RunnerImageComponent.lambdaEntrypoint()`
3444
+
3445
+ Base Docker image: `public.ecr.aws/lambda/nodejs:14-x86_64` or `public.ecr.aws/lambda/nodejs:14-arm64`
3446
+
3447
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.imageBuilder.parameter.scope"></a>
3448
+
3449
+ - *Type:* constructs.Construct
3450
+
3451
+ ---
3452
+
3453
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.imageBuilder.parameter.id"></a>
3454
+
3455
+ - *Type:* string
3456
+
3457
+ ---
3458
+
3459
+ ###### `props`<sup>Optional</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.imageBuilder.parameter.props"></a>
3460
+
3461
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps">RunnerImageBuilderProps</a>
3462
+
3463
+ ---
3464
+
3094
3465
  #### Properties <a name="Properties" id="Properties"></a>
3095
3466
 
3096
3467
  | **Name** | **Type** | **Description** |
@@ -3107,7 +3478,7 @@ Any object.
3107
3478
 
3108
3479
  ##### ~~`node`~~<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.property.node"></a>
3109
3480
 
3110
- - *Deprecated:* use {@link LambdaRunnerProvider}
3481
+ - *Deprecated:* use {@link LambdaRunnerProvider }
3111
3482
 
3112
3483
  ```typescript
3113
3484
  public readonly node: Node;
@@ -3121,7 +3492,7 @@ The tree node.
3121
3492
 
3122
3493
  ##### ~~`connections`~~<sup>Required</sup> <a name="connections" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.property.connections"></a>
3123
3494
 
3124
- - *Deprecated:* use {@link LambdaRunnerProvider}
3495
+ - *Deprecated:* use {@link LambdaRunnerProvider }
3125
3496
 
3126
3497
  ```typescript
3127
3498
  public readonly connections: Connections;
@@ -3135,7 +3506,7 @@ The network connections associated with this resource.
3135
3506
 
3136
3507
  ##### ~~`function`~~<sup>Required</sup> <a name="function" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.property.function"></a>
3137
3508
 
3138
- - *Deprecated:* use {@link LambdaRunnerProvider}
3509
+ - *Deprecated:* use {@link LambdaRunnerProvider }
3139
3510
 
3140
3511
  ```typescript
3141
3512
  public readonly function: Function;
@@ -3149,7 +3520,7 @@ The function hosting the GitHub runner.
3149
3520
 
3150
3521
  ##### ~~`grantPrincipal`~~<sup>Required</sup> <a name="grantPrincipal" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.property.grantPrincipal"></a>
3151
3522
 
3152
- - *Deprecated:* use {@link LambdaRunnerProvider}
3523
+ - *Deprecated:* use {@link LambdaRunnerProvider }
3153
3524
 
3154
3525
  ```typescript
3155
3526
  public readonly grantPrincipal: IPrincipal;
@@ -3163,7 +3534,7 @@ Grant principal used to add permissions to the runner role.
3163
3534
 
3164
3535
  ##### ~~`image`~~<sup>Required</sup> <a name="image" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.property.image"></a>
3165
3536
 
3166
- - *Deprecated:* use {@link LambdaRunnerProvider}
3537
+ - *Deprecated:* use {@link LambdaRunnerProvider }
3167
3538
 
3168
3539
  ```typescript
3169
3540
  public readonly image: RunnerImage;
@@ -3179,7 +3550,7 @@ The image is built by an image builder and is specific to Lambda.
3179
3550
 
3180
3551
  ##### ~~`labels`~~<sup>Required</sup> <a name="labels" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.property.labels"></a>
3181
3552
 
3182
- - *Deprecated:* use {@link LambdaRunnerProvider}
3553
+ - *Deprecated:* use {@link LambdaRunnerProvider }
3183
3554
 
3184
3555
  ```typescript
3185
3556
  public readonly labels: string[];
@@ -3193,7 +3564,7 @@ Labels associated with this provider.
3193
3564
 
3194
3565
  ##### ~~`logGroup`~~<sup>Required</sup> <a name="logGroup" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.property.logGroup"></a>
3195
3566
 
3196
- - *Deprecated:* use {@link LambdaRunnerProvider}
3567
+ - *Deprecated:* use {@link LambdaRunnerProvider }
3197
3568
 
3198
3569
  ```typescript
3199
3570
  public readonly logGroup: ILogGroup;
@@ -3218,7 +3589,7 @@ Note that this is not the job log, but the runner itself. It will not contain ou
3218
3589
 
3219
3590
  ##### ~~`LINUX_ARM64_DOCKERFILE_PATH`~~<sup>Required</sup> <a name="LINUX_ARM64_DOCKERFILE_PATH" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.property.LINUX_ARM64_DOCKERFILE_PATH"></a>
3220
3591
 
3221
- - *Deprecated:* use {@link LambdaRunnerProvider}
3592
+ - *Deprecated:* Use `imageBuilder()` instead.
3222
3593
 
3223
3594
  ```typescript
3224
3595
  public readonly LINUX_ARM64_DOCKERFILE_PATH: string;
@@ -3238,7 +3609,7 @@ Available build arguments that can be set in the image builder:
3238
3609
 
3239
3610
  ##### ~~`LINUX_X64_DOCKERFILE_PATH`~~<sup>Required</sup> <a name="LINUX_X64_DOCKERFILE_PATH" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.property.LINUX_X64_DOCKERFILE_PATH"></a>
3240
3611
 
3241
- - *Deprecated:* use {@link LambdaRunnerProvider}
3612
+ - *Deprecated:* Use `imageBuilder()` instead.
3242
3613
 
3243
3614
  ```typescript
3244
3615
  public readonly LINUX_X64_DOCKERFILE_PATH: string;
@@ -3375,6 +3746,7 @@ Also gives the status function any needed permissions to query the Docker image
3375
3746
  | **Name** | **Description** |
3376
3747
  | --- | --- |
3377
3748
  | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunnerProvider.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
3749
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunnerProvider.imageBuilder">imageBuilder</a></code> | Create new image builder that builds Lambda specific runner images using Amazon Linux 2. |
3378
3750
 
3379
3751
  ---
3380
3752
 
@@ -3396,6 +3768,45 @@ Any object.
3396
3768
 
3397
3769
  ---
3398
3770
 
3771
+ ##### `imageBuilder` <a name="imageBuilder" id="@cloudsnorkel/cdk-github-runners.LambdaRunnerProvider.imageBuilder"></a>
3772
+
3773
+ ```typescript
3774
+ import { LambdaRunnerProvider } from '@cloudsnorkel/cdk-github-runners'
3775
+
3776
+ LambdaRunnerProvider.imageBuilder(scope: Construct, id: string, props?: RunnerImageBuilderProps)
3777
+ ```
3778
+
3779
+ Create new image builder that builds Lambda specific runner images using Amazon Linux 2.
3780
+
3781
+ Included components:
3782
+ * `RunnerImageComponent.requiredPackages()`
3783
+ * `RunnerImageComponent.runnerUser()`
3784
+ * `RunnerImageComponent.git()`
3785
+ * `RunnerImageComponent.githubCli()`
3786
+ * `RunnerImageComponent.awsCli()`
3787
+ * `RunnerImageComponent.githubRunner()`
3788
+ * `RunnerImageComponent.lambdaEntrypoint()`
3789
+
3790
+ Base Docker image: `public.ecr.aws/lambda/nodejs:14-x86_64` or `public.ecr.aws/lambda/nodejs:14-arm64`
3791
+
3792
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LambdaRunnerProvider.imageBuilder.parameter.scope"></a>
3793
+
3794
+ - *Type:* constructs.Construct
3795
+
3796
+ ---
3797
+
3798
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LambdaRunnerProvider.imageBuilder.parameter.id"></a>
3799
+
3800
+ - *Type:* string
3801
+
3802
+ ---
3803
+
3804
+ ###### `props`<sup>Optional</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.LambdaRunnerProvider.imageBuilder.parameter.props"></a>
3805
+
3806
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps">RunnerImageBuilderProps</a>
3807
+
3808
+ ---
3809
+
3399
3810
  #### Properties <a name="Properties" id="Properties"></a>
3400
3811
 
3401
3812
  | **Name** | **Type** | **Description** |
@@ -3507,7 +3918,9 @@ Note that this is not the job log, but the runner itself. It will not contain ou
3507
3918
 
3508
3919
  ---
3509
3920
 
3510
- ##### `LINUX_ARM64_DOCKERFILE_PATH`<sup>Required</sup> <a name="LINUX_ARM64_DOCKERFILE_PATH" id="@cloudsnorkel/cdk-github-runners.LambdaRunnerProvider.property.LINUX_ARM64_DOCKERFILE_PATH"></a>
3921
+ ##### ~~`LINUX_ARM64_DOCKERFILE_PATH`~~<sup>Required</sup> <a name="LINUX_ARM64_DOCKERFILE_PATH" id="@cloudsnorkel/cdk-github-runners.LambdaRunnerProvider.property.LINUX_ARM64_DOCKERFILE_PATH"></a>
3922
+
3923
+ - *Deprecated:* Use `imageBuilder()` instead.
3511
3924
 
3512
3925
  ```typescript
3513
3926
  public readonly LINUX_ARM64_DOCKERFILE_PATH: string;
@@ -3525,7 +3938,9 @@ Available build arguments that can be set in the image builder:
3525
3938
 
3526
3939
  ---
3527
3940
 
3528
- ##### `LINUX_X64_DOCKERFILE_PATH`<sup>Required</sup> <a name="LINUX_X64_DOCKERFILE_PATH" id="@cloudsnorkel/cdk-github-runners.LambdaRunnerProvider.property.LINUX_X64_DOCKERFILE_PATH"></a>
3941
+ ##### ~~`LINUX_X64_DOCKERFILE_PATH`~~<sup>Required</sup> <a name="LINUX_X64_DOCKERFILE_PATH" id="@cloudsnorkel/cdk-github-runners.LambdaRunnerProvider.property.LINUX_X64_DOCKERFILE_PATH"></a>
3942
+
3943
+ - *Deprecated:* Use `imageBuilder()` instead.
3529
3944
 
3530
3945
  ```typescript
3531
3946
  public readonly LINUX_X64_DOCKERFILE_PATH: string;
@@ -3543,17 +3958,247 @@ Available build arguments that can be set in the image builder:
3543
3958
 
3544
3959
  ---
3545
3960
 
3546
- ### Secrets <a name="Secrets" id="@cloudsnorkel/cdk-github-runners.Secrets"></a>
3961
+ ### RunnerImageBuilder <a name="RunnerImageBuilder" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder"></a>
3547
3962
 
3548
- Secrets required for GitHub runners operation.
3963
+ - *Implements:* aws-cdk-lib.aws_ec2.IConnectable, aws-cdk-lib.aws_iam.IGrantable, <a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder">IRunnerImageBuilder</a>
3549
3964
 
3550
- #### Initializers <a name="Initializers" id="@cloudsnorkel/cdk-github-runners.Secrets.Initializer"></a>
3965
+ GitHub Runner image builder. Builds a Docker image or AMI with GitHub Runner and other requirements installed.
3551
3966
 
3552
- ```typescript
3553
- import { Secrets } from '@cloudsnorkel/cdk-github-runners'
3967
+ Images can be customized before passed into the provider by adding or removing components to be installed.
3554
3968
 
3555
- new Secrets(scope: Construct, id: string)
3556
- ```
3969
+ Images are rebuilt every week by default to ensure that the latest security patches are applied.
3970
+
3971
+ #### Initializers <a name="Initializers" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.Initializer"></a>
3972
+
3973
+ ```typescript
3974
+ import { RunnerImageBuilder } from '@cloudsnorkel/cdk-github-runners'
3975
+
3976
+ new RunnerImageBuilder(scope: Construct, id: string, props?: RunnerImageBuilderProps)
3977
+ ```
3978
+
3979
+ | **Name** | **Type** | **Description** |
3980
+ | --- | --- | --- |
3981
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.Initializer.parameter.scope">scope</a></code> | <code>constructs.Construct</code> | *No description.* |
3982
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.Initializer.parameter.id">id</a></code> | <code>string</code> | *No description.* |
3983
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.Initializer.parameter.props">props</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps">RunnerImageBuilderProps</a></code> | *No description.* |
3984
+
3985
+ ---
3986
+
3987
+ ##### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.Initializer.parameter.scope"></a>
3988
+
3989
+ - *Type:* constructs.Construct
3990
+
3991
+ ---
3992
+
3993
+ ##### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.Initializer.parameter.id"></a>
3994
+
3995
+ - *Type:* string
3996
+
3997
+ ---
3998
+
3999
+ ##### `props`<sup>Optional</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.Initializer.parameter.props"></a>
4000
+
4001
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps">RunnerImageBuilderProps</a>
4002
+
4003
+ ---
4004
+
4005
+ #### Methods <a name="Methods" id="Methods"></a>
4006
+
4007
+ | **Name** | **Description** |
4008
+ | --- | --- |
4009
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.toString">toString</a></code> | Returns a string representation of this construct. |
4010
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.addComponent">addComponent</a></code> | Add a component to the image builder. |
4011
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.bindAmi">bindAmi</a></code> | Build and return an AMI with GitHub Runner installed in it. |
4012
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.bindDockerImage">bindDockerImage</a></code> | Build and return a Docker image with GitHub Runner installed in it. |
4013
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.removeComponent">removeComponent</a></code> | Remove a component from the image builder. |
4014
+
4015
+ ---
4016
+
4017
+ ##### `toString` <a name="toString" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.toString"></a>
4018
+
4019
+ ```typescript
4020
+ public toString(): string
4021
+ ```
4022
+
4023
+ Returns a string representation of this construct.
4024
+
4025
+ ##### `addComponent` <a name="addComponent" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.addComponent"></a>
4026
+
4027
+ ```typescript
4028
+ public addComponent(component: RunnerImageComponent): void
4029
+ ```
4030
+
4031
+ Add a component to the image builder.
4032
+
4033
+ The component will be added to the end of the list of components.
4034
+
4035
+ ###### `component`<sup>Required</sup> <a name="component" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.addComponent.parameter.component"></a>
4036
+
4037
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent">RunnerImageComponent</a>
4038
+
4039
+ component to add.
4040
+
4041
+ ---
4042
+
4043
+ ##### `bindAmi` <a name="bindAmi" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.bindAmi"></a>
4044
+
4045
+ ```typescript
4046
+ public bindAmi(): RunnerAmi
4047
+ ```
4048
+
4049
+ Build and return an AMI with GitHub Runner installed in it.
4050
+
4051
+ Anything that ends up with a launch template pointing to an AMI that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing AMI and nothing else.
4052
+
4053
+ The AMI can be further updated over time manually or using a schedule as long as it is always written to the same launch template.
4054
+
4055
+ ##### `bindDockerImage` <a name="bindDockerImage" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.bindDockerImage"></a>
4056
+
4057
+ ```typescript
4058
+ public bindDockerImage(): RunnerImage
4059
+ ```
4060
+
4061
+ Build and return a Docker image with GitHub Runner installed in it.
4062
+
4063
+ Anything that ends up with an ECR repository containing a Docker image that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing image and nothing else.
4064
+
4065
+ It's important that the specified image tag be available at the time the repository is available. Providers usually assume the image is ready and will fail if it's not.
4066
+
4067
+ The image can be further updated over time manually or using a schedule as long as it is always written to the same tag.
4068
+
4069
+ ##### `removeComponent` <a name="removeComponent" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.removeComponent"></a>
4070
+
4071
+ ```typescript
4072
+ public removeComponent(component: RunnerImageComponent): void
4073
+ ```
4074
+
4075
+ Remove a component from the image builder.
4076
+
4077
+ Removal is done by component name. Multiple components with the same name will all be removed.
4078
+
4079
+ ###### `component`<sup>Required</sup> <a name="component" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.removeComponent.parameter.component"></a>
4080
+
4081
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent">RunnerImageComponent</a>
4082
+
4083
+ component to remove.
4084
+
4085
+ ---
4086
+
4087
+ #### Static Functions <a name="Static Functions" id="Static Functions"></a>
4088
+
4089
+ | **Name** | **Description** |
4090
+ | --- | --- |
4091
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
4092
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.new">new</a></code> | Create a new image builder based on the provided properties. |
4093
+
4094
+ ---
4095
+
4096
+ ##### ~~`isConstruct`~~ <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.isConstruct"></a>
4097
+
4098
+ ```typescript
4099
+ import { RunnerImageBuilder } from '@cloudsnorkel/cdk-github-runners'
4100
+
4101
+ RunnerImageBuilder.isConstruct(x: any)
4102
+ ```
4103
+
4104
+ Checks if `x` is a construct.
4105
+
4106
+ ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.isConstruct.parameter.x"></a>
4107
+
4108
+ - *Type:* any
4109
+
4110
+ Any object.
4111
+
4112
+ ---
4113
+
4114
+ ##### `new` <a name="new" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.new"></a>
4115
+
4116
+ ```typescript
4117
+ import { RunnerImageBuilder } from '@cloudsnorkel/cdk-github-runners'
4118
+
4119
+ RunnerImageBuilder.new(scope: Construct, id: string, props?: RunnerImageBuilderProps)
4120
+ ```
4121
+
4122
+ Create a new image builder based on the provided properties.
4123
+
4124
+ The implementation will differ based on the OS, architecture, and requested builder type.
4125
+
4126
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.new.parameter.scope"></a>
4127
+
4128
+ - *Type:* constructs.Construct
4129
+
4130
+ ---
4131
+
4132
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.new.parameter.id"></a>
4133
+
4134
+ - *Type:* string
4135
+
4136
+ ---
4137
+
4138
+ ###### `props`<sup>Optional</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.new.parameter.props"></a>
4139
+
4140
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps">RunnerImageBuilderProps</a>
4141
+
4142
+ ---
4143
+
4144
+ #### Properties <a name="Properties" id="Properties"></a>
4145
+
4146
+ | **Name** | **Type** | **Description** |
4147
+ | --- | --- | --- |
4148
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
4149
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.property.connections">connections</a></code> | <code>aws-cdk-lib.aws_ec2.Connections</code> | The network connections associated with this resource. |
4150
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.property.grantPrincipal">grantPrincipal</a></code> | <code>aws-cdk-lib.aws_iam.IPrincipal</code> | The principal to grant permissions to. |
4151
+
4152
+ ---
4153
+
4154
+ ##### `node`<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.property.node"></a>
4155
+
4156
+ ```typescript
4157
+ public readonly node: Node;
4158
+ ```
4159
+
4160
+ - *Type:* constructs.Node
4161
+
4162
+ The tree node.
4163
+
4164
+ ---
4165
+
4166
+ ##### `connections`<sup>Required</sup> <a name="connections" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.property.connections"></a>
4167
+
4168
+ ```typescript
4169
+ public readonly connections: Connections;
4170
+ ```
4171
+
4172
+ - *Type:* aws-cdk-lib.aws_ec2.Connections
4173
+
4174
+ The network connections associated with this resource.
4175
+
4176
+ ---
4177
+
4178
+ ##### `grantPrincipal`<sup>Required</sup> <a name="grantPrincipal" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.property.grantPrincipal"></a>
4179
+
4180
+ ```typescript
4181
+ public readonly grantPrincipal: IPrincipal;
4182
+ ```
4183
+
4184
+ - *Type:* aws-cdk-lib.aws_iam.IPrincipal
4185
+
4186
+ The principal to grant permissions to.
4187
+
4188
+ ---
4189
+
4190
+
4191
+ ### Secrets <a name="Secrets" id="@cloudsnorkel/cdk-github-runners.Secrets"></a>
4192
+
4193
+ Secrets required for GitHub runners operation.
4194
+
4195
+ #### Initializers <a name="Initializers" id="@cloudsnorkel/cdk-github-runners.Secrets.Initializer"></a>
4196
+
4197
+ ```typescript
4198
+ import { Secrets } from '@cloudsnorkel/cdk-github-runners'
4199
+
4200
+ new Secrets(scope: Construct, id: string)
4201
+ ```
3557
4202
 
3558
4203
  | **Name** | **Type** | **Description** |
3559
4204
  | --- | --- | --- |
@@ -3851,7 +4496,7 @@ Version of GitHub Runners to install.
3851
4496
 
3852
4497
  ##### ~~`securityGroup`~~<sup>Optional</sup> <a name="securityGroup" id="@cloudsnorkel/cdk-github-runners.AmiBuilderProps.property.securityGroup"></a>
3853
4498
 
3854
- - *Deprecated:* use {@link securityGroups}
4499
+ - *Deprecated:* use {@link securityGroups }
3855
4500
 
3856
4501
  ```typescript
3857
4502
  public readonly securityGroup: ISecurityGroup;
@@ -3905,6 +4550,37 @@ VPC where builder instances will be launched.
3905
4550
 
3906
4551
  ---
3907
4552
 
4553
+ ### AwsImageBuilderRunnerImageBuilderProps <a name="AwsImageBuilderRunnerImageBuilderProps" id="@cloudsnorkel/cdk-github-runners.AwsImageBuilderRunnerImageBuilderProps"></a>
4554
+
4555
+ #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.AwsImageBuilderRunnerImageBuilderProps.Initializer"></a>
4556
+
4557
+ ```typescript
4558
+ import { AwsImageBuilderRunnerImageBuilderProps } from '@cloudsnorkel/cdk-github-runners'
4559
+
4560
+ const awsImageBuilderRunnerImageBuilderProps: AwsImageBuilderRunnerImageBuilderProps = { ... }
4561
+ ```
4562
+
4563
+ #### Properties <a name="Properties" id="Properties"></a>
4564
+
4565
+ | **Name** | **Type** | **Description** |
4566
+ | --- | --- | --- |
4567
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.AwsImageBuilderRunnerImageBuilderProps.property.instanceType">instanceType</a></code> | <code>aws-cdk-lib.aws_ec2.InstanceType</code> | The instance type used to build the image. |
4568
+
4569
+ ---
4570
+
4571
+ ##### `instanceType`<sup>Optional</sup> <a name="instanceType" id="@cloudsnorkel/cdk-github-runners.AwsImageBuilderRunnerImageBuilderProps.property.instanceType"></a>
4572
+
4573
+ ```typescript
4574
+ public readonly instanceType: InstanceType;
4575
+ ```
4576
+
4577
+ - *Type:* aws-cdk-lib.aws_ec2.InstanceType
4578
+ - *Default:* m5.large
4579
+
4580
+ The instance type used to build the image.
4581
+
4582
+ ---
4583
+
3908
4584
  ### CodeBuildImageBuilderProps <a name="CodeBuildImageBuilderProps" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilderProps"></a>
3909
4585
 
3910
4586
  Properties for CodeBuildImageBuilder construct.
@@ -3988,7 +4664,7 @@ public readonly computeType: ComputeType;
3988
4664
  ```
3989
4665
 
3990
4666
  - *Type:* aws-cdk-lib.aws_codebuild.ComputeType
3991
- - *Default:* {@link ComputeType#SMALL}
4667
+ - *Default:* {@link ComputeType#SMALL }
3992
4668
 
3993
4669
  The type of compute to use for this build.
3994
4670
 
@@ -4128,73 +4804,51 @@ VPC to build the image in.
4128
4804
 
4129
4805
  ---
4130
4806
 
4131
- ### CodeBuildRunnerProviderProps <a name="CodeBuildRunnerProviderProps" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps"></a>
4807
+ ### CodeBuildRunnerImageBuilderProps <a name="CodeBuildRunnerImageBuilderProps" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerImageBuilderProps"></a>
4132
4808
 
4133
- #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.Initializer"></a>
4809
+ #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerImageBuilderProps.Initializer"></a>
4134
4810
 
4135
4811
  ```typescript
4136
- import { CodeBuildRunnerProviderProps } from '@cloudsnorkel/cdk-github-runners'
4812
+ import { CodeBuildRunnerImageBuilderProps } from '@cloudsnorkel/cdk-github-runners'
4137
4813
 
4138
- const codeBuildRunnerProviderProps: CodeBuildRunnerProviderProps = { ... }
4814
+ const codeBuildRunnerImageBuilderProps: CodeBuildRunnerImageBuilderProps = { ... }
4139
4815
  ```
4140
4816
 
4141
4817
  #### Properties <a name="Properties" id="Properties"></a>
4142
4818
 
4143
4819
  | **Name** | **Type** | **Description** |
4144
4820
  | --- | --- | --- |
4145
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.logRetention">logRetention</a></code> | <code>aws-cdk-lib.aws_logs.RetentionDays</code> | The number of days log events are kept in CloudWatch Logs. |
4146
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.retryOptions">retryOptions</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.ProviderRetryOptions">ProviderRetryOptions</a></code> | Options to retry operation in case of failure like missing capacity, or API quota issues. |
4147
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.computeType">computeType</a></code> | <code>aws-cdk-lib.aws_codebuild.ComputeType</code> | The type of compute to use for this build. |
4148
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.dockerInDocker">dockerInDocker</a></code> | <code>boolean</code> | Support building and running Docker images by enabling Docker-in-Docker (dind) and the required CodeBuild privileged mode. |
4149
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.imageBuilder">imageBuilder</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder">IImageBuilder</a></code> | Image builder for CodeBuild image with GitHub runner pre-configured. |
4150
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.label">label</a></code> | <code>string</code> | GitHub Actions label used for this provider. |
4151
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.labels">labels</a></code> | <code>string[]</code> | GitHub Actions labels used for this provider. |
4152
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | Security group to assign to this instance. |
4153
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.securityGroups">securityGroups</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup[]</code> | Security groups to assign to this instance. |
4154
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.subnetSelection">subnetSelection</a></code> | <code>aws-cdk-lib.aws_ec2.SubnetSelection</code> | Where to place the network interfaces within the VPC. |
4155
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.timeout">timeout</a></code> | <code>aws-cdk-lib.Duration</code> | The number of minutes after which AWS CodeBuild stops the build if it's not complete. |
4156
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.vpc">vpc</a></code> | <code>aws-cdk-lib.aws_ec2.IVpc</code> | VPC to launch the runners in. |
4821
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerImageBuilderProps.property.buildImage">buildImage</a></code> | <code>aws-cdk-lib.aws_codebuild.IBuildImage</code> | Build image to use in CodeBuild. |
4822
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerImageBuilderProps.property.computeType">computeType</a></code> | <code>aws-cdk-lib.aws_codebuild.ComputeType</code> | The type of compute to use for this build. |
4823
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerImageBuilderProps.property.timeout">timeout</a></code> | <code>aws-cdk-lib.Duration</code> | The number of minutes after which AWS CodeBuild stops the build if it's not complete. |
4157
4824
 
4158
4825
  ---
4159
4826
 
4160
- ##### `logRetention`<sup>Optional</sup> <a name="logRetention" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.logRetention"></a>
4827
+ ##### `buildImage`<sup>Optional</sup> <a name="buildImage" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerImageBuilderProps.property.buildImage"></a>
4161
4828
 
4162
4829
  ```typescript
4163
- public readonly logRetention: RetentionDays;
4830
+ public readonly buildImage: IBuildImage;
4164
4831
  ```
4165
4832
 
4166
- - *Type:* aws-cdk-lib.aws_logs.RetentionDays
4167
- - *Default:* logs.RetentionDays.ONE_MONTH
4168
-
4169
- The number of days log events are kept in CloudWatch Logs.
4170
-
4171
- When updating
4172
- this property, unsetting it doesn't remove the log retention policy. To
4173
- remove the retention policy, set the value to `INFINITE`.
4174
-
4175
- ---
4176
-
4177
- ##### `retryOptions`<sup>Optional</sup> <a name="retryOptions" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.retryOptions"></a>
4833
+ - *Type:* aws-cdk-lib.aws_codebuild.IBuildImage
4834
+ - *Default:* Ubuntu 20.04 for x64 and Amazon Linux 2 for ARM64
4178
4835
 
4179
- ```typescript
4180
- public readonly retryOptions: ProviderRetryOptions;
4181
- ```
4836
+ Build image to use in CodeBuild.
4182
4837
 
4183
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.ProviderRetryOptions">ProviderRetryOptions</a>
4184
- - *Default:* retry 10 times up to about 45 minutes
4838
+ This is the image that's going to run the code that builds the runner image.
4185
4839
 
4186
- Options to retry operation in case of failure like missing capacity, or API quota issues.
4840
+ The only action taken in CodeBuild is running `docker build`. You would therefore not need to change this setting often.
4187
4841
 
4188
4842
  ---
4189
4843
 
4190
- ##### `computeType`<sup>Optional</sup> <a name="computeType" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.computeType"></a>
4844
+ ##### `computeType`<sup>Optional</sup> <a name="computeType" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerImageBuilderProps.property.computeType"></a>
4191
4845
 
4192
4846
  ```typescript
4193
4847
  public readonly computeType: ComputeType;
4194
4848
  ```
4195
4849
 
4196
4850
  - *Type:* aws-cdk-lib.aws_codebuild.ComputeType
4197
- - *Default:* {@link ComputeType#SMALL}
4851
+ - *Default:* {@link ComputeType#SMALL }
4198
4852
 
4199
4853
  The type of compute to use for this build.
4200
4854
 
@@ -4202,34 +4856,124 @@ See the {@link ComputeType} enum for the possible values.
4202
4856
 
4203
4857
  ---
4204
4858
 
4205
- ##### `dockerInDocker`<sup>Optional</sup> <a name="dockerInDocker" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.dockerInDocker"></a>
4859
+ ##### `timeout`<sup>Optional</sup> <a name="timeout" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerImageBuilderProps.property.timeout"></a>
4206
4860
 
4207
4861
  ```typescript
4208
- public readonly dockerInDocker: boolean;
4862
+ public readonly timeout: Duration;
4209
4863
  ```
4210
4864
 
4211
- - *Type:* boolean
4212
- - *Default:* true
4865
+ - *Type:* aws-cdk-lib.Duration
4866
+ - *Default:* Duration.hours(1)
4213
4867
 
4214
- Support building and running Docker images by enabling Docker-in-Docker (dind) and the required CodeBuild privileged mode.
4868
+ The number of minutes after which AWS CodeBuild stops the build if it's not complete.
4215
4869
 
4216
- Disabling this can
4217
- speed up provisioning of CodeBuild runners. If you don't intend on running or building Docker images, disable this for faster start-up times.
4870
+ For valid values, see the timeoutInMinutes field in the AWS
4871
+ CodeBuild User Guide.
4218
4872
 
4219
4873
  ---
4220
4874
 
4221
- ##### `imageBuilder`<sup>Optional</sup> <a name="imageBuilder" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.imageBuilder"></a>
4875
+ ### CodeBuildRunnerProviderProps <a name="CodeBuildRunnerProviderProps" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps"></a>
4876
+
4877
+ #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.Initializer"></a>
4878
+
4879
+ ```typescript
4880
+ import { CodeBuildRunnerProviderProps } from '@cloudsnorkel/cdk-github-runners'
4881
+
4882
+ const codeBuildRunnerProviderProps: CodeBuildRunnerProviderProps = { ... }
4883
+ ```
4884
+
4885
+ #### Properties <a name="Properties" id="Properties"></a>
4886
+
4887
+ | **Name** | **Type** | **Description** |
4888
+ | --- | --- | --- |
4889
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.logRetention">logRetention</a></code> | <code>aws-cdk-lib.aws_logs.RetentionDays</code> | The number of days log events are kept in CloudWatch Logs. |
4890
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.retryOptions">retryOptions</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.ProviderRetryOptions">ProviderRetryOptions</a></code> | Options to retry operation in case of failure like missing capacity, or API quota issues. |
4891
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.computeType">computeType</a></code> | <code>aws-cdk-lib.aws_codebuild.ComputeType</code> | The type of compute to use for this build. |
4892
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.dockerInDocker">dockerInDocker</a></code> | <code>boolean</code> | Support building and running Docker images by enabling Docker-in-Docker (dind) and the required CodeBuild privileged mode. |
4893
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.imageBuilder">imageBuilder</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder">IRunnerImageBuilder</a></code> | Runner image builder used to build Docker images containing GitHub Runner and all requirements. |
4894
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.label">label</a></code> | <code>string</code> | GitHub Actions label used for this provider. |
4895
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.labels">labels</a></code> | <code>string[]</code> | GitHub Actions labels used for this provider. |
4896
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | Security group to assign to this instance. |
4897
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.securityGroups">securityGroups</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup[]</code> | Security groups to assign to this instance. |
4898
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.subnetSelection">subnetSelection</a></code> | <code>aws-cdk-lib.aws_ec2.SubnetSelection</code> | Where to place the network interfaces within the VPC. |
4899
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.timeout">timeout</a></code> | <code>aws-cdk-lib.Duration</code> | The number of minutes after which AWS CodeBuild stops the build if it's not complete. |
4900
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.vpc">vpc</a></code> | <code>aws-cdk-lib.aws_ec2.IVpc</code> | VPC to launch the runners in. |
4901
+
4902
+ ---
4903
+
4904
+ ##### `logRetention`<sup>Optional</sup> <a name="logRetention" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.logRetention"></a>
4905
+
4906
+ ```typescript
4907
+ public readonly logRetention: RetentionDays;
4908
+ ```
4909
+
4910
+ - *Type:* aws-cdk-lib.aws_logs.RetentionDays
4911
+ - *Default:* logs.RetentionDays.ONE_MONTH
4912
+
4913
+ The number of days log events are kept in CloudWatch Logs.
4914
+
4915
+ When updating
4916
+ this property, unsetting it doesn't remove the log retention policy. To
4917
+ remove the retention policy, set the value to `INFINITE`.
4918
+
4919
+ ---
4920
+
4921
+ ##### `retryOptions`<sup>Optional</sup> <a name="retryOptions" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.retryOptions"></a>
4922
+
4923
+ ```typescript
4924
+ public readonly retryOptions: ProviderRetryOptions;
4925
+ ```
4926
+
4927
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.ProviderRetryOptions">ProviderRetryOptions</a>
4928
+ - *Default:* retry 10 times up to about 45 minutes
4929
+
4930
+ Options to retry operation in case of failure like missing capacity, or API quota issues.
4931
+
4932
+ ---
4933
+
4934
+ ##### `computeType`<sup>Optional</sup> <a name="computeType" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.computeType"></a>
4935
+
4936
+ ```typescript
4937
+ public readonly computeType: ComputeType;
4938
+ ```
4939
+
4940
+ - *Type:* aws-cdk-lib.aws_codebuild.ComputeType
4941
+ - *Default:* {@link ComputeType#SMALL }
4942
+
4943
+ The type of compute to use for this build.
4944
+
4945
+ See the {@link ComputeType} enum for the possible values.
4946
+
4947
+ ---
4948
+
4949
+ ##### `dockerInDocker`<sup>Optional</sup> <a name="dockerInDocker" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.dockerInDocker"></a>
4950
+
4951
+ ```typescript
4952
+ public readonly dockerInDocker: boolean;
4953
+ ```
4954
+
4955
+ - *Type:* boolean
4956
+ - *Default:* true
4957
+
4958
+ Support building and running Docker images by enabling Docker-in-Docker (dind) and the required CodeBuild privileged mode.
4959
+
4960
+ Disabling this can
4961
+ speed up provisioning of CodeBuild runners. If you don't intend on running or building Docker images, disable this for faster start-up times.
4962
+
4963
+ ---
4964
+
4965
+ ##### `imageBuilder`<sup>Optional</sup> <a name="imageBuilder" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.imageBuilder"></a>
4222
4966
 
4223
4967
  ```typescript
4224
- public readonly imageBuilder: IImageBuilder;
4968
+ public readonly imageBuilder: IRunnerImageBuilder;
4225
4969
  ```
4226
4970
 
4227
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder">IImageBuilder</a>
4228
- - *Default:* image builder with `CodeBuildRunner.LINUX_X64_DOCKERFILE_PATH` as Dockerfile
4971
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder">IRunnerImageBuilder</a>
4972
+ - *Default:* CodeBuildRunnerProviderProps.imageBuilder()
4229
4973
 
4230
- Image builder for CodeBuild image with GitHub runner pre-configured.
4974
+ Runner image builder used to build Docker images containing GitHub Runner and all requirements.
4231
4975
 
4232
- A user named `runner` is expected to exist with access to Docker-in-Docker.
4976
+ The image builder must contain the {@link RunnerImageComponent.dockerInDocker} component unless `dockerInDocker` is set to false.
4233
4977
 
4234
4978
  The image builder determines the OS and architecture of the runner.
4235
4979
 
@@ -4237,7 +4981,7 @@ The image builder determines the OS and architecture of the runner.
4237
4981
 
4238
4982
  ##### ~~`label`~~<sup>Optional</sup> <a name="label" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.label"></a>
4239
4983
 
4240
- - *Deprecated:* use {@link labels} instead
4984
+ - *Deprecated:* use {@link labels } instead
4241
4985
 
4242
4986
  ```typescript
4243
4987
  public readonly label: string;
@@ -4269,7 +5013,7 @@ job's labels, this provider will be chosen and spawn a new runner.
4269
5013
 
4270
5014
  ##### ~~`securityGroup`~~<sup>Optional</sup> <a name="securityGroup" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps.property.securityGroup"></a>
4271
5015
 
4272
- - *Deprecated:* use {@link securityGroups}
5016
+ - *Deprecated:* use {@link securityGroups }
4273
5017
 
4274
5018
  ```typescript
4275
5019
  public readonly securityGroup: ISecurityGroup;
@@ -4289,7 +5033,7 @@ public readonly securityGroups: ISecurityGroup[];
4289
5033
  ```
4290
5034
 
4291
5035
  - *Type:* aws-cdk-lib.aws_ec2.ISecurityGroup[]
4292
- - *Default:* a new security group, if {@link vpc} is used
5036
+ - *Default:* a new security group, if {@link vpc } is used
4293
5037
 
4294
5038
  Security groups to assign to this instance.
4295
5039
 
@@ -4488,7 +5232,7 @@ Version of GitHub Runners to install.
4488
5232
 
4489
5233
  ##### ~~`securityGroup`~~<sup>Optional</sup> <a name="securityGroup" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.securityGroup"></a>
4490
5234
 
4491
- - *Deprecated:* use {@link securityGroups}
5235
+ - *Deprecated:* use {@link securityGroups }
4492
5236
 
4493
5237
  ```typescript
4494
5238
  public readonly securityGroup: ISecurityGroup;
@@ -4558,7 +5302,8 @@ const ec2RunnerProviderProps: Ec2RunnerProviderProps = { ... }
4558
5302
  | --- | --- | --- |
4559
5303
  | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProviderProps.property.logRetention">logRetention</a></code> | <code>aws-cdk-lib.aws_logs.RetentionDays</code> | The number of days log events are kept in CloudWatch Logs. |
4560
5304
  | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProviderProps.property.retryOptions">retryOptions</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.ProviderRetryOptions">ProviderRetryOptions</a></code> | Options to retry operation in case of failure like missing capacity, or API quota issues. |
4561
- | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProviderProps.property.amiBuilder">amiBuilder</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.IAmiBuilder">IAmiBuilder</a></code> | AMI builder that creates AMIs with GitHub runner pre-configured. |
5305
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProviderProps.property.amiBuilder">amiBuilder</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder">IRunnerImageBuilder</a></code> | *No description.* |
5306
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProviderProps.property.imageBuilder">imageBuilder</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder">IRunnerImageBuilder</a></code> | Runner image builder used to build AMI containing GitHub Runner and all requirements. |
4562
5307
  | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProviderProps.property.instanceType">instanceType</a></code> | <code>aws-cdk-lib.aws_ec2.InstanceType</code> | Instance type for launched runner instances. |
4563
5308
  | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProviderProps.property.labels">labels</a></code> | <code>string[]</code> | GitHub Actions labels used for this provider. |
4564
5309
  | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProviderProps.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | Security Group to assign to launched runner instances. |
@@ -4602,20 +5347,30 @@ Options to retry operation in case of failure like missing capacity, or API quot
4602
5347
 
4603
5348
  ---
4604
5349
 
4605
- ##### `amiBuilder`<sup>Optional</sup> <a name="amiBuilder" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProviderProps.property.amiBuilder"></a>
5350
+ ##### ~~`amiBuilder`~~<sup>Optional</sup> <a name="amiBuilder" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProviderProps.property.amiBuilder"></a>
5351
+
5352
+ - *Deprecated:* use imageBuilder
4606
5353
 
4607
5354
  ```typescript
4608
- public readonly amiBuilder: IAmiBuilder;
5355
+ public readonly amiBuilder: IRunnerImageBuilder;
4609
5356
  ```
4610
5357
 
4611
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IAmiBuilder">IAmiBuilder</a>
4612
- - *Default:* AMI builder for Ubuntu Linux on the same subnet as configured by {@link vpc} and {@link subnetSelection}
5358
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder">IRunnerImageBuilder</a>
5359
+
5360
+ ---
5361
+
5362
+ ##### `imageBuilder`<sup>Optional</sup> <a name="imageBuilder" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProviderProps.property.imageBuilder"></a>
5363
+
5364
+ ```typescript
5365
+ public readonly imageBuilder: IRunnerImageBuilder;
5366
+ ```
4613
5367
 
4614
- AMI builder that creates AMIs with GitHub runner pre-configured.
5368
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder">IRunnerImageBuilder</a>
5369
+ - *Default:* Ec2ProviderProps.imageBuilder()
4615
5370
 
4616
- On Linux, a user named `runner` is expected to exist with access to Docker.
5371
+ Runner image builder used to build AMI containing GitHub Runner and all requirements.
4617
5372
 
4618
- The AMI builder determines the OS and architecture of the runner.
5373
+ The image builder determines the OS and architecture of the runner.
4619
5374
 
4620
5375
  ---
4621
5376
 
@@ -4651,7 +5406,7 @@ job's labels, this provider will be chosen and spawn a new runner.
4651
5406
 
4652
5407
  ##### ~~`securityGroup`~~<sup>Optional</sup> <a name="securityGroup" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProviderProps.property.securityGroup"></a>
4653
5408
 
4654
- - *Deprecated:* use {@link securityGroups}
5409
+ - *Deprecated:* use {@link securityGroups }
4655
5410
 
4656
5411
  ```typescript
4657
5412
  public readonly securityGroup: ISecurityGroup;
@@ -4722,7 +5477,7 @@ This modifies the boot volume size and doesn't add any additional volumes.
4722
5477
 
4723
5478
  ##### ~~`subnet`~~<sup>Optional</sup> <a name="subnet" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProviderProps.property.subnet"></a>
4724
5479
 
4725
- - *Deprecated:* use {@link vpc} and {@link subnetSelection}
5480
+ - *Deprecated:* use {@link vpc } and {@link subnetSelection }
4726
5481
 
4727
5482
  ```typescript
4728
5483
  public readonly subnet: ISubnet;
@@ -4785,7 +5540,7 @@ const fargateRunnerProviderProps: FargateRunnerProviderProps = { ... }
4785
5540
  | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProviderProps.property.cluster">cluster</a></code> | <code>aws-cdk-lib.aws_ecs.Cluster</code> | Existing Fargate cluster to use. |
4786
5541
  | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProviderProps.property.cpu">cpu</a></code> | <code>number</code> | The number of cpu units used by the task. |
4787
5542
  | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProviderProps.property.ephemeralStorageGiB">ephemeralStorageGiB</a></code> | <code>number</code> | The amount (in GiB) of ephemeral storage to be allocated to the task. |
4788
- | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProviderProps.property.imageBuilder">imageBuilder</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder">IImageBuilder</a></code> | Provider running an image to run inside CodeBuild with GitHub runner pre-configured. |
5543
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProviderProps.property.imageBuilder">imageBuilder</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder">IRunnerImageBuilder</a></code> | Runner image builder used to build Docker images containing GitHub Runner and all requirements. |
4789
5544
  | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProviderProps.property.label">label</a></code> | <code>string</code> | GitHub Actions label used for this provider. |
4790
5545
  | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProviderProps.property.labels">labels</a></code> | <code>string[]</code> | GitHub Actions labels used for this provider. |
4791
5546
  | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProviderProps.property.memoryLimitMiB">memoryLimitMiB</a></code> | <code>number</code> | The amount (in MiB) of memory used by the task. |
@@ -4902,15 +5657,13 @@ NOTE: This parameter is only supported for tasks hosted on AWS Fargate using pla
4902
5657
  ##### `imageBuilder`<sup>Optional</sup> <a name="imageBuilder" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProviderProps.property.imageBuilder"></a>
4903
5658
 
4904
5659
  ```typescript
4905
- public readonly imageBuilder: IImageBuilder;
5660
+ public readonly imageBuilder: IRunnerImageBuilder;
4906
5661
  ```
4907
5662
 
4908
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder">IImageBuilder</a>
4909
- - *Default:* image builder with `FargateRunner.LINUX_X64_DOCKERFILE_PATH` as Dockerfile
4910
-
4911
- Provider running an image to run inside CodeBuild with GitHub runner pre-configured.
5663
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder">IRunnerImageBuilder</a>
5664
+ - *Default:* FargateRunnerProviderProps.imageBuilder()
4912
5665
 
4913
- A user named `runner` is expected to exist.
5666
+ Runner image builder used to build Docker images containing GitHub Runner and all requirements.
4914
5667
 
4915
5668
  The image builder determines the OS and architecture of the runner.
4916
5669
 
@@ -4918,7 +5671,7 @@ The image builder determines the OS and architecture of the runner.
4918
5671
 
4919
5672
  ##### ~~`label`~~<sup>Optional</sup> <a name="label" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProviderProps.property.label"></a>
4920
5673
 
4921
- - *Deprecated:* use {@link labels} instead
5674
+ - *Deprecated:* use {@link labels } instead
4922
5675
 
4923
5676
  ```typescript
4924
5677
  public readonly label: string;
@@ -4976,7 +5729,7 @@ Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - Available c
4976
5729
 
4977
5730
  ##### ~~`securityGroup`~~<sup>Optional</sup> <a name="securityGroup" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProviderProps.property.securityGroup"></a>
4978
5731
 
4979
- - *Deprecated:* use {@link securityGroups}
5732
+ - *Deprecated:* use {@link securityGroups }
4980
5733
 
4981
5734
  ```typescript
4982
5735
  public readonly securityGroup: ISecurityGroup;
@@ -5096,25 +5849,23 @@ public readonly extraCertificates: string;
5096
5849
 
5097
5850
  Path to a directory containing a file named certs.pem containing any additional certificates required to trust GitHub Enterprise Server. Use this when GitHub Enterprise Server certificates are self-signed.
5098
5851
 
5099
- You may also want to use custom images for your runner providers that contain the same certificates. See {@link CodeBuildImageBuilder.addCertificates}.
5852
+ You may also want to use custom images for your runner providers that contain the same certificates. See {@link CodeBuildImageBuilder.addCertificates }.
5100
5853
 
5101
5854
  ```typescript
5102
- const imageBuilder = new CodeBuildImageBuilder(this, 'Image Builder with Certs', {
5103
- dockerfilePath: CodeBuildRunner.LINUX_X64_DOCKERFILE_PATH,
5104
- });
5105
- imageBuilder.addExtraCertificates('path-to-my-extra-certs-folder');
5855
+ const imageBuilder = CodeBuildRunnerProvider.imageBuilder(this, 'Image Builder with Certs');
5856
+ imageBuilder.addComponent(RunnerImageComponent.extraCertificates('path-to-my-extra-certs-folder/certs.pem', 'private-ca');
5106
5857
 
5107
- const provider = new CodeBuildRunner(this, 'CodeBuild', {
5108
- imageBuilder: imageBuilder,
5858
+ const provider = new CodeBuildRunnerProvider(this, 'CodeBuild', {
5859
+ imageBuilder: imageBuilder,
5109
5860
  });
5110
5861
 
5111
5862
  new GitHubRunners(
5112
- this,
5113
- 'runners',
5114
- {
5115
- providers: [provider],
5116
- extraCertificates: 'path-to-my-extra-certs-folder',
5117
- }
5863
+ this,
5864
+ 'runners',
5865
+ {
5866
+ providers: [provider],
5867
+ extraCertificates: 'path-to-my-extra-certs-folder',
5868
+ }
5118
5869
  );
5119
5870
  ```
5120
5871
 
@@ -5355,7 +6106,7 @@ const lambdaRunnerProviderProps: LambdaRunnerProviderProps = { ... }
5355
6106
  | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunnerProviderProps.property.logRetention">logRetention</a></code> | <code>aws-cdk-lib.aws_logs.RetentionDays</code> | The number of days log events are kept in CloudWatch Logs. |
5356
6107
  | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunnerProviderProps.property.retryOptions">retryOptions</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.ProviderRetryOptions">ProviderRetryOptions</a></code> | Options to retry operation in case of failure like missing capacity, or API quota issues. |
5357
6108
  | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunnerProviderProps.property.ephemeralStorageSize">ephemeralStorageSize</a></code> | <code>aws-cdk-lib.Size</code> | The size of the function’s /tmp directory in MiB. |
5358
- | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunnerProviderProps.property.imageBuilder">imageBuilder</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder">IImageBuilder</a></code> | Provider running an image to run inside CodeBuild with GitHub runner pre-configured. |
6109
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunnerProviderProps.property.imageBuilder">imageBuilder</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder">IRunnerImageBuilder</a></code> | Runner image builder used to build Docker images containing GitHub Runner and all requirements. |
5359
6110
  | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunnerProviderProps.property.label">label</a></code> | <code>string</code> | GitHub Actions label used for this provider. |
5360
6111
  | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunnerProviderProps.property.labels">labels</a></code> | <code>string[]</code> | GitHub Actions labels used for this provider. |
5361
6112
  | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunnerProviderProps.property.memorySize">memorySize</a></code> | <code>number</code> | The amount of memory, in MB, that is allocated to your Lambda function. |
@@ -5413,25 +6164,23 @@ The size of the function’s /tmp directory in MiB.
5413
6164
  ##### `imageBuilder`<sup>Optional</sup> <a name="imageBuilder" id="@cloudsnorkel/cdk-github-runners.LambdaRunnerProviderProps.property.imageBuilder"></a>
5414
6165
 
5415
6166
  ```typescript
5416
- public readonly imageBuilder: IImageBuilder;
6167
+ public readonly imageBuilder: IRunnerImageBuilder;
5417
6168
  ```
5418
6169
 
5419
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder">IImageBuilder</a>
5420
- - *Default:* image builder with LambdaRunner.LINUX_X64_DOCKERFILE_PATH as Dockerfile
6170
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder">IRunnerImageBuilder</a>
6171
+ - *Default:* LambdaRunnerProviderProps.imageBuilder()
5421
6172
 
5422
- Provider running an image to run inside CodeBuild with GitHub runner pre-configured.
6173
+ Runner image builder used to build Docker images containing GitHub Runner and all requirements.
5423
6174
 
5424
- The default command (`CMD`) should be `["runner.handler"]` which points to an included `runner.js` with a function named `handler`. The function should start the GitHub runner.
6175
+ The image builder must contain the {@link RunnerImageComponent.lambdaEntrypoint} component.
5425
6176
 
5426
6177
  The image builder determines the OS and architecture of the runner.
5427
6178
 
5428
- > [https://github.com/CloudSnorkel/cdk-github-runners/tree/main/src/providers/docker-images/lambda](https://github.com/CloudSnorkel/cdk-github-runners/tree/main/src/providers/docker-images/lambda)
5429
-
5430
6179
  ---
5431
6180
 
5432
6181
  ##### ~~`label`~~<sup>Optional</sup> <a name="label" id="@cloudsnorkel/cdk-github-runners.LambdaRunnerProviderProps.property.label"></a>
5433
6182
 
5434
- - *Deprecated:* use {@link labels} instead
6183
+ - *Deprecated:* use {@link labels } instead
5435
6184
 
5436
6185
  ```typescript
5437
6186
  public readonly label: string;
@@ -5480,7 +6229,7 @@ Developer Guide.
5480
6229
 
5481
6230
  ##### ~~`securityGroup`~~<sup>Optional</sup> <a name="securityGroup" id="@cloudsnorkel/cdk-github-runners.LambdaRunnerProviderProps.property.securityGroup"></a>
5482
6231
 
5483
- - *Deprecated:* use {@link securityGroups}
6232
+ - *Deprecated:* use {@link securityGroups }
5484
6233
 
5485
6234
  ```typescript
5486
6235
  public readonly securityGroup: ISecurityGroup;
@@ -5709,7 +6458,7 @@ Which failures generate a retry depends on the specific provider.
5709
6458
 
5710
6459
  ### RunnerAmi <a name="RunnerAmi" id="@cloudsnorkel/cdk-github-runners.RunnerAmi"></a>
5711
6460
 
5712
- Description of a AMI built by {@link IAmiBuilder}.
6461
+ Description of a AMI built by {@link RunnerImageBuilder }.
5713
6462
 
5714
6463
  #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.RunnerAmi.Initializer"></a>
5715
6464
 
@@ -5767,7 +6516,9 @@ OS type of the image.
5767
6516
 
5768
6517
  ---
5769
6518
 
5770
- ##### `runnerVersion`<sup>Required</sup> <a name="runnerVersion" id="@cloudsnorkel/cdk-github-runners.RunnerAmi.property.runnerVersion"></a>
6519
+ ##### ~~`runnerVersion`~~<sup>Required</sup> <a name="runnerVersion" id="@cloudsnorkel/cdk-github-runners.RunnerAmi.property.runnerVersion"></a>
6520
+
6521
+ - *Deprecated:* open a ticket if you need this
5771
6522
 
5772
6523
  ```typescript
5773
6524
  public readonly runnerVersion: RunnerVersion;
@@ -5793,7 +6544,7 @@ Log group where image builds are logged.
5793
6544
 
5794
6545
  ### RunnerImage <a name="RunnerImage" id="@cloudsnorkel/cdk-github-runners.RunnerImage"></a>
5795
6546
 
5796
- Description of a Docker image built by {@link IImageBuilder}.
6547
+ Description of a Docker image built by {@link RunnerImageBuilder }.
5797
6548
 
5798
6549
  #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.RunnerImage.Initializer"></a>
5799
6550
 
@@ -5864,7 +6615,9 @@ OS type of the image.
5864
6615
 
5865
6616
  ---
5866
6617
 
5867
- ##### `runnerVersion`<sup>Required</sup> <a name="runnerVersion" id="@cloudsnorkel/cdk-github-runners.RunnerImage.property.runnerVersion"></a>
6618
+ ##### ~~`runnerVersion`~~<sup>Required</sup> <a name="runnerVersion" id="@cloudsnorkel/cdk-github-runners.RunnerImage.property.runnerVersion"></a>
6619
+
6620
+ - *Deprecated:* open a ticket if you need this
5868
6621
 
5869
6622
  ```typescript
5870
6623
  public readonly runnerVersion: RunnerVersion;
@@ -5888,615 +6641,1295 @@ Log group where image builds are logged.
5888
6641
 
5889
6642
  ---
5890
6643
 
5891
- ### RunnerProviderProps <a name="RunnerProviderProps" id="@cloudsnorkel/cdk-github-runners.RunnerProviderProps"></a>
6644
+ ### RunnerImageAsset <a name="RunnerImageAsset" id="@cloudsnorkel/cdk-github-runners.RunnerImageAsset"></a>
5892
6645
 
5893
- Common properties for all runner providers.
6646
+ Asset to copy into a built image.
5894
6647
 
5895
- #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.RunnerProviderProps.Initializer"></a>
6648
+ #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.RunnerImageAsset.Initializer"></a>
5896
6649
 
5897
6650
  ```typescript
5898
- import { RunnerProviderProps } from '@cloudsnorkel/cdk-github-runners'
6651
+ import { RunnerImageAsset } from '@cloudsnorkel/cdk-github-runners'
5899
6652
 
5900
- const runnerProviderProps: RunnerProviderProps = { ... }
6653
+ const runnerImageAsset: RunnerImageAsset = { ... }
5901
6654
  ```
5902
6655
 
5903
6656
  #### Properties <a name="Properties" id="Properties"></a>
5904
6657
 
5905
6658
  | **Name** | **Type** | **Description** |
5906
6659
  | --- | --- | --- |
5907
- | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerProviderProps.property.logRetention">logRetention</a></code> | <code>aws-cdk-lib.aws_logs.RetentionDays</code> | The number of days log events are kept in CloudWatch Logs. |
5908
- | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerProviderProps.property.retryOptions">retryOptions</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.ProviderRetryOptions">ProviderRetryOptions</a></code> | Options to retry operation in case of failure like missing capacity, or API quota issues. |
6660
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageAsset.property.source">source</a></code> | <code>string</code> | Path on local system to copy into the image. |
6661
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageAsset.property.target">target</a></code> | <code>string</code> | Target path in the built image. |
5909
6662
 
5910
6663
  ---
5911
6664
 
5912
- ##### `logRetention`<sup>Optional</sup> <a name="logRetention" id="@cloudsnorkel/cdk-github-runners.RunnerProviderProps.property.logRetention"></a>
6665
+ ##### `source`<sup>Required</sup> <a name="source" id="@cloudsnorkel/cdk-github-runners.RunnerImageAsset.property.source"></a>
5913
6666
 
5914
6667
  ```typescript
5915
- public readonly logRetention: RetentionDays;
6668
+ public readonly source: string;
5916
6669
  ```
5917
6670
 
5918
- - *Type:* aws-cdk-lib.aws_logs.RetentionDays
5919
- - *Default:* logs.RetentionDays.ONE_MONTH
6671
+ - *Type:* string
5920
6672
 
5921
- The number of days log events are kept in CloudWatch Logs.
6673
+ Path on local system to copy into the image.
5922
6674
 
5923
- When updating
5924
- this property, unsetting it doesn't remove the log retention policy. To
5925
- remove the retention policy, set the value to `INFINITE`.
6675
+ Can be a file or a directory.
5926
6676
 
5927
6677
  ---
5928
6678
 
5929
- ##### `retryOptions`<sup>Optional</sup> <a name="retryOptions" id="@cloudsnorkel/cdk-github-runners.RunnerProviderProps.property.retryOptions"></a>
6679
+ ##### `target`<sup>Required</sup> <a name="target" id="@cloudsnorkel/cdk-github-runners.RunnerImageAsset.property.target"></a>
5930
6680
 
5931
6681
  ```typescript
5932
- public readonly retryOptions: ProviderRetryOptions;
6682
+ public readonly target: string;
5933
6683
  ```
5934
6684
 
5935
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.ProviderRetryOptions">ProviderRetryOptions</a>
5936
- - *Default:* retry 10 times up to about 45 minutes
6685
+ - *Type:* string
5937
6686
 
5938
- Options to retry operation in case of failure like missing capacity, or API quota issues.
6687
+ Target path in the built image.
5939
6688
 
5940
6689
  ---
5941
6690
 
5942
- ### RunnerRuntimeParameters <a name="RunnerRuntimeParameters" id="@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters"></a>
5943
-
5944
- Workflow job parameters as parsed from the webhook event. Pass these into your runner executor and run something like:.
5945
-
5946
- ```sh
5947
- ./config.sh --unattended --url "https://${GITHUB_DOMAIN}/${OWNER}/${REPO}" --token "${RUNNER_TOKEN}" --ephemeral --work _work --labels "${RUNNER_LABEL}" --name "${RUNNER_NAME}" --disableupdate
5948
- ```
5949
-
5950
- All parameters are specified as step function paths and therefore must be used only in step function task parameters.
6691
+ ### RunnerImageBuilderProps <a name="RunnerImageBuilderProps" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps"></a>
5951
6692
 
5952
- #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.Initializer"></a>
6693
+ #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.Initializer"></a>
5953
6694
 
5954
6695
  ```typescript
5955
- import { RunnerRuntimeParameters } from '@cloudsnorkel/cdk-github-runners'
6696
+ import { RunnerImageBuilderProps } from '@cloudsnorkel/cdk-github-runners'
5956
6697
 
5957
- const runnerRuntimeParameters: RunnerRuntimeParameters = { ... }
6698
+ const runnerImageBuilderProps: RunnerImageBuilderProps = { ... }
5958
6699
  ```
5959
6700
 
5960
6701
  #### Properties <a name="Properties" id="Properties"></a>
5961
6702
 
5962
6703
  | **Name** | **Type** | **Description** |
5963
6704
  | --- | --- | --- |
5964
- | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.githubDomainPath">githubDomainPath</a></code> | <code>string</code> | Path to GitHub domain. |
5965
- | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.ownerPath">ownerPath</a></code> | <code>string</code> | Path to repostiroy owner name. |
5966
- | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.repoPath">repoPath</a></code> | <code>string</code> | Path to repository name. |
5967
- | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.runnerNamePath">runnerNamePath</a></code> | <code>string</code> | Path to desired runner name. |
5968
- | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.runnerTokenPath">runnerTokenPath</a></code> | <code>string</code> | Path to runner token used to register token. |
6705
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.architecture">architecture</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a></code> | Image architecture. |
6706
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.awsImageBuilderOptions">awsImageBuilderOptions</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.AwsImageBuilderRunnerImageBuilderProps">AwsImageBuilderRunnerImageBuilderProps</a></code> | Options specific to AWS Image Builder. |
6707
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.baseAmi">baseAmi</a></code> | <code>string</code> | Base AMI from which runner AMIs will be built. |
6708
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.baseDockerImage">baseDockerImage</a></code> | <code>string</code> | Base image from which Docker runner images will be built. |
6709
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.builderType">builderType</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderType">RunnerImageBuilderType</a></code> | *No description.* |
6710
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.codeBuildOptions">codeBuildOptions</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerImageBuilderProps">CodeBuildRunnerImageBuilderProps</a></code> | Options specific to CodeBuild image builder. |
6711
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.components">components</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent">RunnerImageComponent</a>[]</code> | Components to install on the image. |
6712
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.logRemovalPolicy">logRemovalPolicy</a></code> | <code>aws-cdk-lib.RemovalPolicy</code> | Removal policy for logs of image builds. |
6713
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.logRetention">logRetention</a></code> | <code>aws-cdk-lib.aws_logs.RetentionDays</code> | The number of days log events are kept in CloudWatch Logs. |
6714
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.os">os</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a></code> | Image OS. |
6715
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.rebuildInterval">rebuildInterval</a></code> | <code>aws-cdk-lib.Duration</code> | Schedule the image to be rebuilt every given interval. |
6716
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.runnerVersion">runnerVersion</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a></code> | Version of GitHub Runners to install. |
6717
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.securityGroups">securityGroups</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup[]</code> | Security Groups to assign to this instance. |
6718
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.subnetSelection">subnetSelection</a></code> | <code>aws-cdk-lib.aws_ec2.SubnetSelection</code> | Where to place the network interfaces within the VPC. |
6719
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.vpc">vpc</a></code> | <code>aws-cdk-lib.aws_ec2.IVpc</code> | VPC to build the image in. |
5969
6720
 
5970
6721
  ---
5971
6722
 
5972
- ##### `githubDomainPath`<sup>Required</sup> <a name="githubDomainPath" id="@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.githubDomainPath"></a>
6723
+ ##### `architecture`<sup>Optional</sup> <a name="architecture" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.architecture"></a>
5973
6724
 
5974
6725
  ```typescript
5975
- public readonly githubDomainPath: string;
6726
+ public readonly architecture: Architecture;
5976
6727
  ```
5977
6728
 
5978
- - *Type:* string
5979
-
5980
- Path to GitHub domain.
6729
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
6730
+ - *Default:* Architecture.X86_64
5981
6731
 
5982
- Most of the time this will be github.com but for self-hosted GitHub instances, this will be different.
6732
+ Image architecture.
5983
6733
 
5984
6734
  ---
5985
6735
 
5986
- ##### `ownerPath`<sup>Required</sup> <a name="ownerPath" id="@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.ownerPath"></a>
6736
+ ##### `awsImageBuilderOptions`<sup>Optional</sup> <a name="awsImageBuilderOptions" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.awsImageBuilderOptions"></a>
5987
6737
 
5988
6738
  ```typescript
5989
- public readonly ownerPath: string;
6739
+ public readonly awsImageBuilderOptions: AwsImageBuilderRunnerImageBuilderProps;
5990
6740
  ```
5991
6741
 
5992
- - *Type:* string
6742
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.AwsImageBuilderRunnerImageBuilderProps">AwsImageBuilderRunnerImageBuilderProps</a>
6743
+
6744
+ Options specific to AWS Image Builder.
5993
6745
 
5994
- Path to repostiroy owner name.
6746
+ Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
5995
6747
 
5996
6748
  ---
5997
6749
 
5998
- ##### `repoPath`<sup>Required</sup> <a name="repoPath" id="@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.repoPath"></a>
6750
+ ##### `baseAmi`<sup>Optional</sup> <a name="baseAmi" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.baseAmi"></a>
5999
6751
 
6000
6752
  ```typescript
6001
- public readonly repoPath: string;
6753
+ public readonly baseAmi: string;
6002
6754
  ```
6003
6755
 
6004
6756
  - *Type:* string
6757
+ - *Default:* latest Ubuntu 20.04 AMI for Os.LINUX_UBUNTU, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
6005
6758
 
6006
- Path to repository name.
6759
+ Base AMI from which runner AMIs will be built.
6007
6760
 
6008
6761
  ---
6009
6762
 
6010
- ##### `runnerNamePath`<sup>Required</sup> <a name="runnerNamePath" id="@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.runnerNamePath"></a>
6763
+ ##### `baseDockerImage`<sup>Optional</sup> <a name="baseDockerImage" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.baseDockerImage"></a>
6011
6764
 
6012
6765
  ```typescript
6013
- public readonly runnerNamePath: string;
6766
+ public readonly baseDockerImage: string;
6014
6767
  ```
6015
6768
 
6016
6769
  - *Type:* string
6770
+ - *Default:* public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
6017
6771
 
6018
- Path to desired runner name.
6019
-
6020
- We specifically set the name to make troubleshooting easier.
6772
+ Base image from which Docker runner images will be built.
6021
6773
 
6022
6774
  ---
6023
6775
 
6024
- ##### `runnerTokenPath`<sup>Required</sup> <a name="runnerTokenPath" id="@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.runnerTokenPath"></a>
6776
+ ##### `builderType`<sup>Optional</sup> <a name="builderType" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.builderType"></a>
6025
6777
 
6026
6778
  ```typescript
6027
- public readonly runnerTokenPath: string;
6779
+ public readonly builderType: RunnerImageBuilderType;
6028
6780
  ```
6029
6781
 
6030
- - *Type:* string
6031
-
6032
- Path to runner token used to register token.
6782
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderType">RunnerImageBuilderType</a>
6783
+ - *Default:* CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
6033
6784
 
6034
6785
  ---
6035
6786
 
6036
- ## Classes <a name="Classes" id="Classes"></a>
6787
+ ##### `codeBuildOptions`<sup>Optional</sup> <a name="codeBuildOptions" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.codeBuildOptions"></a>
6037
6788
 
6038
- ### Architecture <a name="Architecture" id="@cloudsnorkel/cdk-github-runners.Architecture"></a>
6789
+ ```typescript
6790
+ public readonly codeBuildOptions: CodeBuildRunnerImageBuilderProps;
6791
+ ```
6039
6792
 
6040
- CPU architecture enum for an image.
6793
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerImageBuilderProps">CodeBuildRunnerImageBuilderProps</a>
6041
6794
 
6042
- #### Methods <a name="Methods" id="Methods"></a>
6795
+ Options specific to CodeBuild image builder.
6043
6796
 
6044
- | **Name** | **Description** |
6045
- | --- | --- |
6046
- | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture.instanceTypeMatch">instanceTypeMatch</a></code> | Checks if a given EC2 instance type matches this architecture. |
6047
- | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture.is">is</a></code> | Checks if the given architecture is the same as this one. |
6048
- | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture.isIn">isIn</a></code> | Checks if this architecture is in a given list. |
6797
+ Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
6049
6798
 
6050
6799
  ---
6051
6800
 
6052
- ##### `instanceTypeMatch` <a name="instanceTypeMatch" id="@cloudsnorkel/cdk-github-runners.Architecture.instanceTypeMatch"></a>
6801
+ ##### `components`<sup>Optional</sup> <a name="components" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.components"></a>
6053
6802
 
6054
6803
  ```typescript
6055
- public instanceTypeMatch(instanceType: InstanceType): boolean
6804
+ public readonly components: RunnerImageComponent[];
6056
6805
  ```
6057
6806
 
6058
- Checks if a given EC2 instance type matches this architecture.
6059
-
6060
- ###### `instanceType`<sup>Required</sup> <a name="instanceType" id="@cloudsnorkel/cdk-github-runners.Architecture.instanceTypeMatch.parameter.instanceType"></a>
6061
-
6062
- - *Type:* aws-cdk-lib.aws_ec2.InstanceType
6807
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent">RunnerImageComponent</a>[]
6808
+ - *Default:* none
6063
6809
 
6064
- instance type to check.
6810
+ Components to install on the image.
6065
6811
 
6066
6812
  ---
6067
6813
 
6068
- ##### `is` <a name="is" id="@cloudsnorkel/cdk-github-runners.Architecture.is"></a>
6814
+ ##### `logRemovalPolicy`<sup>Optional</sup> <a name="logRemovalPolicy" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.logRemovalPolicy"></a>
6069
6815
 
6070
6816
  ```typescript
6071
- public is(arch: Architecture): boolean
6817
+ public readonly logRemovalPolicy: RemovalPolicy;
6072
6818
  ```
6073
6819
 
6074
- Checks if the given architecture is the same as this one.
6820
+ - *Type:* aws-cdk-lib.RemovalPolicy
6821
+ - *Default:* RemovalPolicy.DESTROY
6075
6822
 
6076
- ###### `arch`<sup>Required</sup> <a name="arch" id="@cloudsnorkel/cdk-github-runners.Architecture.is.parameter.arch"></a>
6823
+ Removal policy for logs of image builds.
6077
6824
 
6078
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
6825
+ If deployment fails on the custom resource, try setting this to `RemovalPolicy.RETAIN`. This way the CodeBuild logs can still be viewed, and you can see why the build failed.
6079
6826
 
6080
- architecture to compare.
6827
+ We try to not leave anything behind when removed. But sometimes a log staying behind is useful.
6081
6828
 
6082
6829
  ---
6083
6830
 
6084
- ##### `isIn` <a name="isIn" id="@cloudsnorkel/cdk-github-runners.Architecture.isIn"></a>
6831
+ ##### `logRetention`<sup>Optional</sup> <a name="logRetention" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.logRetention"></a>
6085
6832
 
6086
6833
  ```typescript
6087
- public isIn(arches: Architecture[]): boolean
6834
+ public readonly logRetention: RetentionDays;
6088
6835
  ```
6089
6836
 
6090
- Checks if this architecture is in a given list.
6091
-
6092
- ###### `arches`<sup>Required</sup> <a name="arches" id="@cloudsnorkel/cdk-github-runners.Architecture.isIn.parameter.arches"></a>
6837
+ - *Type:* aws-cdk-lib.aws_logs.RetentionDays
6838
+ - *Default:* logs.RetentionDays.ONE_MONTH
6093
6839
 
6094
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>[]
6840
+ The number of days log events are kept in CloudWatch Logs.
6095
6841
 
6096
- architectures to check.
6842
+ When updating
6843
+ this property, unsetting it doesn't remove the log retention policy. To
6844
+ remove the retention policy, set the value to `INFINITE`.
6097
6845
 
6098
6846
  ---
6099
6847
 
6848
+ ##### `os`<sup>Optional</sup> <a name="os" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.os"></a>
6100
6849
 
6101
- #### Properties <a name="Properties" id="Properties"></a>
6850
+ ```typescript
6851
+ public readonly os: Os;
6852
+ ```
6102
6853
 
6103
- | **Name** | **Type** | **Description** |
6104
- | --- | --- | --- |
6105
- | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture.property.name">name</a></code> | <code>string</code> | *No description.* |
6854
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
6855
+ - *Default:* OS.LINUX
6856
+
6857
+ Image OS.
6106
6858
 
6107
6859
  ---
6108
6860
 
6109
- ##### `name`<sup>Required</sup> <a name="name" id="@cloudsnorkel/cdk-github-runners.Architecture.property.name"></a>
6861
+ ##### `rebuildInterval`<sup>Optional</sup> <a name="rebuildInterval" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.rebuildInterval"></a>
6110
6862
 
6111
6863
  ```typescript
6112
- public readonly name: string;
6864
+ public readonly rebuildInterval: Duration;
6113
6865
  ```
6114
6866
 
6115
- - *Type:* string
6867
+ - *Type:* aws-cdk-lib.Duration
6868
+ - *Default:* Duration.days(7)
6116
6869
 
6117
- ---
6870
+ Schedule the image to be rebuilt every given interval.
6118
6871
 
6119
- #### Constants <a name="Constants" id="Constants"></a>
6872
+ Useful for keeping the image up-do-date with the latest GitHub runner version and latest OS updates.
6120
6873
 
6121
- | **Name** | **Type** | **Description** |
6122
- | --- | --- | --- |
6123
- | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture.property.ARM64">ARM64</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a></code> | ARM64. |
6124
- | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture.property.X86_64">X86_64</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a></code> | X86_64. |
6874
+ Set to zero to disable.
6125
6875
 
6126
6876
  ---
6127
6877
 
6128
- ##### `ARM64`<sup>Required</sup> <a name="ARM64" id="@cloudsnorkel/cdk-github-runners.Architecture.property.ARM64"></a>
6878
+ ##### `runnerVersion`<sup>Optional</sup> <a name="runnerVersion" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.runnerVersion"></a>
6129
6879
 
6130
6880
  ```typescript
6131
- public readonly ARM64: Architecture;
6881
+ public readonly runnerVersion: RunnerVersion;
6132
6882
  ```
6133
6883
 
6134
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
6884
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a>
6885
+ - *Default:* latest version available
6135
6886
 
6136
- ARM64.
6887
+ Version of GitHub Runners to install.
6137
6888
 
6138
6889
  ---
6139
6890
 
6140
- ##### `X86_64`<sup>Required</sup> <a name="X86_64" id="@cloudsnorkel/cdk-github-runners.Architecture.property.X86_64"></a>
6891
+ ##### `securityGroups`<sup>Optional</sup> <a name="securityGroups" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.securityGroups"></a>
6141
6892
 
6142
6893
  ```typescript
6143
- public readonly X86_64: Architecture;
6894
+ public readonly securityGroups: ISecurityGroup[];
6144
6895
  ```
6145
6896
 
6146
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
6897
+ - *Type:* aws-cdk-lib.aws_ec2.ISecurityGroup[]
6147
6898
 
6148
- X86_64.
6899
+ Security Groups to assign to this instance.
6149
6900
 
6150
6901
  ---
6151
6902
 
6152
- ### LinuxUbuntuComponents <a name="LinuxUbuntuComponents" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents"></a>
6153
-
6154
- Components for Ubuntu Linux that can be used with AWS Image Builder based builders.
6155
-
6156
- These cannot be used by {@link CodeBuildImageBuilder}.
6903
+ ##### `subnetSelection`<sup>Optional</sup> <a name="subnetSelection" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.subnetSelection"></a>
6904
+
6905
+ ```typescript
6906
+ public readonly subnetSelection: SubnetSelection;
6907
+ ```
6908
+
6909
+ - *Type:* aws-cdk-lib.aws_ec2.SubnetSelection
6910
+ - *Default:* no subnet
6911
+
6912
+ Where to place the network interfaces within the VPC.
6913
+
6914
+ ---
6915
+
6916
+ ##### `vpc`<sup>Optional</sup> <a name="vpc" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps.property.vpc"></a>
6917
+
6918
+ ```typescript
6919
+ public readonly vpc: IVpc;
6920
+ ```
6921
+
6922
+ - *Type:* aws-cdk-lib.aws_ec2.IVpc
6923
+ - *Default:* no VPC
6924
+
6925
+ VPC to build the image in.
6926
+
6927
+ ---
6928
+
6929
+ ### RunnerImageComponentCustomProps <a name="RunnerImageComponentCustomProps" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponentCustomProps"></a>
6930
+
6931
+ #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponentCustomProps.Initializer"></a>
6932
+
6933
+ ```typescript
6934
+ import { RunnerImageComponentCustomProps } from '@cloudsnorkel/cdk-github-runners'
6935
+
6936
+ const runnerImageComponentCustomProps: RunnerImageComponentCustomProps = { ... }
6937
+ ```
6938
+
6939
+ #### Properties <a name="Properties" id="Properties"></a>
6940
+
6941
+ | **Name** | **Type** | **Description** |
6942
+ | --- | --- | --- |
6943
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponentCustomProps.property.assets">assets</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageAsset">RunnerImageAsset</a>[]</code> | Assets to copy into the built image. |
6944
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponentCustomProps.property.commands">commands</a></code> | <code>string[]</code> | Commands to run in the built image. |
6945
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponentCustomProps.property.dockerCommands">dockerCommands</a></code> | <code>string[]</code> | Docker commands to run in the built image. |
6946
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponentCustomProps.property.name">name</a></code> | <code>string</code> | Component name used for (1) image build logging and (2) identifier for {@link ImageRunnerBuilder.removeComponent }. |
6947
+
6948
+ ---
6949
+
6950
+ ##### `assets`<sup>Optional</sup> <a name="assets" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponentCustomProps.property.assets"></a>
6951
+
6952
+ ```typescript
6953
+ public readonly assets: RunnerImageAsset[];
6954
+ ```
6955
+
6956
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImageAsset">RunnerImageAsset</a>[]
6957
+
6958
+ Assets to copy into the built image.
6959
+
6960
+ ---
6961
+
6962
+ ##### `commands`<sup>Optional</sup> <a name="commands" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponentCustomProps.property.commands"></a>
6963
+
6964
+ ```typescript
6965
+ public readonly commands: string[];
6966
+ ```
6967
+
6968
+ - *Type:* string[]
6969
+
6970
+ Commands to run in the built image.
6971
+
6972
+ ---
6973
+
6974
+ ##### `dockerCommands`<sup>Optional</sup> <a name="dockerCommands" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponentCustomProps.property.dockerCommands"></a>
6975
+
6976
+ ```typescript
6977
+ public readonly dockerCommands: string[];
6978
+ ```
6979
+
6980
+ - *Type:* string[]
6981
+
6982
+ Docker commands to run in the built image.
6983
+
6984
+ For example: `['ENV foo=bar', 'RUN echo $foo']`
6985
+
6986
+ These commands are ignored when building AMIs.
6987
+
6988
+ ---
6989
+
6990
+ ##### `name`<sup>Optional</sup> <a name="name" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponentCustomProps.property.name"></a>
6991
+
6992
+ ```typescript
6993
+ public readonly name: string;
6994
+ ```
6995
+
6996
+ - *Type:* string
6997
+
6998
+ Component name used for (1) image build logging and (2) identifier for {@link ImageRunnerBuilder.removeComponent }.
6999
+
7000
+ Name must only contain alphanumeric characters and dashes.
7001
+
7002
+ ---
7003
+
7004
+ ### RunnerProviderProps <a name="RunnerProviderProps" id="@cloudsnorkel/cdk-github-runners.RunnerProviderProps"></a>
7005
+
7006
+ Common properties for all runner providers.
7007
+
7008
+ #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.RunnerProviderProps.Initializer"></a>
7009
+
7010
+ ```typescript
7011
+ import { RunnerProviderProps } from '@cloudsnorkel/cdk-github-runners'
7012
+
7013
+ const runnerProviderProps: RunnerProviderProps = { ... }
7014
+ ```
7015
+
7016
+ #### Properties <a name="Properties" id="Properties"></a>
7017
+
7018
+ | **Name** | **Type** | **Description** |
7019
+ | --- | --- | --- |
7020
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerProviderProps.property.logRetention">logRetention</a></code> | <code>aws-cdk-lib.aws_logs.RetentionDays</code> | The number of days log events are kept in CloudWatch Logs. |
7021
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerProviderProps.property.retryOptions">retryOptions</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.ProviderRetryOptions">ProviderRetryOptions</a></code> | Options to retry operation in case of failure like missing capacity, or API quota issues. |
7022
+
7023
+ ---
7024
+
7025
+ ##### `logRetention`<sup>Optional</sup> <a name="logRetention" id="@cloudsnorkel/cdk-github-runners.RunnerProviderProps.property.logRetention"></a>
7026
+
7027
+ ```typescript
7028
+ public readonly logRetention: RetentionDays;
7029
+ ```
7030
+
7031
+ - *Type:* aws-cdk-lib.aws_logs.RetentionDays
7032
+ - *Default:* logs.RetentionDays.ONE_MONTH
7033
+
7034
+ The number of days log events are kept in CloudWatch Logs.
7035
+
7036
+ When updating
7037
+ this property, unsetting it doesn't remove the log retention policy. To
7038
+ remove the retention policy, set the value to `INFINITE`.
7039
+
7040
+ ---
7041
+
7042
+ ##### `retryOptions`<sup>Optional</sup> <a name="retryOptions" id="@cloudsnorkel/cdk-github-runners.RunnerProviderProps.property.retryOptions"></a>
7043
+
7044
+ ```typescript
7045
+ public readonly retryOptions: ProviderRetryOptions;
7046
+ ```
7047
+
7048
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.ProviderRetryOptions">ProviderRetryOptions</a>
7049
+ - *Default:* retry 10 times up to about 45 minutes
7050
+
7051
+ Options to retry operation in case of failure like missing capacity, or API quota issues.
7052
+
7053
+ ---
7054
+
7055
+ ### RunnerRuntimeParameters <a name="RunnerRuntimeParameters" id="@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters"></a>
7056
+
7057
+ Workflow job parameters as parsed from the webhook event. Pass these into your runner executor and run something like:.
7058
+
7059
+ ```sh
7060
+ ./config.sh --unattended --url "https://${GITHUB_DOMAIN}/${OWNER}/${REPO}" --token "${RUNNER_TOKEN}" --ephemeral --work _work --labels "${RUNNER_LABEL}" --name "${RUNNER_NAME}" --disableupdate
7061
+ ```
7062
+
7063
+ All parameters are specified as step function paths and therefore must be used only in step function task parameters.
7064
+
7065
+ #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.Initializer"></a>
7066
+
7067
+ ```typescript
7068
+ import { RunnerRuntimeParameters } from '@cloudsnorkel/cdk-github-runners'
7069
+
7070
+ const runnerRuntimeParameters: RunnerRuntimeParameters = { ... }
7071
+ ```
7072
+
7073
+ #### Properties <a name="Properties" id="Properties"></a>
7074
+
7075
+ | **Name** | **Type** | **Description** |
7076
+ | --- | --- | --- |
7077
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.githubDomainPath">githubDomainPath</a></code> | <code>string</code> | Path to GitHub domain. |
7078
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.ownerPath">ownerPath</a></code> | <code>string</code> | Path to repository owner name. |
7079
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.repoPath">repoPath</a></code> | <code>string</code> | Path to repository name. |
7080
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.runnerNamePath">runnerNamePath</a></code> | <code>string</code> | Path to desired runner name. |
7081
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.runnerTokenPath">runnerTokenPath</a></code> | <code>string</code> | Path to runner token used to register token. |
7082
+
7083
+ ---
7084
+
7085
+ ##### `githubDomainPath`<sup>Required</sup> <a name="githubDomainPath" id="@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.githubDomainPath"></a>
7086
+
7087
+ ```typescript
7088
+ public readonly githubDomainPath: string;
7089
+ ```
7090
+
7091
+ - *Type:* string
7092
+
7093
+ Path to GitHub domain.
7094
+
7095
+ Most of the time this will be github.com but for self-hosted GitHub instances, this will be different.
7096
+
7097
+ ---
7098
+
7099
+ ##### `ownerPath`<sup>Required</sup> <a name="ownerPath" id="@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.ownerPath"></a>
7100
+
7101
+ ```typescript
7102
+ public readonly ownerPath: string;
7103
+ ```
7104
+
7105
+ - *Type:* string
7106
+
7107
+ Path to repository owner name.
7108
+
7109
+ ---
7110
+
7111
+ ##### `repoPath`<sup>Required</sup> <a name="repoPath" id="@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.repoPath"></a>
7112
+
7113
+ ```typescript
7114
+ public readonly repoPath: string;
7115
+ ```
7116
+
7117
+ - *Type:* string
7118
+
7119
+ Path to repository name.
7120
+
7121
+ ---
7122
+
7123
+ ##### `runnerNamePath`<sup>Required</sup> <a name="runnerNamePath" id="@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.runnerNamePath"></a>
7124
+
7125
+ ```typescript
7126
+ public readonly runnerNamePath: string;
7127
+ ```
7128
+
7129
+ - *Type:* string
7130
+
7131
+ Path to desired runner name.
7132
+
7133
+ We specifically set the name to make troubleshooting easier.
7134
+
7135
+ ---
7136
+
7137
+ ##### `runnerTokenPath`<sup>Required</sup> <a name="runnerTokenPath" id="@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters.property.runnerTokenPath"></a>
7138
+
7139
+ ```typescript
7140
+ public readonly runnerTokenPath: string;
7141
+ ```
7142
+
7143
+ - *Type:* string
7144
+
7145
+ Path to runner token used to register token.
7146
+
7147
+ ---
7148
+
7149
+ ## Classes <a name="Classes" id="Classes"></a>
7150
+
7151
+ ### Architecture <a name="Architecture" id="@cloudsnorkel/cdk-github-runners.Architecture"></a>
7152
+
7153
+ CPU architecture enum for an image.
7154
+
7155
+ #### Methods <a name="Methods" id="Methods"></a>
7156
+
7157
+ | **Name** | **Description** |
7158
+ | --- | --- |
7159
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture.instanceTypeMatch">instanceTypeMatch</a></code> | Checks if a given EC2 instance type matches this architecture. |
7160
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture.is">is</a></code> | Checks if the given architecture is the same as this one. |
7161
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture.isIn">isIn</a></code> | Checks if this architecture is in a given list. |
7162
+
7163
+ ---
7164
+
7165
+ ##### `instanceTypeMatch` <a name="instanceTypeMatch" id="@cloudsnorkel/cdk-github-runners.Architecture.instanceTypeMatch"></a>
7166
+
7167
+ ```typescript
7168
+ public instanceTypeMatch(instanceType: InstanceType): boolean
7169
+ ```
7170
+
7171
+ Checks if a given EC2 instance type matches this architecture.
7172
+
7173
+ ###### `instanceType`<sup>Required</sup> <a name="instanceType" id="@cloudsnorkel/cdk-github-runners.Architecture.instanceTypeMatch.parameter.instanceType"></a>
7174
+
7175
+ - *Type:* aws-cdk-lib.aws_ec2.InstanceType
7176
+
7177
+ instance type to check.
7178
+
7179
+ ---
7180
+
7181
+ ##### `is` <a name="is" id="@cloudsnorkel/cdk-github-runners.Architecture.is"></a>
7182
+
7183
+ ```typescript
7184
+ public is(arch: Architecture): boolean
7185
+ ```
7186
+
7187
+ Checks if the given architecture is the same as this one.
7188
+
7189
+ ###### `arch`<sup>Required</sup> <a name="arch" id="@cloudsnorkel/cdk-github-runners.Architecture.is.parameter.arch"></a>
7190
+
7191
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
7192
+
7193
+ architecture to compare.
7194
+
7195
+ ---
7196
+
7197
+ ##### `isIn` <a name="isIn" id="@cloudsnorkel/cdk-github-runners.Architecture.isIn"></a>
7198
+
7199
+ ```typescript
7200
+ public isIn(arches: Architecture[]): boolean
7201
+ ```
7202
+
7203
+ Checks if this architecture is in a given list.
7204
+
7205
+ ###### `arches`<sup>Required</sup> <a name="arches" id="@cloudsnorkel/cdk-github-runners.Architecture.isIn.parameter.arches"></a>
7206
+
7207
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>[]
7208
+
7209
+ architectures to check.
7210
+
7211
+ ---
7212
+
7213
+
7214
+ #### Properties <a name="Properties" id="Properties"></a>
7215
+
7216
+ | **Name** | **Type** | **Description** |
7217
+ | --- | --- | --- |
7218
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture.property.name">name</a></code> | <code>string</code> | *No description.* |
7219
+
7220
+ ---
7221
+
7222
+ ##### `name`<sup>Required</sup> <a name="name" id="@cloudsnorkel/cdk-github-runners.Architecture.property.name"></a>
7223
+
7224
+ ```typescript
7225
+ public readonly name: string;
7226
+ ```
7227
+
7228
+ - *Type:* string
7229
+
7230
+ ---
7231
+
7232
+ #### Constants <a name="Constants" id="Constants"></a>
7233
+
7234
+ | **Name** | **Type** | **Description** |
7235
+ | --- | --- | --- |
7236
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture.property.ARM64">ARM64</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a></code> | ARM64. |
7237
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture.property.X86_64">X86_64</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a></code> | X86_64. |
7238
+
7239
+ ---
7240
+
7241
+ ##### `ARM64`<sup>Required</sup> <a name="ARM64" id="@cloudsnorkel/cdk-github-runners.Architecture.property.ARM64"></a>
7242
+
7243
+ ```typescript
7244
+ public readonly ARM64: Architecture;
7245
+ ```
7246
+
7247
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
7248
+
7249
+ ARM64.
7250
+
7251
+ ---
7252
+
7253
+ ##### `X86_64`<sup>Required</sup> <a name="X86_64" id="@cloudsnorkel/cdk-github-runners.Architecture.property.X86_64"></a>
7254
+
7255
+ ```typescript
7256
+ public readonly X86_64: Architecture;
7257
+ ```
7258
+
7259
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
7260
+
7261
+ X86_64.
7262
+
7263
+ ---
7264
+
7265
+ ### LinuxUbuntuComponents <a name="LinuxUbuntuComponents" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents"></a>
7266
+
7267
+ Components for Ubuntu Linux that can be used with AWS Image Builder based builders.
7268
+
7269
+ These cannot be used by {@link CodeBuildImageBuilder }.
6157
7270
 
6158
7271
  #### Initializers <a name="Initializers" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.Initializer"></a>
6159
7272
 
6160
7273
  ```typescript
6161
7274
  import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
6162
7275
 
6163
- new LinuxUbuntuComponents()
7276
+ new LinuxUbuntuComponents()
7277
+ ```
7278
+
7279
+ | **Name** | **Type** | **Description** |
7280
+ | --- | --- | --- |
7281
+
7282
+ ---
7283
+
7284
+
7285
+ #### Static Functions <a name="Static Functions" id="Static Functions"></a>
7286
+
7287
+ | **Name** | **Description** |
7288
+ | --- | --- |
7289
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.awsCli">awsCli</a></code> | *No description.* |
7290
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.docker">docker</a></code> | *No description.* |
7291
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.extraCertificates">extraCertificates</a></code> | *No description.* |
7292
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.git">git</a></code> | *No description.* |
7293
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubCli">githubCli</a></code> | *No description.* |
7294
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubRunner">githubRunner</a></code> | *No description.* |
7295
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.requiredPackages">requiredPackages</a></code> | *No description.* |
7296
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.runnerUser">runnerUser</a></code> | *No description.* |
7297
+
7298
+ ---
7299
+
7300
+ ##### ~~`awsCli`~~ <a name="awsCli" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.awsCli"></a>
7301
+
7302
+ ```typescript
7303
+ import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
7304
+
7305
+ LinuxUbuntuComponents.awsCli(scope: Construct, id: string, architecture: Architecture)
7306
+ ```
7307
+
7308
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.awsCli.parameter.scope"></a>
7309
+
7310
+ - *Type:* constructs.Construct
7311
+
7312
+ ---
7313
+
7314
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.awsCli.parameter.id"></a>
7315
+
7316
+ - *Type:* string
7317
+
7318
+ ---
7319
+
7320
+ ###### `architecture`<sup>Required</sup> <a name="architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.awsCli.parameter.architecture"></a>
7321
+
7322
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
7323
+
7324
+ ---
7325
+
7326
+ ##### ~~`docker`~~ <a name="docker" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.docker"></a>
7327
+
7328
+ ```typescript
7329
+ import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
7330
+
7331
+ LinuxUbuntuComponents.docker(scope: Construct, id: string, _architecture: Architecture)
6164
7332
  ```
6165
7333
 
6166
- | **Name** | **Type** | **Description** |
6167
- | --- | --- | --- |
7334
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.docker.parameter.scope"></a>
7335
+
7336
+ - *Type:* constructs.Construct
6168
7337
 
6169
7338
  ---
6170
7339
 
7340
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.docker.parameter.id"></a>
6171
7341
 
6172
- #### Static Functions <a name="Static Functions" id="Static Functions"></a>
7342
+ - *Type:* string
6173
7343
 
6174
- | **Name** | **Description** |
6175
- | --- | --- |
6176
- | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.awsCli">awsCli</a></code> | *No description.* |
6177
- | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.docker">docker</a></code> | *No description.* |
6178
- | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.extraCertificates">extraCertificates</a></code> | *No description.* |
6179
- | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.git">git</a></code> | *No description.* |
6180
- | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubCli">githubCli</a></code> | *No description.* |
6181
- | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubRunner">githubRunner</a></code> | *No description.* |
6182
- | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.requiredPackages">requiredPackages</a></code> | *No description.* |
6183
- | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.runnerUser">runnerUser</a></code> | *No description.* |
7344
+ ---
7345
+
7346
+ ###### `_architecture`<sup>Required</sup> <a name="_architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.docker.parameter._architecture"></a>
7347
+
7348
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
6184
7349
 
6185
7350
  ---
6186
7351
 
6187
- ##### `awsCli` <a name="awsCli" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.awsCli"></a>
7352
+ ##### ~~`extraCertificates`~~ <a name="extraCertificates" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.extraCertificates"></a>
6188
7353
 
6189
7354
  ```typescript
6190
7355
  import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
6191
7356
 
6192
- LinuxUbuntuComponents.awsCli(scope: Construct, id: string, architecture: Architecture)
7357
+ LinuxUbuntuComponents.extraCertificates(scope: Construct, id: string, path: string)
6193
7358
  ```
6194
7359
 
6195
- ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.awsCli.parameter.scope"></a>
7360
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.extraCertificates.parameter.scope"></a>
6196
7361
 
6197
7362
  - *Type:* constructs.Construct
6198
7363
 
6199
7364
  ---
6200
7365
 
6201
- ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.awsCli.parameter.id"></a>
7366
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.extraCertificates.parameter.id"></a>
6202
7367
 
6203
7368
  - *Type:* string
6204
7369
 
6205
7370
  ---
6206
7371
 
6207
- ###### `architecture`<sup>Required</sup> <a name="architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.awsCli.parameter.architecture"></a>
7372
+ ###### `path`<sup>Required</sup> <a name="path" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.extraCertificates.parameter.path"></a>
7373
+
7374
+ - *Type:* string
7375
+
7376
+ ---
7377
+
7378
+ ##### ~~`git`~~ <a name="git" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.git"></a>
7379
+
7380
+ ```typescript
7381
+ import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
7382
+
7383
+ LinuxUbuntuComponents.git(scope: Construct, id: string, _architecture: Architecture)
7384
+ ```
7385
+
7386
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.git.parameter.scope"></a>
7387
+
7388
+ - *Type:* constructs.Construct
7389
+
7390
+ ---
7391
+
7392
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.git.parameter.id"></a>
7393
+
7394
+ - *Type:* string
7395
+
7396
+ ---
7397
+
7398
+ ###### `_architecture`<sup>Required</sup> <a name="_architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.git.parameter._architecture"></a>
6208
7399
 
6209
7400
  - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
6210
7401
 
6211
7402
  ---
6212
7403
 
6213
- ##### `docker` <a name="docker" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.docker"></a>
7404
+ ##### ~~`githubCli`~~ <a name="githubCli" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubCli"></a>
6214
7405
 
6215
7406
  ```typescript
6216
7407
  import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
6217
7408
 
6218
- LinuxUbuntuComponents.docker(scope: Construct, id: string, _architecture: Architecture)
7409
+ LinuxUbuntuComponents.githubCli(scope: Construct, id: string, _architecture: Architecture)
6219
7410
  ```
6220
7411
 
6221
- ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.docker.parameter.scope"></a>
7412
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubCli.parameter.scope"></a>
7413
+
7414
+ - *Type:* constructs.Construct
7415
+
7416
+ ---
7417
+
7418
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubCli.parameter.id"></a>
7419
+
7420
+ - *Type:* string
7421
+
7422
+ ---
7423
+
7424
+ ###### `_architecture`<sup>Required</sup> <a name="_architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubCli.parameter._architecture"></a>
7425
+
7426
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
7427
+
7428
+ ---
7429
+
7430
+ ##### ~~`githubRunner`~~ <a name="githubRunner" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubRunner"></a>
7431
+
7432
+ ```typescript
7433
+ import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
7434
+
7435
+ LinuxUbuntuComponents.githubRunner(scope: Construct, id: string, runnerVersion: RunnerVersion, architecture: Architecture)
7436
+ ```
7437
+
7438
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubRunner.parameter.scope"></a>
7439
+
7440
+ - *Type:* constructs.Construct
7441
+
7442
+ ---
7443
+
7444
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubRunner.parameter.id"></a>
7445
+
7446
+ - *Type:* string
7447
+
7448
+ ---
7449
+
7450
+ ###### `runnerVersion`<sup>Required</sup> <a name="runnerVersion" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubRunner.parameter.runnerVersion"></a>
7451
+
7452
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a>
7453
+
7454
+ ---
7455
+
7456
+ ###### `architecture`<sup>Required</sup> <a name="architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubRunner.parameter.architecture"></a>
7457
+
7458
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
7459
+
7460
+ ---
7461
+
7462
+ ##### ~~`requiredPackages`~~ <a name="requiredPackages" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.requiredPackages"></a>
7463
+
7464
+ ```typescript
7465
+ import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
7466
+
7467
+ LinuxUbuntuComponents.requiredPackages(scope: Construct, id: string, architecture: Architecture)
7468
+ ```
7469
+
7470
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.requiredPackages.parameter.scope"></a>
7471
+
7472
+ - *Type:* constructs.Construct
7473
+
7474
+ ---
7475
+
7476
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.requiredPackages.parameter.id"></a>
7477
+
7478
+ - *Type:* string
7479
+
7480
+ ---
7481
+
7482
+ ###### `architecture`<sup>Required</sup> <a name="architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.requiredPackages.parameter.architecture"></a>
7483
+
7484
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
7485
+
7486
+ ---
7487
+
7488
+ ##### ~~`runnerUser`~~ <a name="runnerUser" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.runnerUser"></a>
7489
+
7490
+ ```typescript
7491
+ import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
7492
+
7493
+ LinuxUbuntuComponents.runnerUser(scope: Construct, id: string, _architecture: Architecture)
7494
+ ```
7495
+
7496
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.runnerUser.parameter.scope"></a>
7497
+
7498
+ - *Type:* constructs.Construct
7499
+
7500
+ ---
7501
+
7502
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.runnerUser.parameter.id"></a>
7503
+
7504
+ - *Type:* string
7505
+
7506
+ ---
7507
+
7508
+ ###### `_architecture`<sup>Required</sup> <a name="_architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.runnerUser.parameter._architecture"></a>
7509
+
7510
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
7511
+
7512
+ ---
7513
+
7514
+
7515
+
7516
+ ### Os <a name="Os" id="@cloudsnorkel/cdk-github-runners.Os"></a>
7517
+
7518
+ OS enum for an image.
7519
+
7520
+ #### Methods <a name="Methods" id="Methods"></a>
7521
+
7522
+ | **Name** | **Description** |
7523
+ | --- | --- |
7524
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.is">is</a></code> | Checks if the given OS is the same as this one. |
7525
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.isIn">isIn</a></code> | Checks if this OS is in a given list. |
7526
+
7527
+ ---
7528
+
7529
+ ##### `is` <a name="is" id="@cloudsnorkel/cdk-github-runners.Os.is"></a>
7530
+
7531
+ ```typescript
7532
+ public is(os: Os): boolean
7533
+ ```
7534
+
7535
+ Checks if the given OS is the same as this one.
7536
+
7537
+ ###### `os`<sup>Required</sup> <a name="os" id="@cloudsnorkel/cdk-github-runners.Os.is.parameter.os"></a>
7538
+
7539
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
7540
+
7541
+ OS to compare.
7542
+
7543
+ ---
7544
+
7545
+ ##### `isIn` <a name="isIn" id="@cloudsnorkel/cdk-github-runners.Os.isIn"></a>
7546
+
7547
+ ```typescript
7548
+ public isIn(oses: Os[]): boolean
7549
+ ```
7550
+
7551
+ Checks if this OS is in a given list.
7552
+
7553
+ ###### `oses`<sup>Required</sup> <a name="oses" id="@cloudsnorkel/cdk-github-runners.Os.isIn.parameter.oses"></a>
7554
+
7555
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>[]
7556
+
7557
+ list of OS to check.
7558
+
7559
+ ---
7560
+
7561
+
7562
+ #### Properties <a name="Properties" id="Properties"></a>
7563
+
7564
+ | **Name** | **Type** | **Description** |
7565
+ | --- | --- | --- |
7566
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.property.name">name</a></code> | <code>string</code> | *No description.* |
7567
+
7568
+ ---
7569
+
7570
+ ##### `name`<sup>Required</sup> <a name="name" id="@cloudsnorkel/cdk-github-runners.Os.property.name"></a>
7571
+
7572
+ ```typescript
7573
+ public readonly name: string;
7574
+ ```
7575
+
7576
+ - *Type:* string
7577
+
7578
+ ---
7579
+
7580
+ #### Constants <a name="Constants" id="Constants"></a>
7581
+
7582
+ | **Name** | **Type** | **Description** |
7583
+ | --- | --- | --- |
7584
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.property.LINUX">LINUX</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a></code> | Linux. |
7585
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.property.LINUX_AMAZON_2">LINUX_AMAZON_2</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a></code> | Amazon Linux 2. |
7586
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.property.LINUX_UBUNTU">LINUX_UBUNTU</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a></code> | Ubuntu Linux. |
7587
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.property.WINDOWS">WINDOWS</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a></code> | Windows. |
7588
+
7589
+ ---
7590
+
7591
+ ##### ~~`LINUX`~~<sup>Required</sup> <a name="LINUX" id="@cloudsnorkel/cdk-github-runners.Os.property.LINUX"></a>
7592
+
7593
+ - *Deprecated:* use {@link LINUX_UBUNTU } or {@link LINUX_AMAZON_2 }
7594
+
7595
+ ```typescript
7596
+ public readonly LINUX: Os;
7597
+ ```
7598
+
7599
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
7600
+
7601
+ Linux.
7602
+
7603
+ ---
7604
+
7605
+ ##### `LINUX_AMAZON_2`<sup>Required</sup> <a name="LINUX_AMAZON_2" id="@cloudsnorkel/cdk-github-runners.Os.property.LINUX_AMAZON_2"></a>
7606
+
7607
+ ```typescript
7608
+ public readonly LINUX_AMAZON_2: Os;
7609
+ ```
7610
+
7611
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
6222
7612
 
6223
- - *Type:* constructs.Construct
7613
+ Amazon Linux 2.
6224
7614
 
6225
7615
  ---
6226
7616
 
6227
- ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.docker.parameter.id"></a>
6228
-
6229
- - *Type:* string
7617
+ ##### `LINUX_UBUNTU`<sup>Required</sup> <a name="LINUX_UBUNTU" id="@cloudsnorkel/cdk-github-runners.Os.property.LINUX_UBUNTU"></a>
6230
7618
 
6231
- ---
7619
+ ```typescript
7620
+ public readonly LINUX_UBUNTU: Os;
7621
+ ```
6232
7622
 
6233
- ###### `_architecture`<sup>Required</sup> <a name="_architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.docker.parameter._architecture"></a>
7623
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
6234
7624
 
6235
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
7625
+ Ubuntu Linux.
6236
7626
 
6237
7627
  ---
6238
7628
 
6239
- ##### `extraCertificates` <a name="extraCertificates" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.extraCertificates"></a>
7629
+ ##### `WINDOWS`<sup>Required</sup> <a name="WINDOWS" id="@cloudsnorkel/cdk-github-runners.Os.property.WINDOWS"></a>
6240
7630
 
6241
7631
  ```typescript
6242
- import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
6243
-
6244
- LinuxUbuntuComponents.extraCertificates(scope: Construct, id: string, path: string)
7632
+ public readonly WINDOWS: Os;
6245
7633
  ```
6246
7634
 
6247
- ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.extraCertificates.parameter.scope"></a>
7635
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
6248
7636
 
6249
- - *Type:* constructs.Construct
7637
+ Windows.
6250
7638
 
6251
7639
  ---
6252
7640
 
6253
- ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.extraCertificates.parameter.id"></a>
7641
+ ### RunnerImageComponent <a name="RunnerImageComponent" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent"></a>
6254
7642
 
6255
- - *Type:* string
7643
+ Components are used to build runner images.
7644
+
7645
+ They can run commands in the image, copy files into the image, and run some Docker commands.
7646
+
7647
+ #### Initializers <a name="Initializers" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.Initializer"></a>
7648
+
7649
+ ```typescript
7650
+ import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners'
7651
+
7652
+ new RunnerImageComponent()
7653
+ ```
7654
+
7655
+ | **Name** | **Type** | **Description** |
7656
+ | --- | --- | --- |
6256
7657
 
6257
7658
  ---
6258
7659
 
6259
- ###### `path`<sup>Required</sup> <a name="path" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.extraCertificates.parameter.path"></a>
7660
+ #### Methods <a name="Methods" id="Methods"></a>
6260
7661
 
6261
- - *Type:* string
7662
+ | **Name** | **Description** |
7663
+ | --- | --- |
7664
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.getAssets">getAssets</a></code> | Returns assets to copy into the built image. |
7665
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.getCommands">getCommands</a></code> | Returns commands to run to in built image. |
7666
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.getDockerCommands">getDockerCommands</a></code> | Returns Docker commands to run to in built image. |
6262
7667
 
6263
7668
  ---
6264
7669
 
6265
- ##### `git` <a name="git" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.git"></a>
7670
+ ##### `getAssets` <a name="getAssets" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.getAssets"></a>
6266
7671
 
6267
7672
  ```typescript
6268
- import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
6269
-
6270
- LinuxUbuntuComponents.git(scope: Construct, id: string, _architecture: Architecture)
7673
+ public getAssets(_os: Os, _architecture: Architecture): RunnerImageAsset[]
6271
7674
  ```
6272
7675
 
6273
- ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.git.parameter.scope"></a>
6274
-
6275
- - *Type:* constructs.Construct
7676
+ Returns assets to copy into the built image.
6276
7677
 
6277
- ---
7678
+ Can be used to copy files into the image.
6278
7679
 
6279
- ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.git.parameter.id"></a>
7680
+ ###### `_os`<sup>Required</sup> <a name="_os" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.getAssets.parameter._os"></a>
6280
7681
 
6281
- - *Type:* string
7682
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
6282
7683
 
6283
7684
  ---
6284
7685
 
6285
- ###### `_architecture`<sup>Required</sup> <a name="_architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.git.parameter._architecture"></a>
7686
+ ###### `_architecture`<sup>Required</sup> <a name="_architecture" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.getAssets.parameter._architecture"></a>
6286
7687
 
6287
7688
  - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
6288
7689
 
6289
7690
  ---
6290
7691
 
6291
- ##### `githubCli` <a name="githubCli" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubCli"></a>
7692
+ ##### `getCommands` <a name="getCommands" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.getCommands"></a>
6292
7693
 
6293
7694
  ```typescript
6294
- import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
6295
-
6296
- LinuxUbuntuComponents.githubCli(scope: Construct, id: string, _architecture: Architecture)
7695
+ public getCommands(_os: Os, _architecture: Architecture): string[]
6297
7696
  ```
6298
7697
 
6299
- ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubCli.parameter.scope"></a>
6300
-
6301
- - *Type:* constructs.Construct
7698
+ Returns commands to run to in built image.
6302
7699
 
6303
- ---
7700
+ Can be used to install packages, setup build prerequisites, etc.
6304
7701
 
6305
- ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubCli.parameter.id"></a>
7702
+ ###### `_os`<sup>Required</sup> <a name="_os" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.getCommands.parameter._os"></a>
6306
7703
 
6307
- - *Type:* string
7704
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
6308
7705
 
6309
7706
  ---
6310
7707
 
6311
- ###### `_architecture`<sup>Required</sup> <a name="_architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubCli.parameter._architecture"></a>
7708
+ ###### `_architecture`<sup>Required</sup> <a name="_architecture" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.getCommands.parameter._architecture"></a>
6312
7709
 
6313
7710
  - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
6314
7711
 
6315
7712
  ---
6316
7713
 
6317
- ##### `githubRunner` <a name="githubRunner" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubRunner"></a>
7714
+ ##### `getDockerCommands` <a name="getDockerCommands" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.getDockerCommands"></a>
6318
7715
 
6319
7716
  ```typescript
6320
- import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
6321
-
6322
- LinuxUbuntuComponents.githubRunner(scope: Construct, id: string, runnerVersion: RunnerVersion, architecture: Architecture)
7717
+ public getDockerCommands(_os: Os, _architecture: Architecture): string[]
6323
7718
  ```
6324
7719
 
6325
- ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubRunner.parameter.scope"></a>
7720
+ Returns Docker commands to run to in built image.
6326
7721
 
6327
- - *Type:* constructs.Construct
7722
+ Can be used to add commands like `VOLUME`, `ENTRYPOINT`, `CMD`, etc.
6328
7723
 
6329
- ---
7724
+ Docker commands are added after assets and normal commands.
6330
7725
 
6331
- ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubRunner.parameter.id"></a>
7726
+ ###### `_os`<sup>Required</sup> <a name="_os" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.getDockerCommands.parameter._os"></a>
6332
7727
 
6333
- - *Type:* string
7728
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
6334
7729
 
6335
7730
  ---
6336
7731
 
6337
- ###### `runnerVersion`<sup>Required</sup> <a name="runnerVersion" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubRunner.parameter.runnerVersion"></a>
7732
+ ###### `_architecture`<sup>Required</sup> <a name="_architecture" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.getDockerCommands.parameter._architecture"></a>
6338
7733
 
6339
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a>
7734
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
6340
7735
 
6341
7736
  ---
6342
7737
 
6343
- ###### `architecture`<sup>Required</sup> <a name="architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubRunner.parameter.architecture"></a>
7738
+ #### Static Functions <a name="Static Functions" id="Static Functions"></a>
6344
7739
 
6345
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
7740
+ | **Name** | **Description** |
7741
+ | --- | --- |
7742
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.awsCli">awsCli</a></code> | A component to install the AWS CLI. |
7743
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.custom">custom</a></code> | Define a custom component that can run commands in the image, copy files into the image, and run some Docker commands. |
7744
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.docker">docker</a></code> | A component to install Docker. |
7745
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.dockerInDocker">dockerInDocker</a></code> | A component to install Docker-in-Docker. |
7746
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.extraCertificates">extraCertificates</a></code> | A component to add a trusted certificate authority. |
7747
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.git">git</a></code> | A component to install the GitHub CLI. |
7748
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.githubCli">githubCli</a></code> | A component to install the GitHub CLI. |
7749
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.githubRunner">githubRunner</a></code> | A component to install the GitHub Actions Runner. |
7750
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.lambdaEntrypoint">lambdaEntrypoint</a></code> | A component to set up the required Lambda entrypoint for Lambda runners. |
7751
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.requiredPackages">requiredPackages</a></code> | A component to install the required packages for the runner. |
7752
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.runnerUser">runnerUser</a></code> | A component to prepare the required runner user. |
6346
7753
 
6347
7754
  ---
6348
7755
 
6349
- ##### `requiredPackages` <a name="requiredPackages" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.requiredPackages"></a>
7756
+ ##### `awsCli` <a name="awsCli" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.awsCli"></a>
6350
7757
 
6351
7758
  ```typescript
6352
- import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
7759
+ import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners'
6353
7760
 
6354
- LinuxUbuntuComponents.requiredPackages(scope: Construct, id: string, architecture: Architecture)
7761
+ RunnerImageComponent.awsCli()
6355
7762
  ```
6356
7763
 
6357
- ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.requiredPackages.parameter.scope"></a>
7764
+ A component to install the AWS CLI.
6358
7765
 
6359
- - *Type:* constructs.Construct
7766
+ ##### `custom` <a name="custom" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.custom"></a>
6360
7767
 
6361
- ---
7768
+ ```typescript
7769
+ import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners'
6362
7770
 
6363
- ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.requiredPackages.parameter.id"></a>
7771
+ RunnerImageComponent.custom(props: RunnerImageComponentCustomProps)
7772
+ ```
6364
7773
 
6365
- - *Type:* string
7774
+ Define a custom component that can run commands in the image, copy files into the image, and run some Docker commands.
6366
7775
 
6367
- ---
7776
+ The order of operations is (1) assets (2) commands (3) docker commands.
6368
7777
 
6369
- ###### `architecture`<sup>Required</sup> <a name="architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.requiredPackages.parameter.architecture"></a>
7778
+ Use this to customize the image for the runner.
6370
7779
 
6371
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
7780
+ **WARNING:** Docker commands are not guaranteed to be included before the next component
7781
+
7782
+ ###### `props`<sup>Required</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.custom.parameter.props"></a>
7783
+
7784
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponentCustomProps">RunnerImageComponentCustomProps</a>
6372
7785
 
6373
7786
  ---
6374
7787
 
6375
- ##### `runnerUser` <a name="runnerUser" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.runnerUser"></a>
7788
+ ##### `docker` <a name="docker" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.docker"></a>
6376
7789
 
6377
7790
  ```typescript
6378
- import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
7791
+ import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners'
6379
7792
 
6380
- LinuxUbuntuComponents.runnerUser(scope: Construct, id: string, _architecture: Architecture)
7793
+ RunnerImageComponent.docker()
6381
7794
  ```
6382
7795
 
6383
- ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.runnerUser.parameter.scope"></a>
7796
+ A component to install Docker.
6384
7797
 
6385
- - *Type:* constructs.Construct
7798
+ On Windows this installs Docker Desktop.
6386
7799
 
6387
- ---
7800
+ ##### `dockerInDocker` <a name="dockerInDocker" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.dockerInDocker"></a>
6388
7801
 
6389
- ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.runnerUser.parameter.id"></a>
7802
+ ```typescript
7803
+ import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners'
6390
7804
 
6391
- - *Type:* string
7805
+ RunnerImageComponent.dockerInDocker()
7806
+ ```
6392
7807
 
6393
- ---
7808
+ A component to install Docker-in-Docker.
6394
7809
 
6395
- ###### `_architecture`<sup>Required</sup> <a name="_architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.runnerUser.parameter._architecture"></a>
7810
+ ##### `extraCertificates` <a name="extraCertificates" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.extraCertificates"></a>
6396
7811
 
6397
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
7812
+ ```typescript
7813
+ import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners'
6398
7814
 
6399
- ---
7815
+ RunnerImageComponent.extraCertificates(source: string, name: string)
7816
+ ```
6400
7817
 
7818
+ A component to add a trusted certificate authority.
6401
7819
 
7820
+ This can be used to support GitHub Enterprise Server with self-signed certificate.
6402
7821
 
6403
- ### Os <a name="Os" id="@cloudsnorkel/cdk-github-runners.Os"></a>
7822
+ ###### `source`<sup>Required</sup> <a name="source" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.extraCertificates.parameter.source"></a>
6404
7823
 
6405
- OS enum for an image.
7824
+ - *Type:* string
6406
7825
 
6407
- #### Methods <a name="Methods" id="Methods"></a>
7826
+ path to certificate file in PEM format.
6408
7827
 
6409
- | **Name** | **Description** |
6410
- | --- | --- |
6411
- | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.is">is</a></code> | Checks if the given OS is the same as this one. |
6412
- | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.isIn">isIn</a></code> | Checks if this OS is in a given list. |
7828
+ ---
7829
+
7830
+ ###### `name`<sup>Required</sup> <a name="name" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.extraCertificates.parameter.name"></a>
7831
+
7832
+ - *Type:* string
7833
+
7834
+ unique certificate name to be used on runner file system.
6413
7835
 
6414
7836
  ---
6415
7837
 
6416
- ##### `is` <a name="is" id="@cloudsnorkel/cdk-github-runners.Os.is"></a>
7838
+ ##### `git` <a name="git" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.git"></a>
6417
7839
 
6418
7840
  ```typescript
6419
- public is(os: Os): boolean
7841
+ import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners'
7842
+
7843
+ RunnerImageComponent.git()
6420
7844
  ```
6421
7845
 
6422
- Checks if the given OS is the same as this one.
7846
+ A component to install the GitHub CLI.
6423
7847
 
6424
- ###### `os`<sup>Required</sup> <a name="os" id="@cloudsnorkel/cdk-github-runners.Os.is.parameter.os"></a>
7848
+ ##### `githubCli` <a name="githubCli" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.githubCli"></a>
6425
7849
 
6426
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
7850
+ ```typescript
7851
+ import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners'
6427
7852
 
6428
- OS to compare.
7853
+ RunnerImageComponent.githubCli()
7854
+ ```
6429
7855
 
6430
- ---
7856
+ A component to install the GitHub CLI.
6431
7857
 
6432
- ##### `isIn` <a name="isIn" id="@cloudsnorkel/cdk-github-runners.Os.isIn"></a>
7858
+ ##### `githubRunner` <a name="githubRunner" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.githubRunner"></a>
6433
7859
 
6434
7860
  ```typescript
6435
- public isIn(oses: Os[]): boolean
6436
- ```
6437
-
6438
- Checks if this OS is in a given list.
7861
+ import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners'
6439
7862
 
6440
- ###### `oses`<sup>Required</sup> <a name="oses" id="@cloudsnorkel/cdk-github-runners.Os.isIn.parameter.oses"></a>
7863
+ RunnerImageComponent.githubRunner(runnerVersion: RunnerVersion)
7864
+ ```
6441
7865
 
6442
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>[]
7866
+ A component to install the GitHub Actions Runner.
6443
7867
 
6444
- list of OS to check.
7868
+ This is the actual executable that connects to GitHub to ask for jobs and then execute them.
6445
7869
 
6446
- ---
7870
+ ###### `runnerVersion`<sup>Required</sup> <a name="runnerVersion" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.githubRunner.parameter.runnerVersion"></a>
6447
7871
 
7872
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a>
6448
7873
 
6449
- #### Properties <a name="Properties" id="Properties"></a>
7874
+ The version of the runner to install.
6450
7875
 
6451
- | **Name** | **Type** | **Description** |
6452
- | --- | --- | --- |
6453
- | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.property.name">name</a></code> | <code>string</code> | *No description.* |
7876
+ Usually you would set this to latest.
6454
7877
 
6455
7878
  ---
6456
7879
 
6457
- ##### `name`<sup>Required</sup> <a name="name" id="@cloudsnorkel/cdk-github-runners.Os.property.name"></a>
7880
+ ##### `lambdaEntrypoint` <a name="lambdaEntrypoint" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.lambdaEntrypoint"></a>
6458
7881
 
6459
7882
  ```typescript
6460
- public readonly name: string;
7883
+ import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners'
7884
+
7885
+ RunnerImageComponent.lambdaEntrypoint()
6461
7886
  ```
6462
7887
 
6463
- - *Type:* string
7888
+ A component to set up the required Lambda entrypoint for Lambda runners.
6464
7889
 
6465
- ---
7890
+ ##### `requiredPackages` <a name="requiredPackages" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.requiredPackages"></a>
6466
7891
 
6467
- #### Constants <a name="Constants" id="Constants"></a>
7892
+ ```typescript
7893
+ import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners'
6468
7894
 
6469
- | **Name** | **Type** | **Description** |
6470
- | --- | --- | --- |
6471
- | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.property.LINUX">LINUX</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a></code> | Linux. |
6472
- | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.property.WINDOWS">WINDOWS</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a></code> | Windows. |
7895
+ RunnerImageComponent.requiredPackages()
7896
+ ```
6473
7897
 
6474
- ---
7898
+ A component to install the required packages for the runner.
6475
7899
 
6476
- ##### `LINUX`<sup>Required</sup> <a name="LINUX" id="@cloudsnorkel/cdk-github-runners.Os.property.LINUX"></a>
7900
+ ##### `runnerUser` <a name="runnerUser" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.runnerUser"></a>
6477
7901
 
6478
7902
  ```typescript
6479
- public readonly LINUX: Os;
7903
+ import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners'
7904
+
7905
+ RunnerImageComponent.runnerUser()
6480
7906
  ```
6481
7907
 
6482
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
7908
+ A component to prepare the required runner user.
6483
7909
 
6484
- Linux.
7910
+ #### Properties <a name="Properties" id="Properties"></a>
7911
+
7912
+ | **Name** | **Type** | **Description** |
7913
+ | --- | --- | --- |
7914
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.property.name">name</a></code> | <code>string</code> | Component name. |
6485
7915
 
6486
7916
  ---
6487
7917
 
6488
- ##### `WINDOWS`<sup>Required</sup> <a name="WINDOWS" id="@cloudsnorkel/cdk-github-runners.Os.property.WINDOWS"></a>
7918
+ ##### `name`<sup>Required</sup> <a name="name" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.property.name"></a>
6489
7919
 
6490
7920
  ```typescript
6491
- public readonly WINDOWS: Os;
7921
+ public readonly name: string;
6492
7922
  ```
6493
7923
 
6494
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
7924
+ - *Type:* string
6495
7925
 
6496
- Windows.
7926
+ Component name.
7927
+
7928
+ Used to identify component in image build logs, and for {@link RunnerImageBuilder.removeComponent }
6497
7929
 
6498
7930
  ---
6499
7931
 
7932
+
6500
7933
  ### RunnerVersion <a name="RunnerVersion" id="@cloudsnorkel/cdk-github-runners.RunnerVersion"></a>
6501
7934
 
6502
7935
  Defines desired GitHub Actions runner version.
@@ -6730,7 +8163,7 @@ image OS.
6730
8163
 
6731
8164
  Components for Windows that can be used with AWS Image Builder based builders.
6732
8165
 
6733
- These cannot be used by {@link CodeBuildImageBuilder}.
8166
+ These cannot be used by {@link CodeBuildImageBuilder }.
6734
8167
 
6735
8168
  #### Initializers <a name="Initializers" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.Initializer"></a>
6736
8169
 
@@ -6760,7 +8193,7 @@ new WindowsComponents()
6760
8193
 
6761
8194
  ---
6762
8195
 
6763
- ##### `awsCli` <a name="awsCli" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.awsCli"></a>
8196
+ ##### ~~`awsCli`~~ <a name="awsCli" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.awsCli"></a>
6764
8197
 
6765
8198
  ```typescript
6766
8199
  import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners'
@@ -6780,7 +8213,7 @@ WindowsComponents.awsCli(scope: Construct, id: string)
6780
8213
 
6781
8214
  ---
6782
8215
 
6783
- ##### `cloudwatchAgent` <a name="cloudwatchAgent" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.cloudwatchAgent"></a>
8216
+ ##### ~~`cloudwatchAgent`~~ <a name="cloudwatchAgent" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.cloudwatchAgent"></a>
6784
8217
 
6785
8218
  ```typescript
6786
8219
  import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners'
@@ -6800,7 +8233,7 @@ WindowsComponents.cloudwatchAgent(scope: Construct, id: string)
6800
8233
 
6801
8234
  ---
6802
8235
 
6803
- ##### `docker` <a name="docker" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.docker"></a>
8236
+ ##### ~~`docker`~~ <a name="docker" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.docker"></a>
6804
8237
 
6805
8238
  ```typescript
6806
8239
  import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners'
@@ -6820,7 +8253,7 @@ WindowsComponents.docker(scope: Construct, id: string)
6820
8253
 
6821
8254
  ---
6822
8255
 
6823
- ##### `extraCertificates` <a name="extraCertificates" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.extraCertificates"></a>
8256
+ ##### ~~`extraCertificates`~~ <a name="extraCertificates" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.extraCertificates"></a>
6824
8257
 
6825
8258
  ```typescript
6826
8259
  import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners'
@@ -6846,7 +8279,7 @@ WindowsComponents.extraCertificates(scope: Construct, id: string, path: string)
6846
8279
 
6847
8280
  ---
6848
8281
 
6849
- ##### `git` <a name="git" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.git"></a>
8282
+ ##### ~~`git`~~ <a name="git" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.git"></a>
6850
8283
 
6851
8284
  ```typescript
6852
8285
  import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners'
@@ -6866,7 +8299,7 @@ WindowsComponents.git(scope: Construct, id: string)
6866
8299
 
6867
8300
  ---
6868
8301
 
6869
- ##### `githubCli` <a name="githubCli" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.githubCli"></a>
8302
+ ##### ~~`githubCli`~~ <a name="githubCli" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.githubCli"></a>
6870
8303
 
6871
8304
  ```typescript
6872
8305
  import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners'
@@ -6886,7 +8319,7 @@ WindowsComponents.githubCli(scope: Construct, id: string)
6886
8319
 
6887
8320
  ---
6888
8321
 
6889
- ##### `githubRunner` <a name="githubRunner" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.githubRunner"></a>
8322
+ ##### ~~`githubRunner`~~ <a name="githubRunner" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.githubRunner"></a>
6890
8323
 
6891
8324
  ```typescript
6892
8325
  import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners'
@@ -6916,105 +8349,89 @@ WindowsComponents.githubRunner(scope: Construct, id: string, runnerVersion: Runn
6916
8349
 
6917
8350
  ## Protocols <a name="Protocols" id="Protocols"></a>
6918
8351
 
6919
- ### IAmiBuilder <a name="IAmiBuilder" id="@cloudsnorkel/cdk-github-runners.IAmiBuilder"></a>
6920
-
6921
- - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.AmiBuilder">AmiBuilder</a>, <a href="#@cloudsnorkel/cdk-github-runners.IAmiBuilder">IAmiBuilder</a>
8352
+ ### IRunnerAmiStatus <a name="IRunnerAmiStatus" id="@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus"></a>
6922
8353
 
6923
- Interface for constructs that build an AMI that can be used in {@link IRunnerProvider}.
8354
+ - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus">IRunnerAmiStatus</a>
6924
8355
 
6925
- Anything that ends up with a launch template pointing to an AMI that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing AMI and nothing else.
8356
+ AMI status returned from runner providers to be displayed as output of status function.
6926
8357
 
6927
- The AMI can be further updated over time manually or using a schedule as long as it is always written to the same launch template.
6928
8358
 
6929
- #### Methods <a name="Methods" id="Methods"></a>
8359
+ #### Properties <a name="Properties" id="Properties"></a>
6930
8360
 
6931
- | **Name** | **Description** |
6932
- | --- | --- |
6933
- | <code><a href="#@cloudsnorkel/cdk-github-runners.IAmiBuilder.bind">bind</a></code> | Finalize and return all required information about the AMI built by this builder. |
8361
+ | **Name** | **Type** | **Description** |
8362
+ | --- | --- | --- |
8363
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus.property.launchTemplate">launchTemplate</a></code> | <code>string</code> | Id of launch template pointing to the latest AMI built by the AMI builder. |
8364
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus.property.amiBuilderLogGroup">amiBuilderLogGroup</a></code> | <code>string</code> | Log group name for the AMI builder where history of builds can be analyzed. |
6934
8365
 
6935
8366
  ---
6936
8367
 
6937
- ##### `bind` <a name="bind" id="@cloudsnorkel/cdk-github-runners.IAmiBuilder.bind"></a>
8368
+ ##### `launchTemplate`<sup>Required</sup> <a name="launchTemplate" id="@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus.property.launchTemplate"></a>
6938
8369
 
6939
8370
  ```typescript
6940
- public bind(): RunnerAmi
8371
+ public readonly launchTemplate: string;
6941
8372
  ```
6942
8373
 
6943
- Finalize and return all required information about the AMI built by this builder.
6944
-
6945
- This method can be called multiple times if the image is bound to multiple providers. Make sure you cache the image when implementing or return an error if this builder doesn't support reusing images.
6946
-
6947
-
6948
- ### IImageBuilder <a name="IImageBuilder" id="@cloudsnorkel/cdk-github-runners.IImageBuilder"></a>
6949
-
6950
- - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder">CodeBuildImageBuilder</a>, <a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder">ContainerImageBuilder</a>, <a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder">IImageBuilder</a>
6951
-
6952
- Interface for constructs that build an image that can be used in {@link IRunnerProvider}.
6953
-
6954
- Anything that ends up with an ECR repository containing a Docker image that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing image and nothing else.
6955
-
6956
- It's important that the specified image tag be available at the time the repository is available. Providers usually assume the image is ready and will fail if it's not.
6957
-
6958
- The image can be further updated over time manually or using a schedule as long as it is always written to the same tag.
6959
-
6960
- #### Methods <a name="Methods" id="Methods"></a>
8374
+ - *Type:* string
6961
8375
 
6962
- | **Name** | **Description** |
6963
- | --- | --- |
6964
- | <code><a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder.bind">bind</a></code> | Finalize and return all required information about the Docker image built by this builder. |
8376
+ Id of launch template pointing to the latest AMI built by the AMI builder.
6965
8377
 
6966
8378
  ---
6967
8379
 
6968
- ##### `bind` <a name="bind" id="@cloudsnorkel/cdk-github-runners.IImageBuilder.bind"></a>
8380
+ ##### `amiBuilderLogGroup`<sup>Optional</sup> <a name="amiBuilderLogGroup" id="@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus.property.amiBuilderLogGroup"></a>
6969
8381
 
6970
8382
  ```typescript
6971
- public bind(): RunnerImage
8383
+ public readonly amiBuilderLogGroup: string;
6972
8384
  ```
6973
8385
 
6974
- Finalize and return all required information about the Docker image built by this builder.
8386
+ - *Type:* string
6975
8387
 
6976
- This method can be called multiple times if the image is bound to multiple providers. Make sure you cache the image when implementing or return an error if this builder doesn't support reusing images.
8388
+ Log group name for the AMI builder where history of builds can be analyzed.
6977
8389
 
8390
+ ---
6978
8391
 
6979
- ### IRunnerAmiStatus <a name="IRunnerAmiStatus" id="@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus"></a>
8392
+ ### IRunnerImageBuilder <a name="IRunnerImageBuilder" id="@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder"></a>
6980
8393
 
6981
- - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus">IRunnerAmiStatus</a>
8394
+ - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.AmiBuilder">AmiBuilder</a>, <a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder">CodeBuildImageBuilder</a>, <a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder">ContainerImageBuilder</a>, <a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilder">RunnerImageBuilder</a>, <a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder">IRunnerImageBuilder</a>
6982
8395
 
6983
- AMI status returned from runner providers to be displayed as output of status function.
8396
+ Interface for constructs that build an image that can be used in {@link IRunnerProvider }.
6984
8397
 
8398
+ An image can be a Docker image or AMI.
6985
8399
 
6986
- #### Properties <a name="Properties" id="Properties"></a>
8400
+ #### Methods <a name="Methods" id="Methods"></a>
6987
8401
 
6988
- | **Name** | **Type** | **Description** |
6989
- | --- | --- | --- |
6990
- | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus.property.launchTemplate">launchTemplate</a></code> | <code>string</code> | Id of launch template pointing to the latest AMI built by the AMI builder. |
6991
- | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus.property.amiBuilderLogGroup">amiBuilderLogGroup</a></code> | <code>string</code> | Log group name for the AMI builder where history of builds can be analyzed. |
8402
+ | **Name** | **Description** |
8403
+ | --- | --- |
8404
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder.bindAmi">bindAmi</a></code> | Build and return an AMI with GitHub Runner installed in it. |
8405
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder.bindDockerImage">bindDockerImage</a></code> | Build and return a Docker image with GitHub Runner installed in it. |
6992
8406
 
6993
8407
  ---
6994
8408
 
6995
- ##### `launchTemplate`<sup>Required</sup> <a name="launchTemplate" id="@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus.property.launchTemplate"></a>
8409
+ ##### `bindAmi` <a name="bindAmi" id="@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder.bindAmi"></a>
6996
8410
 
6997
8411
  ```typescript
6998
- public readonly launchTemplate: string;
8412
+ public bindAmi(): RunnerAmi
6999
8413
  ```
7000
8414
 
7001
- - *Type:* string
8415
+ Build and return an AMI with GitHub Runner installed in it.
7002
8416
 
7003
- Id of launch template pointing to the latest AMI built by the AMI builder.
8417
+ Anything that ends up with a launch template pointing to an AMI that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing AMI and nothing else.
7004
8418
 
7005
- ---
8419
+ The AMI can be further updated over time manually or using a schedule as long as it is always written to the same launch template.
7006
8420
 
7007
- ##### `amiBuilderLogGroup`<sup>Optional</sup> <a name="amiBuilderLogGroup" id="@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus.property.amiBuilderLogGroup"></a>
8421
+ ##### `bindDockerImage` <a name="bindDockerImage" id="@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder.bindDockerImage"></a>
7008
8422
 
7009
8423
  ```typescript
7010
- public readonly amiBuilderLogGroup: string;
8424
+ public bindDockerImage(): RunnerImage
7011
8425
  ```
7012
8426
 
7013
- - *Type:* string
8427
+ Build and return a Docker image with GitHub Runner installed in it.
7014
8428
 
7015
- Log group name for the AMI builder where history of builds can be analyzed.
8429
+ Anything that ends up with an ECR repository containing a Docker image that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing image and nothing else.
8430
+
8431
+ It's important that the specified image tag be available at the time the repository is available. Providers usually assume the image is ready and will fail if it's not.
8432
+
8433
+ The image can be further updated over time manually or using a schedule as long as it is always written to the same tag.
7016
8434
 
7017
- ---
7018
8435
 
7019
8436
  ### IRunnerImageStatus <a name="IRunnerImageStatus" id="@cloudsnorkel/cdk-github-runners.IRunnerImageStatus"></a>
7020
8437
 
@@ -7340,3 +8757,33 @@ VPC where runners will be launched.
7340
8757
 
7341
8758
  ---
7342
8759
 
8760
+ ## Enums <a name="Enums" id="Enums"></a>
8761
+
8762
+ ### RunnerImageBuilderType <a name="RunnerImageBuilderType" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderType"></a>
8763
+
8764
+ #### Members <a name="Members" id="Members"></a>
8765
+
8766
+ | **Name** | **Description** |
8767
+ | --- | --- |
8768
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderType.CODE_BUILD">CODE_BUILD</a></code> | Build runner images using AWS CodeBuild. |
8769
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageBuilderType.AWS_IMAGE_BUILDER">AWS_IMAGE_BUILDER</a></code> | Build runner images using AWS Image Builder. |
8770
+
8771
+ ---
8772
+
8773
+ ##### `CODE_BUILD` <a name="CODE_BUILD" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderType.CODE_BUILD"></a>
8774
+
8775
+ Build runner images using AWS CodeBuild.
8776
+
8777
+ Faster than AWS Image Builder, but can only be used to build Linux Docker images.
8778
+
8779
+ ---
8780
+
8781
+
8782
+ ##### `AWS_IMAGE_BUILDER` <a name="AWS_IMAGE_BUILDER" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderType.AWS_IMAGE_BUILDER"></a>
8783
+
8784
+ Build runner images using AWS Image Builder.
8785
+
8786
+ Slower than CodeBuild, but can be used to build any type of image including AMIs and Windows images.
8787
+
8788
+ ---
8789
+