@cloudsnorkel/cdk-github-runners 0.3.2 → 0.5.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 (35) hide show
  1. package/.gitattributes +1 -0
  2. package/.jsii +1413 -431
  3. package/API.md +1082 -126
  4. package/README.md +12 -10
  5. package/lib/index.d.ts +2 -1
  6. package/lib/index.js +4 -1
  7. package/lib/lambdas/aws-image-builder-versioner/index.js +2469 -0
  8. package/lib/lambdas/build-image/index.js +77 -43
  9. package/lib/lambdas/delete-runner/index.js +114 -79
  10. package/lib/lambdas/setup/index.html +10 -10
  11. package/lib/lambdas/setup/index.js +27 -12
  12. package/lib/lambdas/status/index.js +147 -82
  13. package/lib/lambdas/token-retriever/index.js +114 -79
  14. package/lib/lambdas/update-lambda/index.js +5 -2
  15. package/lib/lambdas/webhook-handler/index.js +11 -5
  16. package/lib/providers/codebuild.d.ts +5 -1
  17. package/lib/providers/codebuild.js +16 -6
  18. package/lib/providers/common.d.ts +25 -6
  19. package/lib/providers/common.js +4 -4
  20. package/lib/providers/docker-images/fargate/linux-arm64/Dockerfile +0 -2
  21. package/lib/providers/docker-images/fargate/linux-x64/Dockerfile +0 -3
  22. package/lib/providers/fargate.d.ts +6 -1
  23. package/lib/providers/fargate.js +56 -15
  24. package/lib/providers/image-builders/codebuild.d.ts +6 -2
  25. package/lib/providers/image-builders/codebuild.js +14 -11
  26. package/lib/providers/image-builders/container.d.ts +220 -0
  27. package/lib/providers/image-builders/container.js +509 -0
  28. package/lib/providers/image-builders/static.js +2 -3
  29. package/lib/providers/lambda.d.ts +6 -1
  30. package/lib/providers/lambda.js +79 -8
  31. package/lib/runner.js +29 -13
  32. package/lib/secrets.js +1 -1
  33. package/package.json +16 -12
  34. package/lib/providers/docker-images/fargate/linux-arm64/runner.sh +0 -5
  35. package/lib/providers/docker-images/fargate/linux-x64/runner.sh +0 -5
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 and Fargate.
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, 'CodeBuild 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
@@ -881,65 +1223,263 @@ new GitHubRunners(scope: Construct, id: string, props?: GitHubRunnersProps)
881
1223
  | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.Initializer.parameter.id">id</a></code> | <code>string</code> | *No description.* |
882
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.* |
883
1225
 
884
- ---
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.* |
1368
+
1369
+ ---
1370
+
1371
+ ##### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.Initializer.parameter.scope"></a>
1372
+
1373
+ - *Type:* constructs.Construct
1374
+
1375
+ ---
1376
+
1377
+ ##### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.Initializer.parameter.id"></a>
1378
+
1379
+ - *Type:* string
1380
+
1381
+ ---
1382
+
1383
+ ##### `props`<sup>Required</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.Initializer.parameter.props"></a>
1384
+
1385
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties">ImageBuilderComponentProperties</a>
1386
+
1387
+ ---
1388
+
1389
+ #### Methods <a name="Methods" id="Methods"></a>
1390
+
1391
+ | **Name** | **Description** |
1392
+ | --- | --- |
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. |
1396
+
1397
+ ---
1398
+
1399
+ ##### `toString` <a name="toString" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.toString"></a>
1400
+
1401
+ ```typescript
1402
+ public toString(): string
1403
+ ```
1404
+
1405
+ Returns a string representation of this construct.
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.
885
1414
 
886
- ##### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.Initializer.parameter.scope"></a>
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.
887
1419
 
888
- - *Type:* constructs.Construct
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
889
1426
 
890
1427
  ---
891
1428
 
892
- ##### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.Initializer.parameter.id"></a>
1429
+ ##### `grantAssetsRead` <a name="grantAssetsRead" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.grantAssetsRead"></a>
893
1430
 
