@cloudsnorkel/cdk-github-runners 0.3.2 → 0.4.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.
package/API.md CHANGED
@@ -23,7 +23,7 @@ const builder = new CodeBuildImageBuilder(this, 'Builder', {
23
23
  rebuildInterval: Duration.days(14),
24
24
  });
25
25
  builder.setBuildArg('EXTRA_PACKAGES', 'nginx xz-utils');
26
- new FargateProvider(this, 'Fargate provider', {
26
+ new FargateRunner(this, 'Fargate provider', {
27
27
  label: 'customized-fargate',
28
28
  imageBuilder: builder,
29
29
  });
@@ -380,6 +380,7 @@ Any object.
380
380
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
381
381
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.connections">connections</a></code> | <code>aws-cdk-lib.aws_ec2.Connections</code> | The network connections associated with this resource. |
382
382
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.grantPrincipal">grantPrincipal</a></code> | <code>aws-cdk-lib.aws_iam.IPrincipal</code> | Grant principal used to add permissions to the runner role. |
383
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.image">image</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImage">RunnerImage</a></code> | Docker image in CodeBuild project. |
383
384
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.label">label</a></code> | <code>string</code> | Label associated with this provider. |
384
385
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.project">project</a></code> | <code>aws-cdk-lib.aws_codebuild.Project</code> | CodeBuild project hosting the runner. |
385
386
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | Security group attached to the task. |
@@ -423,6 +424,18 @@ Grant principal used to add permissions to the runner role.
423
424
 
424
425
  ---
425
426
 
427
+ ##### `image`<sup>Required</sup> <a name="image" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.image"></a>
428
+
429
+ ```typescript
430
+ public readonly image: RunnerImage;
431
+ ```
432
+
433
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImage">RunnerImage</a>
434
+
435
+ Docker image in CodeBuild project.
436
+
437
+ ---
438
+
426
439
  ##### `label`<sup>Required</sup> <a name="label" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.label"></a>
427
440
 
428
441
  ```typescript
@@ -524,6 +537,322 @@ Available build arguments that can be set in the image builder:
524
537
 
525
538
  ---
526
539
 
540
+ ### ContainerImageBuilder <a name="ContainerImageBuilder" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder"></a>
541
+
542
+ - *Implements:* <a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder">IImageBuilder</a>
543
+
544
+ An image builder that uses Image Builder to build Docker images pre-baked with all the GitHub Actions runner requirements.
545
+
546
+ Builders can be used with runner providers.
547
+
548
+ The CodeBuild builder is better and faster. Only use this one if you have no choice. For example, if you need Windows containers.
549
+
550
+ Each builder re-runs automatically at a set interval to make sure the images contain the latest versions of everything.
551
+
552
+ You can create an instance of this construct to customize the image used to spin-up runners. Some runner providers may require custom components. Check the runner provider documentation. The default components work with CodeBuild.
553
+
554
+ For example, to set a specific runner version, rebuild the image every 2 weeks, and add a few packages for the Fargate provider, use:
555
+
556
+ ```
557
+ const builder = new ContainerImageBuilder(this, 'Builder', {
558
+ runnerVersion: RunnerVersion.specific('2.293.0'),
559
+ rebuildInterval: Duration.days(14),
560
+ });
561
+ new CodeBuildRunner(this, 'Fargate provider', {
562
+ label: 'windows-codebuild',
563
+ imageBuilder: builder,
564
+ });
565
+ ```
566
+
567
+ #### Initializers <a name="Initializers" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.Initializer"></a>
568
+
569
+ ```typescript
570
+ import { ContainerImageBuilder } from '@cloudsnorkel/cdk-github-runners'
571
+
572
+ new ContainerImageBuilder(scope: Construct, id: string, props?: ContainerImageBuilderProps)
573
+ ```
574
+
575
+ | **Name** | **Type** | **Description** |
576
+ | --- | --- | --- |
577
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.Initializer.parameter.scope">scope</a></code> | <code>constructs.Construct</code> | *No description.* |
578
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.Initializer.parameter.id">id</a></code> | <code>string</code> | *No description.* |
579
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.Initializer.parameter.props">props</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps">ContainerImageBuilderProps</a></code> | *No description.* |
580
+
581
+ ---
582
+
583
+ ##### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.Initializer.parameter.scope"></a>
584
+
585
+ - *Type:* constructs.Construct
586
+
587
+ ---
588
+
589
+ ##### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.Initializer.parameter.id"></a>
590
+
591
+ - *Type:* string
592
+
593
+ ---
594
+
595
+ ##### `props`<sup>Optional</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.Initializer.parameter.props"></a>
596
+
597
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps">ContainerImageBuilderProps</a>
598
+
599
+ ---
600
+
601
+ #### Methods <a name="Methods" id="Methods"></a>
602
+
603
+ | **Name** | **Description** |
604
+ | --- | --- |
605
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.toString">toString</a></code> | Returns a string representation of this construct. |
606
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.addComponent">addComponent</a></code> | Add a component to be installed. |
607
+ | <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. |
608
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.bind">bind</a></code> | Called by IRunnerProvider to finalize settings and create the image builder. |
609
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.prependComponent">prependComponent</a></code> | Add a component to be installed before any other components. |
610
+
611
+ ---
612
+
613
+ ##### `toString` <a name="toString" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.toString"></a>
614
+
615
+ ```typescript
616
+ public toString(): string
617
+ ```
618
+
619
+ Returns a string representation of this construct.
620
+
621
+ ##### `addComponent` <a name="addComponent" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.addComponent"></a>
622
+
623
+ ```typescript
624
+ public addComponent(component: ImageBuilderComponent): void
625
+ ```
626
+
627
+ Add a component to be installed.
628
+
629
+ ###### `component`<sup>Required</sup> <a name="component" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.addComponent.parameter.component"></a>
630
+
631
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent">ImageBuilderComponent</a>
632
+
633
+ ---
634
+
635
+ ##### `addExtraCertificates` <a name="addExtraCertificates" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.addExtraCertificates"></a>
636
+
637
+ ```typescript
638
+ public addExtraCertificates(path: string): void
639
+ ```
640
+
641
+ Add extra trusted certificates. This helps deal with self-signed certificates for GitHub Enterprise Server.
642
+
643
+ All first party Dockerfiles support this. Others may not.
644
+
645
+ ###### `path`<sup>Required</sup> <a name="path" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.addExtraCertificates.parameter.path"></a>
646
+
647
+ - *Type:* string
648
+
649
+ path to directory containing a file called certs.pem containing all the required certificates.
650
+
651
+ ---
652
+
653
+ ##### `bind` <a name="bind" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.bind"></a>
654
+
655
+ ```typescript
656
+ public bind(): RunnerImage
657
+ ```
658
+
659
+ Called by IRunnerProvider to finalize settings and create the image builder.
660
+
661
+ ##### `prependComponent` <a name="prependComponent" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.prependComponent"></a>
662
+
663
+ ```typescript
664
+ public prependComponent(component: ImageBuilderComponent): void
665
+ ```
666
+
667
+ Add a component to be installed before any other components.
668
+
669
+ Useful for required system settings like certificates or proxy settings.
670
+
671
+ ###### `component`<sup>Required</sup> <a name="component" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.prependComponent.parameter.component"></a>
672
+
673
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent">ImageBuilderComponent</a>
674
+
675
+ ---
676
+
677
+ #### Static Functions <a name="Static Functions" id="Static Functions"></a>
678
+
679
+ | **Name** | **Description** |
680
+ | --- | --- |
681
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
682
+
683
+ ---
684
+
685
+ ##### ~~`isConstruct`~~ <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.isConstruct"></a>
686
+
687
+ ```typescript
688
+ import { ContainerImageBuilder } from '@cloudsnorkel/cdk-github-runners'
689
+
690
+ ContainerImageBuilder.isConstruct(x: any)
691
+ ```
692
+
693
+ Checks if `x` is a construct.
694
+
695
+ ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.isConstruct.parameter.x"></a>
696
+
697
+ - *Type:* any
698
+
699
+ Any object.
700
+
701
+ ---
702
+
703
+ #### Properties <a name="Properties" id="Properties"></a>
704
+
705
+ | **Name** | **Type** | **Description** |
706
+ | --- | --- | --- |
707
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
708
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.architecture">architecture</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a></code> | *No description.* |
709
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.description">description</a></code> | <code>string</code> | *No description.* |
710
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.instanceTypes">instanceTypes</a></code> | <code>string[]</code> | *No description.* |
711
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.logRemovalPolicy">logRemovalPolicy</a></code> | <code>aws-cdk-lib.RemovalPolicy</code> | *No description.* |
712
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.logRetention">logRetention</a></code> | <code>aws-cdk-lib.aws_logs.RetentionDays</code> | *No description.* |
713
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.os">os</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a></code> | *No description.* |
714
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.platform">platform</a></code> | <code>string</code> | *No description.* |
715
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.rebuildInterval">rebuildInterval</a></code> | <code>aws-cdk-lib.Duration</code> | *No description.* |
716
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.repository">repository</a></code> | <code>aws-cdk-lib.aws_ecr.IRepository</code> | *No description.* |
717
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.runnerVersion">runnerVersion</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a></code> | *No description.* |
718
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.securityGroupIds">securityGroupIds</a></code> | <code>string[]</code> | *No description.* |
719
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.subnetId">subnetId</a></code> | <code>string</code> | *No description.* |
720
+
721
+ ---
722
+
723
+ ##### `node`<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.node"></a>
724
+
725
+ ```typescript
726
+ public readonly node: Node;
727
+ ```
728
+
729
+ - *Type:* constructs.Node
730
+
731
+ The tree node.
732
+
733
+ ---
734
+
735
+ ##### `architecture`<sup>Required</sup> <a name="architecture" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.architecture"></a>
736
+
737
+ ```typescript
738
+ public readonly architecture: Architecture;
739
+ ```
740
+
741
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
742
+
743
+ ---
744
+
745
+ ##### `description`<sup>Required</sup> <a name="description" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.description"></a>
746
+
747
+ ```typescript
748
+ public readonly description: string;
749
+ ```
750
+
751
+ - *Type:* string
752
+
753
+ ---
754
+
755
+ ##### `instanceTypes`<sup>Required</sup> <a name="instanceTypes" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.instanceTypes"></a>
756
+
757
+ ```typescript
758
+ public readonly instanceTypes: string[];
759
+ ```
760
+
761
+ - *Type:* string[]
762
+
763
+ ---
764
+
765
+ ##### `logRemovalPolicy`<sup>Required</sup> <a name="logRemovalPolicy" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.logRemovalPolicy"></a>
766
+
767
+ ```typescript
768
+ public readonly logRemovalPolicy: RemovalPolicy;
769
+ ```
770
+
771
+ - *Type:* aws-cdk-lib.RemovalPolicy
772
+
773
+ ---
774
+
775
+ ##### `logRetention`<sup>Required</sup> <a name="logRetention" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.logRetention"></a>
776
+
777
+ ```typescript
778
+ public readonly logRetention: RetentionDays;
779
+ ```
780
+
781
+ - *Type:* aws-cdk-lib.aws_logs.RetentionDays
782
+
783
+ ---
784
+
785
+ ##### `os`<sup>Required</sup> <a name="os" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.os"></a>
786
+
787
+ ```typescript
788
+ public readonly os: Os;
789
+ ```
790
+
791
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
792
+
793
+ ---
794
+
795
+ ##### `platform`<sup>Required</sup> <a name="platform" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.platform"></a>
796
+
797
+ ```typescript
798
+ public readonly platform: string;
799
+ ```
800
+
801
+ - *Type:* string
802
+
803
+ ---
804
+
805
+ ##### `rebuildInterval`<sup>Required</sup> <a name="rebuildInterval" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.rebuildInterval"></a>
806
+
807
+ ```typescript
808
+ public readonly rebuildInterval: Duration;
809
+ ```
810
+
811
+ - *Type:* aws-cdk-lib.Duration
812
+
813
+ ---
814
+
815
+ ##### `repository`<sup>Required</sup> <a name="repository" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.repository"></a>
816
+
817
+ ```typescript
818
+ public readonly repository: IRepository;
819
+ ```
820
+
821
+ - *Type:* aws-cdk-lib.aws_ecr.IRepository
822
+
823
+ ---
824
+
825
+ ##### `runnerVersion`<sup>Required</sup> <a name="runnerVersion" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.runnerVersion"></a>
826
+
827
+ ```typescript
828
+ public readonly runnerVersion: RunnerVersion;
829
+ ```
830
+
831
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a>
832
+
833
+ ---
834
+
835
+ ##### `securityGroupIds`<sup>Optional</sup> <a name="securityGroupIds" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.securityGroupIds"></a>
836
+
837
+ ```typescript
838
+ public readonly securityGroupIds: string[];
839
+ ```
840
+
841
+ - *Type:* string[]
842
+
843
+ ---
844
+
845
+ ##### `subnetId`<sup>Optional</sup> <a name="subnetId" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.subnetId"></a>
846
+
847
+ ```typescript
848
+ public readonly subnetId: string;
849
+ ```
850
+
851
+ - *Type:* string
852
+
853
+ ---
854
+
855
+
527
856
  ### FargateRunner <a name="FargateRunner" id="@cloudsnorkel/cdk-github-runners.FargateRunner"></a>
528
857
 
529
858
  - *Implements:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider">IRunnerProvider</a>
@@ -639,6 +968,7 @@ Any object.
639
968
  | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunner.property.connections">connections</a></code> | <code>aws-cdk-lib.aws_ec2.Connections</code> | The network connections associated with this resource. |
640
969
  | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunner.property.container">container</a></code> | <code>aws-cdk-lib.aws_ecs.ContainerDefinition</code> | Container definition hosting the runner. |
641
970
  | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunner.property.grantPrincipal">grantPrincipal</a></code> | <code>aws-cdk-lib.aws_iam.IPrincipal</code> | Grant principal used to add permissions to the runner role. |
971
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunner.property.image">image</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImage">RunnerImage</a></code> | Docker image used to start a new Fargate task. |
642
972
  | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunner.property.label">label</a></code> | <code>string</code> | Label associated with this provider. |
643
973
  | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunner.property.spot">spot</a></code> | <code>boolean</code> | Use spot pricing for Fargate tasks. |
644
974
  | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunner.property.task">task</a></code> | <code>aws-cdk-lib.aws_ecs.FargateTaskDefinition</code> | Fargate task hosting the runner. |
@@ -719,6 +1049,18 @@ Grant principal used to add permissions to the runner role.
719
1049
 
720
1050
  ---
721
1051
 
1052
+ ##### `image`<sup>Required</sup> <a name="image" id="@cloudsnorkel/cdk-github-runners.FargateRunner.property.image"></a>
1053
+
1054
+ ```typescript
1055
+ public readonly image: RunnerImage;
1056
+ ```
1057
+
1058
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImage">RunnerImage</a>
1059
+
1060
+ Docker image used to start a new Fargate task.
1061
+
1062
+ ---
1063
+
722
1064
  ##### `label`<sup>Required</sup> <a name="label" id="@cloudsnorkel/cdk-github-runners.FargateRunner.property.label"></a>
723
1065
 
724
1066
  ```typescript
@@ -877,27 +1219,170 @@ new GitHubRunners(scope: Construct, id: string, props?: GitHubRunnersProps)
877
1219
 
878
1220
  | **Name** | **Type** | **Description** |
879
1221
  | --- | --- | --- |
880
- | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.Initializer.parameter.scope">scope</a></code> | <code>constructs.Construct</code> | *No description.* |
881
- | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.Initializer.parameter.id">id</a></code> | <code>string</code> | *No description.* |
882
- | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.Initializer.parameter.props">props</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunnersProps">GitHubRunnersProps</a></code> | *No description.* |
1222
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.Initializer.parameter.scope">scope</a></code> | <code>constructs.Construct</code> | *No description.* |
1223
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.Initializer.parameter.id">id</a></code> | <code>string</code> | *No description.* |
1224
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.Initializer.parameter.props">props</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunnersProps">GitHubRunnersProps</a></code> | *No description.* |
1225
+
1226
+ ---
1227
+
1228
+ ##### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.Initializer.parameter.scope"></a>
1229
+
1230
+ - *Type:* constructs.Construct
1231
+
1232
+ ---
1233
+
1234
+ ##### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.Initializer.parameter.id"></a>
1235
+
1236
+ - *Type:* string
1237
+
1238
+ ---
1239
+
1240
+ ##### `props`<sup>Optional</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.Initializer.parameter.props"></a>
1241
+
1242
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.GitHubRunnersProps">GitHubRunnersProps</a>
1243
+
1244
+ ---
1245
+
1246
+ #### Methods <a name="Methods" id="Methods"></a>
1247
+
1248
+ | **Name** | **Description** |
1249
+ | --- | --- |
1250
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.toString">toString</a></code> | Returns a string representation of this construct. |
1251
+
1252
+ ---
1253
+
1254
+ ##### `toString` <a name="toString" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.toString"></a>
1255
+
1256
+ ```typescript
1257
+ public toString(): string
1258
+ ```
1259
+
1260
+ Returns a string representation of this construct.
1261
+
1262
+ #### Static Functions <a name="Static Functions" id="Static Functions"></a>
1263
+
1264
+ | **Name** | **Description** |
1265
+ | --- | --- |
1266
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
1267
+
1268
+ ---
1269
+
1270
+ ##### ~~`isConstruct`~~ <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.isConstruct"></a>
1271
+
1272
+ ```typescript
1273
+ import { GitHubRunners } from '@cloudsnorkel/cdk-github-runners'
1274
+
1275
+ GitHubRunners.isConstruct(x: any)
1276
+ ```
1277
+
1278
+ Checks if `x` is a construct.
1279
+
1280
+ ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.isConstruct.parameter.x"></a>
1281
+
1282
+ - *Type:* any
1283
+
1284
+ Any object.
1285
+
1286
+ ---
1287
+
1288
+ #### Properties <a name="Properties" id="Properties"></a>
1289
+
1290
+ | **Name** | **Type** | **Description** |
1291
+ | --- | --- | --- |
1292
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
1293
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.property.providers">providers</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider">IRunnerProvider</a>[]</code> | Configured runner providers. |
1294
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.property.secrets">secrets</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Secrets">Secrets</a></code> | Secrets for GitHub communication including webhook secret and runner authentication. |
1295
+
1296
+ ---
1297
+
1298
+ ##### `node`<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.property.node"></a>
1299
+
1300
+ ```typescript
1301
+ public readonly node: Node;
1302
+ ```
1303
+
1304
+ - *Type:* constructs.Node
1305
+
1306
+ The tree node.
1307
+
1308
+ ---
1309
+
1310
+ ##### `providers`<sup>Required</sup> <a name="providers" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.property.providers"></a>
1311
+
1312
+ ```typescript
1313
+ public readonly providers: IRunnerProvider[];
1314
+ ```
1315
+
1316
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider">IRunnerProvider</a>[]
1317
+
1318
+ Configured runner providers.
1319
+
1320
+ ---
1321
+
1322
+ ##### `secrets`<sup>Required</sup> <a name="secrets" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.property.secrets"></a>
1323
+
1324
+ ```typescript
1325
+ public readonly secrets: Secrets;
1326
+ ```
1327
+
1328
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Secrets">Secrets</a>
1329
+
1330
+ Secrets for GitHub communication including webhook secret and runner authentication.
1331
+
1332
+ ---
1333
+
1334
+
1335
+ ### ImageBuilderComponent <a name="ImageBuilderComponent" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"></a>
1336
+
1337
+ Components are a set of commands to run and optional files to add to an image.
1338
+
1339
+ Components are the building blocks of images built by Image Builder.
1340
+
1341
+ Example:
1342
+
1343
+ ```
1344
+ new ImageBuilderComponent(this, 'AWS CLI', {
1345
+ platform: 'Windows',
1346
+ displayName: 'AWS CLI',
1347
+ description: 'Install latest version of AWS CLI',
1348
+ commands: [
1349
+ '$ErrorActionPreference = \'Stop\'',
1350
+ 'Start-Process msiexec.exe -Wait -ArgumentList \'/i https://awscli.amazonaws.com/AWSCLIV2.msi /qn\'',
1351
+ ],
1352
+ }
1353
+ ```
1354
+
1355
+ #### Initializers <a name="Initializers" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.Initializer"></a>
1356
+
1357
+ ```typescript
1358
+ import { ImageBuilderComponent } from '@cloudsnorkel/cdk-github-runners'
1359
+
1360
+ new ImageBuilderComponent(scope: Construct, id: string, props: ImageBuilderComponentProperties)
1361
+ ```
1362
+
1363
+ | **Name** | **Type** | **Description** |
1364
+ | --- | --- | --- |
1365
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.Initializer.parameter.scope">scope</a></code> | <code>constructs.Construct</code> | *No description.* |
1366
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.Initializer.parameter.id">id</a></code> | <code>string</code> | *No description.* |
1367
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.Initializer.parameter.props">props</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties">ImageBuilderComponentProperties</a></code> | *No description.* |
883
1368
 
884
1369
  ---
885
1370
 
886
- ##### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.Initializer.parameter.scope"></a>
1371
+ ##### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.Initializer.parameter.scope"></a>
887
1372
 
888
1373
  - *Type:* constructs.Construct
889
1374
 
890
1375
  ---
891
1376
 
892
- ##### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.Initializer.parameter.id"></a>
1377
+ ##### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.Initializer.parameter.id"></a>
893
1378
 
894
1379
  - *Type:* string
895
1380
 
896
1381
  ---
897
1382
 
898
- ##### `props`<sup>Optional</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.Initializer.parameter.props"></a>
1383
+ ##### `props`<sup>Required</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.Initializer.parameter.props"></a>
899
1384
 
900
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.GitHubRunnersProps">GitHubRunnersProps</a>
1385
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties">ImageBuilderComponentProperties</a>
901
1386
 
902
1387
  ---
903
1388
 
@@ -905,11 +1390,13 @@ new GitHubRunners(scope: Construct, id: string, props?: GitHubRunnersProps)
905
1390
 
906
1391
  | **Name** | **Description** |
907
1392
  | --- | --- |
908
- | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.toString">toString</a></code> | Returns a string representation of this construct. |
1393
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.toString">toString</a></code> | Returns a string representation of this construct. |
1394
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.applyRemovalPolicy">applyRemovalPolicy</a></code> | Apply the given removal policy to this resource. |
1395
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.grantAssetsRead">grantAssetsRead</a></code> | Grants read permissions to the principal on the assets buckets. |
909
1396
 
910
1397
  ---
911
1398
 
912
- ##### `toString` <a name="toString" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.toString"></a>
1399
+ ##### `toString` <a name="toString" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.toString"></a>
913
1400
 
914
1401
  ```typescript
915
1402
  public toString(): string
@@ -917,25 +1404,62 @@ public toString(): string
917
1404
 
918
1405
  Returns a string representation of this construct.
919
1406
 
1407
+ ##### `applyRemovalPolicy` <a name="applyRemovalPolicy" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.applyRemovalPolicy"></a>
1408
+
1409
+ ```typescript
1410
+ public applyRemovalPolicy(policy: RemovalPolicy): void
1411
+ ```
1412
+
1413
+ Apply the given removal policy to this resource.
1414
+
1415
+ The Removal Policy controls what happens to this resource when it stops
1416
+ being managed by CloudFormation, either because you've removed it from the
1417
+ CDK application or because you've made a change that requires the resource
1418
+ to be replaced.
1419
+
1420
+ The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
1421
+ account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
1422
+
1423
+ ###### `policy`<sup>Required</sup> <a name="policy" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.applyRemovalPolicy.parameter.policy"></a>
1424
+
1425
+ - *Type:* aws-cdk-lib.RemovalPolicy
1426
+
1427
+ ---
1428
+
1429
+ ##### `grantAssetsRead` <a name="grantAssetsRead" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.grantAssetsRead"></a>
1430
+
1431
+ ```typescript
1432
+ public grantAssetsRead(grantee: IGrantable): void
1433
+ ```
1434
+
1435
+ Grants read permissions to the principal on the assets buckets.
1436
+
1437
+ ###### `grantee`<sup>Required</sup> <a name="grantee" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.grantAssetsRead.parameter.grantee"></a>
1438
+
1439
+ - *Type:* aws-cdk-lib.aws_iam.IGrantable
1440
+
1441
+ ---
1442
+
920
1443
  #### Static Functions <a name="Static Functions" id="Static Functions"></a>
921
1444
 
922
1445
  | **Name** | **Description** |
923
1446
  | --- | --- |
924
- | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
1447
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
1448
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isResource">isResource</a></code> | Check whether the given construct is a Resource. |
925
1449
 
926
1450
  ---
927
1451
 
928
- ##### ~~`isConstruct`~~ <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.isConstruct"></a>
1452
+ ##### ~~`isConstruct`~~ <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isConstruct"></a>
929
1453
 
930
1454
  ```typescript
931
- import { GitHubRunners } from '@cloudsnorkel/cdk-github-runners'
1455
+ import { ImageBuilderComponent } from '@cloudsnorkel/cdk-github-runners'
932
1456
 
933
- GitHubRunners.isConstruct(x: any)
1457
+ ImageBuilderComponent.isConstruct(x: any)
934
1458
  ```
935
1459
 
936
1460
  Checks if `x` is a construct.
937
1461
 
938
- ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.isConstruct.parameter.x"></a>
1462
+ ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isConstruct.parameter.x"></a>
939
1463
 
940
1464
  - *Type:* any
941
1465
 
@@ -943,17 +1467,35 @@ Any object.
943
1467
 
944
1468
  ---
945
1469
 
1470
+ ##### `isResource` <a name="isResource" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isResource"></a>
1471
+
1472
+ ```typescript
1473
+ import { ImageBuilderComponent } from '@cloudsnorkel/cdk-github-runners'
1474
+
1475
+ ImageBuilderComponent.isResource(construct: IConstruct)
1476
+ ```
1477
+
1478
+ Check whether the given construct is a Resource.
1479
+
1480
+ ###### `construct`<sup>Required</sup> <a name="construct" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isResource.parameter.construct"></a>
1481
+
1482
+ - *Type:* constructs.IConstruct
1483
+
1484
+ ---
1485
+
946
1486
  #### Properties <a name="Properties" id="Properties"></a>
947
1487
 
948
1488
  | **Name** | **Type** | **Description** |
949
1489
  | --- | --- | --- |
950
- | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
951
- | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.property.providers">providers</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider">IRunnerProvider</a>[]</code> | Configured runner providers. |
952
- | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.property.secrets">secrets</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Secrets">Secrets</a></code> | Secrets for GitHub communication including webhook secret and runner authentication. |
1490
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
1491
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.env">env</a></code> | <code>aws-cdk-lib.ResourceEnvironment</code> | The environment this resource belongs to. |
1492
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.stack">stack</a></code> | <code>aws-cdk-lib.Stack</code> | The stack in which this resource is defined. |
1493
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.arn">arn</a></code> | <code>string</code> | Component ARN. |
1494
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.platform">platform</a></code> | <code>string</code> | Supported platform for the component. |
953
1495
 
954
1496
  ---
955
1497
 
956
- ##### `node`<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.property.node"></a>
1498
+ ##### `node`<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.node"></a>
957
1499
 
958
1500
  ```typescript
959
1501
  public readonly node: Node;
@@ -965,27 +1507,58 @@ The tree node.
965
1507
 
966
1508
  ---
967
1509
 
968
- ##### `providers`<sup>Required</sup> <a name="providers" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.property.providers"></a>
1510
+ ##### `env`<sup>Required</sup> <a name="env" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.env"></a>
969
1511
 
970
1512
  ```typescript
971
- public readonly providers: IRunnerProvider[];
1513
+ public readonly env: ResourceEnvironment;
972
1514
  ```
973
1515
 
974
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider">IRunnerProvider</a>[]
1516
+ - *Type:* aws-cdk-lib.ResourceEnvironment
975
1517
 
976
- Configured runner providers.
1518
+ The environment this resource belongs to.
1519
+
1520
+ For resources that are created and managed by the CDK
1521
+ (generally, those created by creating new class instances like Role, Bucket, etc.),
1522
+ this is always the same as the environment of the stack they belong to;
1523
+ however, for imported resources
1524
+ (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
1525
+ that might be different than the stack they were imported into.
977
1526
 
978
1527
  ---
979
1528
 
980
- ##### `secrets`<sup>Required</sup> <a name="secrets" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.property.secrets"></a>
1529
+ ##### `stack`<sup>Required</sup> <a name="stack" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.stack"></a>
981
1530
 
982
1531
  ```typescript
983
- public readonly secrets: Secrets;
1532
+ public readonly stack: Stack;
984
1533
  ```
985
1534
 
986
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Secrets">Secrets</a>
1535
+ - *Type:* aws-cdk-lib.Stack
987
1536
 
988
- Secrets for GitHub communication including webhook secret and runner authentication.
1537
+ The stack in which this resource is defined.
1538
+
1539
+ ---
1540
+
1541
+ ##### `arn`<sup>Required</sup> <a name="arn" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.arn"></a>
1542
+
1543
+ ```typescript
1544
+ public readonly arn: string;
1545
+ ```
1546
+
1547
+ - *Type:* string
1548
+
1549
+ Component ARN.
1550
+
1551
+ ---
1552
+
1553
+ ##### `platform`<sup>Required</sup> <a name="platform" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.property.platform"></a>
1554
+
1555
+ ```typescript
1556
+ public readonly platform: string;
1557
+ ```
1558
+
1559
+ - *Type:* string
1560
+
1561
+ Supported platform for the component.
989
1562
 
990
1563
  ---
991
1564
 
@@ -1103,6 +1676,7 @@ Any object.
1103
1676
  | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunner.property.connections">connections</a></code> | <code>aws-cdk-lib.aws_ec2.Connections</code> | The network connections associated with this resource. |
1104
1677
  | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunner.property.function">function</a></code> | <code>aws-cdk-lib.aws_lambda.Function</code> | The function hosting the GitHub runner. |
1105
1678
  | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunner.property.grantPrincipal">grantPrincipal</a></code> | <code>aws-cdk-lib.aws_iam.IPrincipal</code> | Grant principal used to add permissions to the runner role. |
1679
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunner.property.image">image</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImage">RunnerImage</a></code> | Docker image used to start Lambda function. |
1106
1680
  | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunner.property.label">label</a></code> | <code>string</code> | Label associated with this provider. |
1107
1681
  | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunner.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | Security group attached to the function. |
1108
1682
  | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunner.property.vpc">vpc</a></code> | <code>aws-cdk-lib.aws_ec2.IVpc</code> | VPC used for hosting the function. |
@@ -1157,6 +1731,18 @@ Grant principal used to add permissions to the runner role.
1157
1731
 
1158
1732
  ---
1159
1733
 
1734
+ ##### `image`<sup>Required</sup> <a name="image" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.property.image"></a>
1735
+
1736
+ ```typescript
1737
+ public readonly image: RunnerImage;
1738
+ ```
1739
+
1740
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImage">RunnerImage</a>
1741
+
1742
+ Docker image used to start Lambda function.
1743
+
1744
+ ---
1745
+
1160
1746
  ##### `label`<sup>Required</sup> <a name="label" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.property.label"></a>
1161
1747
 
1162
1748
  ```typescript
@@ -1422,7 +2008,7 @@ const codeBuildImageBuilderProps: CodeBuildImageBuilderProps = { ... }
1422
2008
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilderProps.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | Security Group to assign to this instance. |
1423
2009
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilderProps.property.subnetSelection">subnetSelection</a></code> | <code>aws-cdk-lib.aws_ec2.SubnetSelection</code> | Where to place the network interfaces within the VPC. |
1424
2010
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilderProps.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. |
1425
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilderProps.property.vpc">vpc</a></code> | <code>aws-cdk-lib.aws_ec2.IVpc</code> | VPC to launch the runners in. |
2011
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilderProps.property.vpc">vpc</a></code> | <code>aws-cdk-lib.aws_ec2.IVpc</code> | VPC to build the image in. |
1426
2012
 
1427
2013
  ---
1428
2014
 
@@ -1596,36 +2182,223 @@ public readonly vpc: IVpc;
1596
2182
  - *Type:* aws-cdk-lib.aws_ec2.IVpc
1597
2183
  - *Default:* no VPC
1598
2184
 
1599
- VPC to launch the runners in.
2185
+ VPC to build the image in.
1600
2186
 
1601
2187
  ---
1602
2188
 
1603
2189
  ### CodeBuildRunnerProps <a name="CodeBuildRunnerProps" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps"></a>
1604
2190
 
1605
- #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.Initializer"></a>
2191
+ #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.Initializer"></a>
2192
+
2193
+ ```typescript
2194
+ import { CodeBuildRunnerProps } from '@cloudsnorkel/cdk-github-runners'
2195
+
2196
+ const codeBuildRunnerProps: CodeBuildRunnerProps = { ... }
2197
+ ```
2198
+
2199
+ #### Properties <a name="Properties" id="Properties"></a>
2200
+
2201
+ | **Name** | **Type** | **Description** |
2202
+ | --- | --- | --- |
2203
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.logRetention">logRetention</a></code> | <code>aws-cdk-lib.aws_logs.RetentionDays</code> | The number of days log events are kept in CloudWatch Logs. |
2204
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.computeType">computeType</a></code> | <code>aws-cdk-lib.aws_codebuild.ComputeType</code> | The type of compute to use for this build. |
2205
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.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. |
2206
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.label">label</a></code> | <code>string</code> | GitHub Actions label used for this provider. |
2207
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | Security Group to assign to this instance. |
2208
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.subnetSelection">subnetSelection</a></code> | <code>aws-cdk-lib.aws_ec2.SubnetSelection</code> | Where to place the network interfaces within the VPC. |
2209
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.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. |
2210
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.vpc">vpc</a></code> | <code>aws-cdk-lib.aws_ec2.IVpc</code> | VPC to launch the runners in. |
2211
+
2212
+ ---
2213
+
2214
+ ##### `logRetention`<sup>Optional</sup> <a name="logRetention" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.logRetention"></a>
2215
+
2216
+ ```typescript
2217
+ public readonly logRetention: RetentionDays;
2218
+ ```
2219
+
2220
+ - *Type:* aws-cdk-lib.aws_logs.RetentionDays
2221
+ - *Default:* logs.RetentionDays.ONE_MONTH
2222
+
2223
+ The number of days log events are kept in CloudWatch Logs.
2224
+
2225
+ When updating
2226
+ this property, unsetting it doesn't remove the log retention policy. To
2227
+ remove the retention policy, set the value to `INFINITE`.
2228
+
2229
+ ---
2230
+
2231
+ ##### `computeType`<sup>Optional</sup> <a name="computeType" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.computeType"></a>
2232
+
2233
+ ```typescript
2234
+ public readonly computeType: ComputeType;
2235
+ ```
2236
+
2237
+ - *Type:* aws-cdk-lib.aws_codebuild.ComputeType
2238
+ - *Default:* {@link ComputeType#SMALL}
2239
+
2240
+ The type of compute to use for this build.
2241
+
2242
+ See the {@link ComputeType} enum for the possible values.
2243
+
2244
+ ---
2245
+
2246
+ ##### `imageBuilder`<sup>Optional</sup> <a name="imageBuilder" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.imageBuilder"></a>
2247
+
2248
+ ```typescript
2249
+ public readonly imageBuilder: IImageBuilder;
2250
+ ```
2251
+
2252
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder">IImageBuilder</a>
2253
+ - *Default:* image builder with `CodeBuildRunner.LINUX_X64_DOCKERFILE_PATH` as Dockerfile
2254
+
2255
+ Provider running an image to run inside CodeBuild with GitHub runner pre-configured.
2256
+
2257
+ A user named `runner` is expected to exist with access to Docker-in-Docker.
2258
+
2259
+ ---
2260
+
2261
+ ##### `label`<sup>Optional</sup> <a name="label" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.label"></a>
2262
+
2263
+ ```typescript
2264
+ public readonly label: string;
2265
+ ```
2266
+
2267
+ - *Type:* string
2268
+ - *Default:* 'codebuild'
2269
+
2270
+ GitHub Actions label used for this provider.
2271
+
2272
+ ---
2273
+
2274
+ ##### `securityGroup`<sup>Optional</sup> <a name="securityGroup" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.securityGroup"></a>
2275
+
2276
+ ```typescript
2277
+ public readonly securityGroup: ISecurityGroup;
2278
+ ```
2279
+
2280
+ - *Type:* aws-cdk-lib.aws_ec2.ISecurityGroup
2281
+ - *Default:* public project with no security group
2282
+
2283
+ Security Group to assign to this instance.
2284
+
2285
+ ---
2286
+
2287
+ ##### `subnetSelection`<sup>Optional</sup> <a name="subnetSelection" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.subnetSelection"></a>
2288
+
2289
+ ```typescript
2290
+ public readonly subnetSelection: SubnetSelection;
2291
+ ```
2292
+
2293
+ - *Type:* aws-cdk-lib.aws_ec2.SubnetSelection
2294
+ - *Default:* no subnet
2295
+
2296
+ Where to place the network interfaces within the VPC.
2297
+
2298
+ ---
2299
+
2300
+ ##### `timeout`<sup>Optional</sup> <a name="timeout" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.timeout"></a>
2301
+
2302
+ ```typescript
2303
+ public readonly timeout: Duration;
2304
+ ```
2305
+
2306
+ - *Type:* aws-cdk-lib.Duration
2307
+ - *Default:* Duration.hours(1)
2308
+
2309
+ The number of minutes after which AWS CodeBuild stops the build if it's not complete.
2310
+
2311
+ For valid values, see the timeoutInMinutes field in the AWS
2312
+ CodeBuild User Guide.
2313
+
2314
+ ---
2315
+
2316
+ ##### `vpc`<sup>Optional</sup> <a name="vpc" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.vpc"></a>
2317
+
2318
+ ```typescript
2319
+ public readonly vpc: IVpc;
2320
+ ```
2321
+
2322
+ - *Type:* aws-cdk-lib.aws_ec2.IVpc
2323
+ - *Default:* no VPC
2324
+
2325
+ VPC to launch the runners in.
2326
+
2327
+ ---
2328
+
2329
+ ### ContainerImageBuilderProps <a name="ContainerImageBuilderProps" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps"></a>
2330
+
2331
+ Properties for ContainerImageBuilder construct.
2332
+
2333
+ #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.Initializer"></a>
2334
+
2335
+ ```typescript
2336
+ import { ContainerImageBuilderProps } from '@cloudsnorkel/cdk-github-runners'
2337
+
2338
+ const containerImageBuilderProps: ContainerImageBuilderProps = { ... }
2339
+ ```
2340
+
2341
+ #### Properties <a name="Properties" id="Properties"></a>
2342
+
2343
+ | **Name** | **Type** | **Description** |
2344
+ | --- | --- | --- |
2345
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.architecture">architecture</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a></code> | Image architecture. |
2346
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.instanceType">instanceType</a></code> | <code>aws-cdk-lib.aws_ec2.InstanceType</code> | The instance type used to build the image. |
2347
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.logRemovalPolicy">logRemovalPolicy</a></code> | <code>aws-cdk-lib.RemovalPolicy</code> | Removal policy for logs of image builds. |
2348
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.logRetention">logRetention</a></code> | <code>aws-cdk-lib.aws_logs.RetentionDays</code> | The number of days log events are kept in CloudWatch Logs. |
2349
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.os">os</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a></code> | Image OS. |
2350
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.rebuildInterval">rebuildInterval</a></code> | <code>aws-cdk-lib.Duration</code> | Schedule the image to be rebuilt every given interval. |
2351
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.runnerVersion">runnerVersion</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a></code> | Version of GitHub Runners to install. |
2352
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | Security Group to assign to this instance. |
2353
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.subnetSelection">subnetSelection</a></code> | <code>aws-cdk-lib.aws_ec2.SubnetSelection</code> | Where to place the network interfaces within the VPC. |
2354
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.vpc">vpc</a></code> | <code>aws-cdk-lib.aws_ec2.IVpc</code> | VPC to launch the runners in. |
2355
+
2356
+ ---
2357
+
2358
+ ##### `architecture`<sup>Optional</sup> <a name="architecture" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.architecture"></a>
2359
+
2360
+ ```typescript
2361
+ public readonly architecture: Architecture;
2362
+ ```
2363
+
2364
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
2365
+ - *Default:* Architecture.X86_64
2366
+
2367
+ Image architecture.
2368
+
2369
+ ---
2370
+
2371
+ ##### `instanceType`<sup>Optional</sup> <a name="instanceType" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.instanceType"></a>
2372
+
2373
+ ```typescript
2374
+ public readonly instanceType: InstanceType;
2375
+ ```
2376
+
2377
+ - *Type:* aws-cdk-lib.aws_ec2.InstanceType
2378
+ - *Default:* m5.large
2379
+
2380
+ The instance type used to build the image.
2381
+
2382
+ ---
2383
+
2384
+ ##### `logRemovalPolicy`<sup>Optional</sup> <a name="logRemovalPolicy" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.logRemovalPolicy"></a>
1606
2385
 
1607
2386
  ```typescript
1608
- import { CodeBuildRunnerProps } from '@cloudsnorkel/cdk-github-runners'
1609
-
1610
- const codeBuildRunnerProps: CodeBuildRunnerProps = { ... }
2387
+ public readonly logRemovalPolicy: RemovalPolicy;
1611
2388
  ```
1612
2389
 
1613
- #### Properties <a name="Properties" id="Properties"></a>
2390
+ - *Type:* aws-cdk-lib.RemovalPolicy
2391
+ - *Default:* RemovalPolicy.DESTROY
1614
2392
 
1615
- | **Name** | **Type** | **Description** |
1616
- | --- | --- | --- |
1617
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.logRetention">logRetention</a></code> | <code>aws-cdk-lib.aws_logs.RetentionDays</code> | The number of days log events are kept in CloudWatch Logs. |
1618
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.computeType">computeType</a></code> | <code>aws-cdk-lib.aws_codebuild.ComputeType</code> | The type of compute to use for this build. |
1619
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.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. |
1620
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.label">label</a></code> | <code>string</code> | GitHub Actions label used for this provider. |
1621
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | Security Group to assign to this instance. |
1622
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.subnetSelection">subnetSelection</a></code> | <code>aws-cdk-lib.aws_ec2.SubnetSelection</code> | Where to place the network interfaces within the VPC. |
1623
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.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. |
1624
- | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.vpc">vpc</a></code> | <code>aws-cdk-lib.aws_ec2.IVpc</code> | VPC to launch the runners in. |
2393
+ Removal policy for logs of image builds.
2394
+
2395
+ 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.
2396
+
2397
+ We try to not leave anything behind when removed. But sometimes a log staying behind is useful.
1625
2398
 
1626
2399
  ---
1627
2400
 
1628
- ##### `logRetention`<sup>Optional</sup> <a name="logRetention" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.logRetention"></a>
2401
+ ##### `logRetention`<sup>Optional</sup> <a name="logRetention" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.logRetention"></a>
1629
2402
 
1630
2403
  ```typescript
1631
2404
  public readonly logRetention: RetentionDays;
@@ -1642,99 +2415,83 @@ remove the retention policy, set the value to `INFINITE`.
1642
2415
 
1643
2416
  ---
1644
2417
 
1645
- ##### `computeType`<sup>Optional</sup> <a name="computeType" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.computeType"></a>
2418
+ ##### `os`<sup>Optional</sup> <a name="os" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.os"></a>
1646
2419
 
1647
2420
  ```typescript
1648
- public readonly computeType: ComputeType;
2421
+ public readonly os: Os;
1649
2422
  ```
1650
2423
 
1651
- - *Type:* aws-cdk-lib.aws_codebuild.ComputeType
1652
- - *Default:* {@link ComputeType#SMALL}
1653
-
1654
- The type of compute to use for this build.
2424
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
2425
+ - *Default:* OS.LINUX
1655
2426
 
1656
- See the {@link ComputeType} enum for the possible values.
2427
+ Image OS.
1657
2428
 
1658
2429
  ---
1659
2430
 
1660
- ##### `imageBuilder`<sup>Optional</sup> <a name="imageBuilder" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.imageBuilder"></a>
2431
+ ##### `rebuildInterval`<sup>Optional</sup> <a name="rebuildInterval" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.rebuildInterval"></a>
1661
2432
 
1662
2433
  ```typescript
1663
- public readonly imageBuilder: IImageBuilder;
2434
+ public readonly rebuildInterval: Duration;
1664
2435
  ```
1665
2436
 
1666
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder">IImageBuilder</a>
1667
- - *Default:* image builder with `CodeBuildRunner.LINUX_X64_DOCKERFILE_PATH` as Dockerfile
2437
+ - *Type:* aws-cdk-lib.Duration
2438
+ - *Default:* Duration.days(7)
1668
2439
 
1669
- Provider running an image to run inside CodeBuild with GitHub runner pre-configured.
2440
+ Schedule the image to be rebuilt every given interval.
1670
2441
 
1671
- A user named `runner` is expected to exist with access to Docker-in-Docker.
2442
+ Useful for keeping the image up-do-date with the latest GitHub runner version and latest OS updates.
2443
+
2444
+ Set to zero to disable.
1672
2445
 
1673
2446
  ---
1674
2447
 
1675
- ##### `label`<sup>Optional</sup> <a name="label" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.label"></a>
2448
+ ##### `runnerVersion`<sup>Optional</sup> <a name="runnerVersion" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.runnerVersion"></a>
1676
2449
 
1677
2450
  ```typescript
1678
- public readonly label: string;
2451
+ public readonly runnerVersion: RunnerVersion;
1679
2452
  ```
1680
2453
 
1681
- - *Type:* string
1682
- - *Default:* 'codebuild'
2454
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a>
2455
+ - *Default:* latest version available
1683
2456
 
1684
- GitHub Actions label used for this provider.
2457
+ Version of GitHub Runners to install.
1685
2458
 
1686
2459
  ---
1687
2460
 
1688
- ##### `securityGroup`<sup>Optional</sup> <a name="securityGroup" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.securityGroup"></a>
2461
+ ##### `securityGroup`<sup>Optional</sup> <a name="securityGroup" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.securityGroup"></a>
1689
2462
 
1690
2463
  ```typescript
1691
2464
  public readonly securityGroup: ISecurityGroup;
1692
2465
  ```
1693
2466
 
1694
2467
  - *Type:* aws-cdk-lib.aws_ec2.ISecurityGroup
1695
- - *Default:* public project with no security group
2468
+ - *Default:* default account security group
1696
2469
 
1697
2470
  Security Group to assign to this instance.
1698
2471
 
1699
2472
  ---
1700
2473
 
1701
- ##### `subnetSelection`<sup>Optional</sup> <a name="subnetSelection" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.subnetSelection"></a>
2474
+ ##### `subnetSelection`<sup>Optional</sup> <a name="subnetSelection" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.subnetSelection"></a>
1702
2475
 
1703
2476
  ```typescript
1704
2477
  public readonly subnetSelection: SubnetSelection;
1705
2478
  ```
1706
2479
 
1707
2480
  - *Type:* aws-cdk-lib.aws_ec2.SubnetSelection
1708
- - *Default:* no subnet
2481
+ - *Default:* default VPC subnet
1709
2482
 
1710
2483
  Where to place the network interfaces within the VPC.
1711
2484
 
1712
2485
  ---
1713
2486
 
1714
- ##### `timeout`<sup>Optional</sup> <a name="timeout" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.timeout"></a>
1715
-
1716
- ```typescript
1717
- public readonly timeout: Duration;
1718
- ```
1719
-
1720
- - *Type:* aws-cdk-lib.Duration
1721
- - *Default:* Duration.hours(1)
1722
-
1723
- The number of minutes after which AWS CodeBuild stops the build if it's not complete.
1724
-
1725
- For valid values, see the timeoutInMinutes field in the AWS
1726
- CodeBuild User Guide.
1727
-
1728
- ---
1729
-
1730
- ##### `vpc`<sup>Optional</sup> <a name="vpc" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.vpc"></a>
2487
+ ##### `vpc`<sup>Optional</sup> <a name="vpc" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.vpc"></a>
1731
2488
 
1732
2489
  ```typescript
1733
2490
  public readonly vpc: IVpc;
1734
2491
  ```
1735
2492
 
1736
2493
  - *Type:* aws-cdk-lib.aws_ec2.IVpc
1737
- - *Default:* no VPC
2494
+ - *Default:* default account VPC
1738
2495
 
1739
2496
  VPC to launch the runners in.
1740
2497
 
@@ -2096,6 +2853,139 @@ Use this with GitHub Enterprise Server hosted that's inaccessible from outside t
2096
2853
 
2097
2854
  ---
2098
2855
 
2856
+ ### ImageBuilderAsset <a name="ImageBuilderAsset" id="@cloudsnorkel/cdk-github-runners.ImageBuilderAsset"></a>
2857
+
2858
+ An asset including file or directory to place inside the built image.
2859
+
2860
+ #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.ImageBuilderAsset.Initializer"></a>
2861
+
2862
+ ```typescript
2863
+ import { ImageBuilderAsset } from '@cloudsnorkel/cdk-github-runners'
2864
+
2865
+ const imageBuilderAsset: ImageBuilderAsset = { ... }
2866
+ ```
2867
+
2868
+ #### Properties <a name="Properties" id="Properties"></a>
2869
+
2870
+ | **Name** | **Type** | **Description** |
2871
+ | --- | --- | --- |
2872
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderAsset.property.asset">asset</a></code> | <code>aws-cdk-lib.aws_s3_assets.Asset</code> | Asset to place in the image. |
2873
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderAsset.property.path">path</a></code> | <code>string</code> | Path to place asset in the image. |
2874
+
2875
+ ---
2876
+
2877
+ ##### `asset`<sup>Required</sup> <a name="asset" id="@cloudsnorkel/cdk-github-runners.ImageBuilderAsset.property.asset"></a>
2878
+
2879
+ ```typescript
2880
+ public readonly asset: Asset;
2881
+ ```
2882
+
2883
+ - *Type:* aws-cdk-lib.aws_s3_assets.Asset
2884
+
2885
+ Asset to place in the image.
2886
+
2887
+ ---
2888
+
2889
+ ##### `path`<sup>Required</sup> <a name="path" id="@cloudsnorkel/cdk-github-runners.ImageBuilderAsset.property.path"></a>
2890
+
2891
+ ```typescript
2892
+ public readonly path: string;
2893
+ ```
2894
+
2895
+ - *Type:* string
2896
+
2897
+ Path to place asset in the image.
2898
+
2899
+ ---
2900
+
2901
+ ### ImageBuilderComponentProperties <a name="ImageBuilderComponentProperties" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties"></a>
2902
+
2903
+ Properties for ImageBuilderComponent construct.
2904
+
2905
+ #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties.Initializer"></a>
2906
+
2907
+ ```typescript
2908
+ import { ImageBuilderComponentProperties } from '@cloudsnorkel/cdk-github-runners'
2909
+
2910
+ const imageBuilderComponentProperties: ImageBuilderComponentProperties = { ... }
2911
+ ```
2912
+
2913
+ #### Properties <a name="Properties" id="Properties"></a>
2914
+
2915
+ | **Name** | **Type** | **Description** |
2916
+ | --- | --- | --- |
2917
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties.property.commands">commands</a></code> | <code>string[]</code> | Shell commands to run when adding this component to the image. |
2918
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties.property.description">description</a></code> | <code>string</code> | Component description. |
2919
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties.property.displayName">displayName</a></code> | <code>string</code> | Component display name. |
2920
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties.property.platform">platform</a></code> | <code>string</code> | Component platform. |
2921
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties.property.assets">assets</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderAsset">ImageBuilderAsset</a>[]</code> | Optional assets to add to the built image. |
2922
+
2923
+ ---
2924
+
2925
+ ##### `commands`<sup>Required</sup> <a name="commands" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties.property.commands"></a>
2926
+
2927
+ ```typescript
2928
+ public readonly commands: string[];
2929
+ ```
2930
+
2931
+ - *Type:* string[]
2932
+
2933
+ Shell commands to run when adding this component to the image.
2934
+
2935
+ On Linux, these are bash commands. On Windows, there are PowerShell commands.
2936
+
2937
+ ---
2938
+
2939
+ ##### `description`<sup>Required</sup> <a name="description" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties.property.description"></a>
2940
+
2941
+ ```typescript
2942
+ public readonly description: string;
2943
+ ```
2944
+
2945
+ - *Type:* string
2946
+
2947
+ Component description.
2948
+
2949
+ ---
2950
+
2951
+ ##### `displayName`<sup>Required</sup> <a name="displayName" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties.property.displayName"></a>
2952
+
2953
+ ```typescript
2954
+ public readonly displayName: string;
2955
+ ```
2956
+
2957
+ - *Type:* string
2958
+
2959
+ Component display name.
2960
+
2961
+ ---
2962
+
2963
+ ##### `platform`<sup>Required</sup> <a name="platform" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties.property.platform"></a>
2964
+
2965
+ ```typescript
2966
+ public readonly platform: string;
2967
+ ```
2968
+
2969
+ - *Type:* string
2970
+
2971
+ Component platform.
2972
+
2973
+ Must match the builder platform.
2974
+
2975
+ ---
2976
+
2977
+ ##### `assets`<sup>Optional</sup> <a name="assets" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties.property.assets"></a>
2978
+
2979
+ ```typescript
2980
+ public readonly assets: ImageBuilderAsset[];
2981
+ ```
2982
+
2983
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderAsset">ImageBuilderAsset</a>[]
2984
+
2985
+ Optional assets to add to the built image.
2986
+
2987
+ ---
2988
+
2099
2989
  ### LambdaRunnerProps <a name="LambdaRunnerProps" id="@cloudsnorkel/cdk-github-runners.LambdaRunnerProps"></a>
2100
2990
 
2101
2991
  #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.LambdaRunnerProps.Initializer"></a>
@@ -2269,10 +3159,11 @@ const runnerImage: RunnerImage = { ... }
2269
3159
  | **Name** | **Type** | **Description** |
2270
3160
  | --- | --- | --- |
2271
3161
  | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImage.property.architecture">architecture</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a></code> | Architecture of the image. |
2272
- | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImage.property.imageDigest">imageDigest</a></code> | <code>string</code> | Image digest for providers that need to know the digest like Lambda. |
2273
3162
  | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImage.property.imageRepository">imageRepository</a></code> | <code>aws-cdk-lib.aws_ecr.IRepository</code> | ECR repository containing the image. |
2274
3163
  | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImage.property.imageTag">imageTag</a></code> | <code>string</code> | Static image tag where the image will be pushed. |
2275
3164
  | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImage.property.os">os</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a></code> | OS type of the image. |
3165
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImage.property.imageDigest">imageDigest</a></code> | <code>string</code> | Image digest for providers that need to know the digest like Lambda. |
3166
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImage.property.logGroup">logGroup</a></code> | <code>aws-cdk-lib.aws_logs.LogGroup</code> | Log group where image builds are logged. |
2276
3167
 
2277
3168
  ---
2278
3169
 
@@ -2288,20 +3179,6 @@ Architecture of the image.
2288
3179
 
2289
3180
  ---
2290
3181
 
2291
- ##### `imageDigest`<sup>Required</sup> <a name="imageDigest" id="@cloudsnorkel/cdk-github-runners.RunnerImage.property.imageDigest"></a>
2292
-
2293
- ```typescript
2294
- public readonly imageDigest: string;
2295
- ```
2296
-
2297
- - *Type:* string
2298
-
2299
- Image digest for providers that need to know the digest like Lambda.
2300
-
2301
- WARNING: the digest might change when the builder automatically rebuilds the image on a schedule. Do not expect for this digest to stay the same between deploys.
2302
-
2303
- ---
2304
-
2305
3182
  ##### `imageRepository`<sup>Required</sup> <a name="imageRepository" id="@cloudsnorkel/cdk-github-runners.RunnerImage.property.imageRepository"></a>
2306
3183
 
2307
3184
  ```typescript
@@ -2338,6 +3215,34 @@ OS type of the image.
2338
3215
 
2339
3216
  ---
2340
3217
 
3218
+ ##### `imageDigest`<sup>Optional</sup> <a name="imageDigest" id="@cloudsnorkel/cdk-github-runners.RunnerImage.property.imageDigest"></a>
3219
+
3220
+ ```typescript
3221
+ public readonly imageDigest: string;
3222
+ ```
3223
+
3224
+ - *Type:* string
3225
+
3226
+ Image digest for providers that need to know the digest like Lambda.
3227
+
3228
+ If the digest is not specified, imageTag must always point to a new tag on update. If not, the build may try to use the old image.
3229
+
3230
+ WARNING: the digest might change when the builder automatically rebuilds the image on a schedule. Do not expect for this digest to stay the same between deploys.
3231
+
3232
+ ---
3233
+
3234
+ ##### `logGroup`<sup>Optional</sup> <a name="logGroup" id="@cloudsnorkel/cdk-github-runners.RunnerImage.property.logGroup"></a>
3235
+
3236
+ ```typescript
3237
+ public readonly logGroup: LogGroup;
3238
+ ```
3239
+
3240
+ - *Type:* aws-cdk-lib.aws_logs.LogGroup
3241
+
3242
+ Log group where image builds are logged.
3243
+
3244
+ ---
3245
+
2341
3246
  ### RunnerProviderProps <a name="RunnerProviderProps" id="@cloudsnorkel/cdk-github-runners.RunnerProviderProps"></a>
2342
3247
 
2343
3248
  Common properties for all runner providers.
@@ -2841,7 +3746,7 @@ image OS.
2841
3746
 
2842
3747
  ### IImageBuilder <a name="IImageBuilder" id="@cloudsnorkel/cdk-github-runners.IImageBuilder"></a>
2843
3748
 
2844
- - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder">CodeBuildImageBuilder</a>, <a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder">IImageBuilder</a>
3749
+ - *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>
2845
3750
 
2846
3751
  Interface for constructs that build an image that can be used in {@link IRunnerProvider}.
2847
3752
 
@@ -2870,6 +3775,59 @@ ECR repository containing the image.
2870
3775
  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.
2871
3776
 
2872
3777
 
3778
+ ### IRunnerImageStatus <a name="IRunnerImageStatus" id="@cloudsnorkel/cdk-github-runners.IRunnerImageStatus"></a>
3779
+
3780
+ - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageStatus">IRunnerImageStatus</a>
3781
+
3782
+ Interface for runner image status used by status.json.
3783
+
3784
+
3785
+ #### Properties <a name="Properties" id="Properties"></a>
3786
+
3787
+ | **Name** | **Type** | **Description** |
3788
+ | --- | --- | --- |
3789
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageBuilderLogGroup">imageBuilderLogGroup</a></code> | <code>string</code> | Log group name for the image builder where history of image builds can be analyzed. |
3790
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageRepository">imageRepository</a></code> | <code>string</code> | Image repository where runner image is pushed. |
3791
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageTag">imageTag</a></code> | <code>string</code> | Tag of image that should be used. |
3792
+
3793
+ ---
3794
+
3795
+ ##### `imageBuilderLogGroup`<sup>Optional</sup> <a name="imageBuilderLogGroup" id="@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageBuilderLogGroup"></a>
3796
+
3797
+ ```typescript
3798
+ public readonly imageBuilderLogGroup: string;
3799
+ ```
3800
+
3801
+ - *Type:* string
3802
+
3803
+ Log group name for the image builder where history of image builds can be analyzed.
3804
+
3805
+ ---
3806
+
3807
+ ##### `imageRepository`<sup>Optional</sup> <a name="imageRepository" id="@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageRepository"></a>
3808
+
3809
+ ```typescript
3810
+ public readonly imageRepository: string;
3811
+ ```
3812
+
3813
+ - *Type:* string
3814
+
3815
+ Image repository where runner image is pushed.
3816
+
3817
+ ---
3818
+
3819
+ ##### `imageTag`<sup>Optional</sup> <a name="imageTag" id="@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageTag"></a>
3820
+
3821
+ ```typescript
3822
+ public readonly imageTag: string;
3823
+ ```
3824
+
3825
+ - *Type:* string
3826
+
3827
+ Tag of image that should be used.
3828
+
3829
+ ---
3830
+
2873
3831
  ### IRunnerProvider <a name="IRunnerProvider" id="@cloudsnorkel/cdk-github-runners.IRunnerProvider"></a>
2874
3832
 
2875
3833
  - *Extends:* aws-cdk-lib.aws_ec2.IConnectable, aws-cdk-lib.aws_iam.IGrantable
@@ -2912,6 +3870,7 @@ specific build parameters.
2912
3870
  | --- | --- | --- |
2913
3871
  | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider.property.connections">connections</a></code> | <code>aws-cdk-lib.aws_ec2.Connections</code> | The network connections associated with this resource. |
2914
3872
  | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider.property.grantPrincipal">grantPrincipal</a></code> | <code>aws-cdk-lib.aws_iam.IPrincipal</code> | The principal to grant permissions to. |
3873
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider.property.image">image</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImage">RunnerImage</a></code> | Image used to create a new resource compute. |
2915
3874
  | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider.property.label">label</a></code> | <code>string</code> | GitHub Actions label associated with this runner provider. |
2916
3875
  | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | Security group associated with runners. |
2917
3876
  | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider.property.vpc">vpc</a></code> | <code>aws-cdk-lib.aws_ec2.IVpc</code> | VPC network in which runners will be placed. |
@@ -2942,6 +3901,20 @@ The principal to grant permissions to.
2942
3901
 
2943
3902
  ---
2944
3903
 
3904
+ ##### `image`<sup>Required</sup> <a name="image" id="@cloudsnorkel/cdk-github-runners.IRunnerProvider.property.image"></a>
3905
+
3906
+ ```typescript
3907
+ public readonly image: RunnerImage;
3908
+ ```
3909
+
3910
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImage">RunnerImage</a>
3911
+
3912
+ Image used to create a new resource compute.
3913
+
3914
+ Can be Docker image, AMI, or something else.
3915
+
3916
+ ---
3917
+
2945
3918
  ##### `label`<sup>Required</sup> <a name="label" id="@cloudsnorkel/cdk-github-runners.IRunnerProvider.property.label"></a>
2946
3919
 
2947
3920
  ```typescript