894
- - *Type:* string
1431
+ ```typescript
1432
+ public grantAssetsRead(grantee: IGrantable): void
1433
+ ```
895
1434
 
896
- ---
1435
+ Grants read permissions to the principal on the assets buckets.
897
1436
 
898
- ##### `props`<sup>Optional</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.Initializer.parameter.props"></a>
1437
+ ###### `grantee`<sup>Required</sup> <a name="grantee" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.grantAssetsRead.parameter.grantee"></a>
899
1438
 
900
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.GitHubRunnersProps">GitHubRunnersProps</a>
1439
+ - *Type:* aws-cdk-lib.aws_iam.IGrantable
901
1440
 
902
1441
  ---
903
1442
 
904
- #### Methods <a name="Methods" id="Methods"></a>
1443
+ #### Static Functions <a name="Static Functions" id="Static Functions"></a>
905
1444
 
906
1445
  | **Name** | **Description** |
907
1446
  | --- | --- |
908
- | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.toString">toString</a></code> | Returns a string representation of this 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. |
909
1449
 
910
1450
  ---
911
1451
 
912
- ##### `toString` <a name="toString" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.toString"></a>
1452
+ ##### ~~`isConstruct`~~ <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isConstruct"></a>
913
1453
 
914
1454
  ```typescript
915
- public toString(): string
1455
+ import { ImageBuilderComponent } from '@cloudsnorkel/cdk-github-runners'
1456
+
1457
+ ImageBuilderComponent.isConstruct(x: any)
916
1458
  ```
917
1459
 
918
- Returns a string representation of this construct.
1460
+ Checks if `x` is a construct.
919
1461
 
920
- #### Static Functions <a name="Static Functions" id="Static Functions"></a>
1462
+ ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isConstruct.parameter.x"></a>
921
1463
 
922
- | **Name** | **Description** |
923
- | --- | --- |
924
- | <code><a href="#@cloudsnorkel/cdk-github-runners.GitHubRunners.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
1464
+ - *Type:* any
1465
+
1466
+ Any object.
925
1467
 
926
1468
  ---
927
1469
 
928
- ##### ~~`isConstruct`~~ <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.isConstruct"></a>
1470
+ ##### `isResource` <a name="isResource" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isResource"></a>
929
1471
 
930
1472
  ```typescript
931
- import { GitHubRunners } from '@cloudsnorkel/cdk-github-runners'
1473
+ import { ImageBuilderComponent } from '@cloudsnorkel/cdk-github-runners'
932
1474
 
933
- GitHubRunners.isConstruct(x: any)
1475
+ ImageBuilderComponent.isResource(construct: IConstruct)
934
1476
  ```
935
1477
 
936
- Checks if `x` is a construct.
937
-
938
- ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.isConstruct.parameter.x"></a>
1478
+ Check whether the given construct is a Resource.
939
1479
 
940
- - *Type:* any
1480
+ ###### `construct`<sup>Required</sup> <a name="construct" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isResource.parameter.construct"></a>
941
1481
 
942
- Any object.
1482
+ - *Type:* constructs.IConstruct
943
1483
 
944
1484
  ---
945
1485
 
@@ -947,13 +1487,15 @@ Any object.
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
 
@@ -1571,61 +2157,248 @@ Where to place the network interfaces within the VPC.
1571
2157
 
1572
2158
  ---
1573
2159
 
1574
- ##### `timeout`<sup>Optional</sup> <a name="timeout" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilderProps.property.timeout"></a>
2160
+ ##### `timeout`<sup>Optional</sup> <a name="timeout" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilderProps.property.timeout"></a>
2161
+
2162
+ ```typescript
2163
+ public readonly timeout: Duration;
2164
+ ```
2165
+
2166
+ - *Type:* aws-cdk-lib.Duration
2167
+ - *Default:* Duration.hours(1)
2168
+
2169
+ The number of minutes after which AWS CodeBuild stops the build if it's not complete.
2170
+
2171
+ For valid values, see the timeoutInMinutes field in the AWS
2172
+ CodeBuild User Guide.
2173
+
2174
+ ---
2175
+
2176
+ ##### `vpc`<sup>Optional</sup> <a name="vpc" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilderProps.property.vpc"></a>
2177
+
2178
+ ```typescript
2179
+ public readonly vpc: IVpc;
2180
+ ```
2181
+
2182
+ - *Type:* aws-cdk-lib.aws_ec2.IVpc
2183
+ - *Default:* no VPC
2184
+
2185
+ VPC to build the image in.
2186
+
2187
+ ---
2188
+
2189
+ ### CodeBuildRunnerProps <a name="CodeBuildRunnerProps" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps"></a>
2190
+
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>
1575
2359
 
1576
2360
  ```typescript
1577
- public readonly timeout: Duration;
2361
+ public readonly architecture: Architecture;
1578
2362
  ```
1579
2363
 
1580
- - *Type:* aws-cdk-lib.Duration
1581
- - *Default:* Duration.hours(1)
1582
-
1583
- The number of minutes after which AWS CodeBuild stops the build if it's not complete.
2364
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
2365
+ - *Default:* Architecture.X86_64
1584
2366
 
1585
- For valid values, see the timeoutInMinutes field in the AWS
1586
- CodeBuild User Guide.
2367
+ Image architecture.
1587
2368
 
1588
2369
  ---
1589
2370
 
1590
- ##### `vpc`<sup>Optional</sup> <a name="vpc" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilderProps.property.vpc"></a>
2371
+ ##### `instanceType`<sup>Optional</sup> <a name="instanceType" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps.property.instanceType"></a>
1591
2372
 
1592
2373
  ```typescript
1593
- public readonly vpc: IVpc;
2374
+ public readonly instanceType: InstanceType;
1594
2375
  ```
1595
2376
 
1596
- - *Type:* aws-cdk-lib.aws_ec2.IVpc
1597
- - *Default:* no VPC
2377
+ - *Type:* aws-cdk-lib.aws_ec2.InstanceType
2378
+ - *Default:* m5.large
1598
2379
 
1599
- VPC to launch the runners in.
2380
+ The instance type used to build the image.
1600
2381
 
1601
2382
  ---
1602
2383
 
1603
- ### CodeBuildRunnerProps <a name="CodeBuildRunnerProps" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps"></a>
1604
-
1605
- #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.Initializer"></a>
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,10 @@ 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.logGroup">logGroup</a></code> | <code>aws-cdk-lib.aws_logs.LogGroup</code> | Log group where image builds are logged. |
2276
3166
 
2277
3167
  ---
2278
3168
 
@@ -2288,20 +3178,6 @@ Architecture of the image.
2288
3178
 
2289
3179
  ---
2290
3180
 
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
3181
  ##### `imageRepository`<sup>Required</sup> <a name="imageRepository" id="@cloudsnorkel/cdk-github-runners.RunnerImage.property.imageRepository"></a>
2306
3182
 
2307
3183
  ```typescript
@@ -2338,6 +3214,18 @@ OS type of the image.
2338
3214
 
2339
3215
  ---
2340
3216
 
3217
+ ##### `logGroup`<sup>Optional</sup> <a name="logGroup" id="@cloudsnorkel/cdk-github-runners.RunnerImage.property.logGroup"></a>
3218
+
3219
+ ```typescript
3220
+ public readonly logGroup: LogGroup;
3221
+ ```
3222
+
3223
+ - *Type:* aws-cdk-lib.aws_logs.LogGroup
3224
+
3225
+ Log group where image builds are logged.
3226
+
3227
+ ---
3228
+
2341
3229
  ### RunnerProviderProps <a name="RunnerProviderProps" id="@cloudsnorkel/cdk-github-runners.RunnerProviderProps"></a>
2342
3230
 
2343
3231
  Common properties for all runner providers.
@@ -2841,7 +3729,7 @@ image OS.
2841
3729
 
2842
3730
  ### IImageBuilder <a name="IImageBuilder" id="@cloudsnorkel/cdk-github-runners.IImageBuilder"></a>
2843
3731
 
2844
- - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder">CodeBuildImageBuilder</a>, <a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder">IImageBuilder</a>
3732
+ - *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
3733
 
2846
3734
  Interface for constructs that build an image that can be used in {@link IRunnerProvider}.
2847
3735
 
@@ -2870,6 +3758,59 @@ ECR repository containing the image.
2870
3758
  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
3759
 
2872
3760
 
3761
+ ### IRunnerImageStatus <a name="IRunnerImageStatus" id="@cloudsnorkel/cdk-github-runners.IRunnerImageStatus"></a>
3762
+
3763
+ - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageStatus">IRunnerImageStatus</a>
3764
+
3765
+ Interface for runner image status used by status.json.
3766
+
3767
+
3768
+ #### Properties <a name="Properties" id="Properties"></a>
3769
+
3770
+ | **Name** | **Type** | **Description** |
3771
+ | --- | --- | --- |
3772
+ | <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. |
3773
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageRepository">imageRepository</a></code> | <code>string</code> | Image repository where runner image is pushed. |
3774
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageTag">imageTag</a></code> | <code>string</code> | Tag of image that should be used. |
3775
+
3776
+ ---
3777
+
3778
+ ##### `imageBuilderLogGroup`<sup>Optional</sup> <a name="imageBuilderLogGroup" id="@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageBuilderLogGroup"></a>
3779
+
3780
+ ```typescript
3781
+ public readonly imageBuilderLogGroup: string;
3782
+ ```
3783
+
3784
+ - *Type:* string
3785
+
3786
+ Log group name for the image builder where history of image builds can be analyzed.
3787
+
3788
+ ---
3789
+
3790
+ ##### `imageRepository`<sup>Optional</sup> <a name="imageRepository" id="@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageRepository"></a>
3791
+
3792
+ ```typescript
3793
+ public readonly imageRepository: string;
3794
+ ```
3795
+
3796
+ - *Type:* string
3797
+
3798
+ Image repository where runner image is pushed.
3799
+
3800
+ ---
3801
+
3802
+ ##### `imageTag`<sup>Optional</sup> <a name="imageTag" id="@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageTag"></a>
3803
+
3804
+ ```typescript
3805
+ public readonly imageTag: string;
3806
+ ```
3807
+
3808
+ - *Type:* string
3809
+
3810
+ Tag of image that should be used.
3811
+
3812
+ ---
3813
+
2873
3814
  ### IRunnerProvider <a name="IRunnerProvider" id="@cloudsnorkel/cdk-github-runners.IRunnerProvider"></a>
2874
3815
 
2875
3816
  - *Extends:* aws-cdk-lib.aws_ec2.IConnectable, aws-cdk-lib.aws_iam.IGrantable
@@ -2912,6 +3853,7 @@ specific build parameters.
2912
3853
  | --- | --- | --- |
2913
3854
  | <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
3855
  | <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. |
3856
+ | <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
3857
  | <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
3858
  | <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
3859
  | <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 +3884,20 @@ The principal to grant permissions to.
2942
3884
 
2943
3885
  ---
2944
3886
 
3887
+ ##### `image`<sup>Required</sup> <a name="image" id="@cloudsnorkel/cdk-github-runners.IRunnerProvider.property.image"></a>
3888
+
3889
+ ```typescript
3890
+ public readonly image: RunnerImage;
3891
+ ```
3892
+
3893
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImage">RunnerImage</a>
3894
+
3895
+ Image used to create a new resource compute.
3896
+
3897
+ Can be Docker image, AMI, or something else.
3898
+
3899
+ ---
3900
+
2945
3901
  ##### `label`<sup>Required</sup> <a name="label" id="@cloudsnorkel/cdk-github-runners.IRunnerProvider.property.label"></a>
2946
3902
 
2947
3903
  ```typescript