@cloudsnorkel/cdk-github-runners 0.5.8 → 0.6.1

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 (33) hide show
  1. package/.jsii +2847 -1100
  2. package/API.md +1290 -144
  3. package/README.md +11 -11
  4. package/lib/index.d.ts +6 -2
  5. package/lib/index.js +9 -2
  6. package/lib/lambdas/delete-ami/index.js +130 -0
  7. package/lib/lambdas/status/index.js +11 -1
  8. package/lib/lambdas/update-lambda/index.js +165 -107
  9. package/lib/providers/codebuild.d.ts +6 -4
  10. package/lib/providers/codebuild.js +20 -3
  11. package/lib/providers/common.d.ts +137 -9
  12. package/lib/providers/common.js +53 -4
  13. package/lib/providers/ec2.d.ts +106 -0
  14. package/lib/providers/ec2.js +256 -0
  15. package/lib/providers/fargate.d.ts +5 -3
  16. package/lib/providers/fargate.js +26 -5
  17. package/lib/providers/image-builders/ami.d.ts +131 -0
  18. package/lib/providers/image-builders/ami.js +274 -0
  19. package/lib/providers/image-builders/codebuild.js +3 -2
  20. package/lib/providers/image-builders/common.d.ts +196 -0
  21. package/lib/providers/image-builders/common.js +288 -0
  22. package/lib/providers/image-builders/container.d.ts +6 -100
  23. package/lib/providers/image-builders/container.js +41 -304
  24. package/lib/providers/image-builders/linux-components.d.ts +15 -0
  25. package/lib/providers/image-builders/linux-components.js +156 -0
  26. package/lib/providers/image-builders/static.js +3 -2
  27. package/lib/providers/image-builders/windows-components.d.ts +14 -0
  28. package/lib/providers/image-builders/windows-components.js +119 -0
  29. package/lib/providers/lambda.d.ts +5 -3
  30. package/lib/providers/lambda.js +20 -3
  31. package/lib/runner.js +8 -18
  32. package/lib/secrets.js +1 -1
  33. package/package.json +9 -9
package/API.md CHANGED
@@ -272,7 +272,7 @@ public readonly props: CodeBuildImageBuilderProps;
272
272
 
273
273
  - *Implements:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider">IRunnerProvider</a>
274
274
 
275
- GitHub Actions runner provider using CodeBuild to execute the actions.
275
+ GitHub Actions runner provider using CodeBuild to execute jobs.
276
276
 
277
277
  Creates a project that gets started for each job.
278
278
 
@@ -318,6 +318,8 @@ new CodeBuildRunner(scope: Construct, id: string, props: CodeBuildRunnerProps)
318
318
  | --- | --- |
319
319
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner.toString">toString</a></code> | Returns a string representation of this construct. |
320
320
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner.getStepFunctionTask">getStepFunctionTask</a></code> | Generate step function task(s) to start a new runner. |
321
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner.grantStateMachine">grantStateMachine</a></code> | An optional method that modifies the role of the state machine after all the tasks have been generated. |
322
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner.status">status</a></code> | Return status of the runner provider to be used in the main status function. |
321
323
 
322
324
  ---
323
325
 
@@ -347,6 +349,39 @@ workflow job details.
347
349
 
348
350
  ---
349
351
 
352
+ ##### `grantStateMachine` <a name="grantStateMachine" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.grantStateMachine"></a>
353
+
354
+ ```typescript
355
+ public grantStateMachine(_: IGrantable): void
356
+ ```
357
+
358
+ An optional method that modifies the role of the state machine after all the tasks have been generated.
359
+
360
+ This can be used to add additional policy
361
+ statements to the state machine role that are not automatically added by the task returned from {@link getStepFunctionTask}.
362
+
363
+ ###### `_`<sup>Required</sup> <a name="_" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.grantStateMachine.parameter._"></a>
364
+
365
+ - *Type:* aws-cdk-lib.aws_iam.IGrantable
366
+
367
+ ---
368
+
369
+ ##### `status` <a name="status" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.status"></a>
370
+
371
+ ```typescript
372
+ public status(statusFunctionRole: IGrantable): IRunnerProviderStatus
373
+ ```
374
+
375
+ Return status of the runner provider to be used in the main status function.
376
+
377
+ Also gives the status function any needed permissions to query the Docker image or AMI.
378
+
379
+ ###### `statusFunctionRole`<sup>Required</sup> <a name="statusFunctionRole" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.status.parameter.statusFunctionRole"></a>
380
+
381
+ - *Type:* aws-cdk-lib.aws_iam.IGrantable
382
+
383
+ ---
384
+
350
385
  #### Static Functions <a name="Static Functions" id="Static Functions"></a>
351
386
 
352
387
  | **Name** | **Description** |
@@ -380,7 +415,7 @@ Any object.
380
415
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
381
416
  | <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
417
  | <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. |
418
+ | <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 loaded with GitHub Actions Runner and its prerequisites. |
384
419
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner.property.labels">labels</a></code> | <code>string[]</code> | Labels associated with this provider. |
385
420
  | <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. |
386
421
  | <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. |
@@ -432,7 +467,9 @@ public readonly image: RunnerImage;
432
467
 
433
468
  - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImage">RunnerImage</a>
434
469
 
435
- Docker image in CodeBuild project.
470
+ Docker image loaded with GitHub Actions Runner and its prerequisites.
471
+
472
+ The image is built by an image builder and is specific to CodeBuild.
436
473
 
437
474
  ---
438
475
 
@@ -541,7 +578,7 @@ Available build arguments that can be set in the image builder:
541
578
 
542
579
  - *Implements:* <a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder">IImageBuilder</a>
543
580
 
544
- An image builder that uses Image Builder to build Docker images pre-baked with all the GitHub Actions runner requirements.
581
+ An image builder that uses AWS Image Builder to build Docker images pre-baked with all the GitHub Actions runner requirements.
545
582
 
546
583
  Builders can be used with runner providers.
547
584
 
@@ -559,7 +596,7 @@ const builder = new ContainerImageBuilder(this, 'Builder', {
559
596
  rebuildInterval: Duration.days(14),
560
597
  });
561
598
  new CodeBuildRunner(this, 'CodeBuild provider', {
562
- label: 'windows-codebuild',
599
+ label: 'custom-codebuild',
563
600
  imageBuilder: builder,
564
601
  });
565
602
  ```
@@ -705,18 +742,7 @@ Any object.
705
742
  | **Name** | **Type** | **Description** |
706
743
  | --- | --- | --- |
707
744
  | <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
745
  | <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
746
 
721
747
  ---
722
748
 
@@ -732,123 +758,237 @@ The tree node.
732
758
 
733
759
  ---
734
760
 
735
- ##### `architecture`<sup>Required</sup> <a name="architecture" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.architecture"></a>
761
+ ##### `repository`<sup>Required</sup> <a name="repository" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.repository"></a>
736
762
 
737
763
  ```typescript
738
- public readonly architecture: Architecture;
764
+ public readonly repository: IRepository;
739
765
  ```
740
766
 
741
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
767
+ - *Type:* aws-cdk-lib.aws_ecr.IRepository
742
768
 
743
769
  ---
744
770
 
745
- ##### `description`<sup>Required</sup> <a name="description" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.description"></a>
771
+
772
+ ### Ec2Runner <a name="Ec2Runner" id="@cloudsnorkel/cdk-github-runners.Ec2Runner"></a>
773
+
774
+ - *Implements:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider">IRunnerProvider</a>
775
+
776
+ GitHub Actions runner provider using EC2 to execute jobs.
777
+
778
+ This construct is not meant to be used by itself. It should be passed in the providers property for GitHubRunners.
779
+
780
+ #### Initializers <a name="Initializers" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.Initializer"></a>
746
781
 
747
782
  ```typescript
748
- public readonly description: string;
783
+ import { Ec2Runner } from '@cloudsnorkel/cdk-github-runners'
784
+
785
+ new Ec2Runner(scope: Construct, id: string, props: Ec2RunnerProps)
749
786
  ```
750
787
 
788
+ | **Name** | **Type** | **Description** |
789
+ | --- | --- | --- |
790
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.Initializer.parameter.scope">scope</a></code> | <code>constructs.Construct</code> | *No description.* |
791
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.Initializer.parameter.id">id</a></code> | <code>string</code> | *No description.* |
792
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.Initializer.parameter.props">props</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps">Ec2RunnerProps</a></code> | *No description.* |
793
+
794
+ ---
795
+
796
+ ##### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.Initializer.parameter.scope"></a>
797
+
798
+ - *Type:* constructs.Construct
799
+
800
+ ---
801
+
802
+ ##### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.Initializer.parameter.id"></a>
803
+
751
804
  - *Type:* string
752
805
 
753
806
  ---
754
807
 
755
- ##### `instanceTypes`<sup>Required</sup> <a name="instanceTypes" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.instanceTypes"></a>
808
+ ##### `props`<sup>Required</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.Initializer.parameter.props"></a>
809
+
810
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps">Ec2RunnerProps</a>
811
+
812
+ ---
813
+
814
+ #### Methods <a name="Methods" id="Methods"></a>
815
+
816
+ | **Name** | **Description** |
817
+ | --- | --- |
818
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.toString">toString</a></code> | Returns a string representation of this construct. |
819
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.getStepFunctionTask">getStepFunctionTask</a></code> | Generate step function task(s) to start a new runner. |
820
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.grantStateMachine">grantStateMachine</a></code> | An optional method that modifies the role of the state machine after all the tasks have been generated. |
821
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.status">status</a></code> | Return status of the runner provider to be used in the main status function. |
822
+
823
+ ---
824
+
825
+ ##### `toString` <a name="toString" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.toString"></a>
756
826
 
757
827
  ```typescript
758
- public readonly instanceTypes: string[];
828
+ public toString(): string
759
829
  ```
760
830
 
761
- - *Type:* string[]
831
+ Returns a string representation of this construct.
832
+
833
+ ##### `getStepFunctionTask` <a name="getStepFunctionTask" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.getStepFunctionTask"></a>
834
+
835
+ ```typescript
836
+ public getStepFunctionTask(parameters: RunnerRuntimeParameters): IChainable
837
+ ```
838
+
839
+ Generate step function task(s) to start a new runner.
840
+
841
+ Called by GithubRunners and shouldn't be called manually.
842
+
843
+ ###### `parameters`<sup>Required</sup> <a name="parameters" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.getStepFunctionTask.parameter.parameters"></a>
844
+
845
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters">RunnerRuntimeParameters</a>
846
+
847
+ workflow job details.
762
848
 
763
849
  ---
764
850
 
765
- ##### `logRemovalPolicy`<sup>Required</sup> <a name="logRemovalPolicy" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.logRemovalPolicy"></a>
851
+ ##### `grantStateMachine` <a name="grantStateMachine" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.grantStateMachine"></a>
766
852
 
767
853
  ```typescript
768
- public readonly logRemovalPolicy: RemovalPolicy;
854
+ public grantStateMachine(stateMachineRole: IGrantable): void
769
855
  ```
770
856
 
771
- - *Type:* aws-cdk-lib.RemovalPolicy
857
+ An optional method that modifies the role of the state machine after all the tasks have been generated.
858
+
859
+ This can be used to add additional policy
860
+ statements to the state machine role that are not automatically added by the task returned from {@link getStepFunctionTask}.
861
+
862
+ ###### `stateMachineRole`<sup>Required</sup> <a name="stateMachineRole" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.grantStateMachine.parameter.stateMachineRole"></a>
863
+
864
+ - *Type:* aws-cdk-lib.aws_iam.IGrantable
772
865
 
773
866
  ---
774
867
 
775
- ##### `logRetention`<sup>Required</sup> <a name="logRetention" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.logRetention"></a>
868
+ ##### `status` <a name="status" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.status"></a>
776
869
 
777
870
  ```typescript
778
- public readonly logRetention: RetentionDays;
871
+ public status(statusFunctionRole: IGrantable): IRunnerProviderStatus
779
872
  ```
780
873
 
781
- - *Type:* aws-cdk-lib.aws_logs.RetentionDays
874
+ Return status of the runner provider to be used in the main status function.
875
+
876
+ Also gives the status function any needed permissions to query the Docker image or AMI.
877
+
878
+ ###### `statusFunctionRole`<sup>Required</sup> <a name="statusFunctionRole" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.status.parameter.statusFunctionRole"></a>
879
+
880
+ - *Type:* aws-cdk-lib.aws_iam.IGrantable
782
881
 
783
882
  ---
784
883
 
785
- ##### `os`<sup>Required</sup> <a name="os" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.os"></a>
884
+ #### Static Functions <a name="Static Functions" id="Static Functions"></a>
885
+
886
+ | **Name** | **Description** |
887
+ | --- | --- |
888
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
889
+
890
+ ---
891
+
892
+ ##### ~~`isConstruct`~~ <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.isConstruct"></a>
786
893
 
787
894
  ```typescript
788
- public readonly os: Os;
895
+ import { Ec2Runner } from '@cloudsnorkel/cdk-github-runners'
896
+
897
+ Ec2Runner.isConstruct(x: any)
789
898
  ```
790
899
 
791
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
900
+ Checks if `x` is a construct.
901
+
902
+ ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.isConstruct.parameter.x"></a>
903
+
904
+ - *Type:* any
905
+
906
+ Any object.
792
907
 
793
908
  ---
794
909
 
795
- ##### `platform`<sup>Required</sup> <a name="platform" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.platform"></a>
910
+ #### Properties <a name="Properties" id="Properties"></a>
911
+
912
+ | **Name** | **Type** | **Description** |
913
+ | --- | --- | --- |
914
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
915
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.property.connections">connections</a></code> | <code>aws-cdk-lib.aws_ec2.Connections</code> | The network connections associated with this resource. |
916
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.property.grantPrincipal">grantPrincipal</a></code> | <code>aws-cdk-lib.aws_iam.IPrincipal</code> | Grant principal used to add permissions to the runner role. |
917
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.property.labels">labels</a></code> | <code>string[]</code> | Labels associated with this provider. |
918
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | Security group attached to launched instances. |
919
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.property.subnet">subnet</a></code> | <code>aws-cdk-lib.aws_ec2.ISubnet</code> | VPC subnet used for hosting launched instances. |
920
+
921
+ ---
922
+
923
+ ##### `node`<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.property.node"></a>
796
924
 
797
925
  ```typescript
798
- public readonly platform: string;
926
+ public readonly node: Node;
799
927
  ```
800
928
 
801
- - *Type:* string
929
+ - *Type:* constructs.Node
930
+
931
+ The tree node.
802
932
 
803
933
  ---
804
934
 
805
- ##### `rebuildInterval`<sup>Required</sup> <a name="rebuildInterval" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.rebuildInterval"></a>
935
+ ##### `connections`<sup>Required</sup> <a name="connections" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.property.connections"></a>
806
936
 
807
937
  ```typescript
808
- public readonly rebuildInterval: Duration;
938
+ public readonly connections: Connections;
809
939
  ```
810
940
 
811
- - *Type:* aws-cdk-lib.Duration
941
+ - *Type:* aws-cdk-lib.aws_ec2.Connections
942
+
943
+ The network connections associated with this resource.
812
944
 
813
945
  ---
814
946
 
815
- ##### `repository`<sup>Required</sup> <a name="repository" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.repository"></a>
947
+ ##### `grantPrincipal`<sup>Required</sup> <a name="grantPrincipal" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.property.grantPrincipal"></a>
816
948
 
817
949
  ```typescript
818
- public readonly repository: IRepository;
950
+ public readonly grantPrincipal: IPrincipal;
819
951
  ```
820
952
 
821
- - *Type:* aws-cdk-lib.aws_ecr.IRepository
953
+ - *Type:* aws-cdk-lib.aws_iam.IPrincipal
954
+
955
+ Grant principal used to add permissions to the runner role.
822
956
 
823
957
  ---
824
958
 
825
- ##### `runnerVersion`<sup>Required</sup> <a name="runnerVersion" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.runnerVersion"></a>
959
+ ##### `labels`<sup>Required</sup> <a name="labels" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.property.labels"></a>
826
960
 
827
961
  ```typescript
828
- public readonly runnerVersion: RunnerVersion;
962
+ public readonly labels: string[];
829
963
  ```
830
964
 
831
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a>
965
+ - *Type:* string[]
966
+
967
+ Labels associated with this provider.
832
968
 
833
969
  ---
834
970
 
835
- ##### `securityGroupIds`<sup>Optional</sup> <a name="securityGroupIds" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.securityGroupIds"></a>
971
+ ##### `securityGroup`<sup>Optional</sup> <a name="securityGroup" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.property.securityGroup"></a>
836
972
 
837
973
  ```typescript
838
- public readonly securityGroupIds: string[];
974
+ public readonly securityGroup: ISecurityGroup;
839
975
  ```
840
976
 
841
- - *Type:* string[]
977
+ - *Type:* aws-cdk-lib.aws_ec2.ISecurityGroup
978
+
979
+ Security group attached to launched instances.
842
980
 
843
981
  ---
844
982
 
845
- ##### `subnetId`<sup>Optional</sup> <a name="subnetId" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.property.subnetId"></a>
983
+ ##### `subnet`<sup>Optional</sup> <a name="subnet" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.property.subnet"></a>
846
984
 
847
985
  ```typescript
848
- public readonly subnetId: string;
986
+ public readonly subnet: ISubnet;
849
987
  ```
850
988
 
851
- - *Type:* string
989
+ - *Type:* aws-cdk-lib.aws_ec2.ISubnet
990
+
991
+ VPC subnet used for hosting launched instances.
852
992
 
853
993
  ---
854
994
 
@@ -857,7 +997,7 @@ public readonly subnetId: string;
857
997
 
858
998
  - *Implements:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider">IRunnerProvider</a>
859
999
 
860
- GitHub Actions runner provider using Fargate to execute the actions.
1000
+ GitHub Actions runner provider using Fargate to execute jobs.
861
1001
 
862
1002
  Creates a task definition with a single container that gets started for each job.
863
1003
 
@@ -903,6 +1043,8 @@ new FargateRunner(scope: Construct, id: string, props: FargateRunnerProps)
903
1043
  | --- | --- |
904
1044
  | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunner.toString">toString</a></code> | Returns a string representation of this construct. |
905
1045
  | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunner.getStepFunctionTask">getStepFunctionTask</a></code> | Generate step function task(s) to start a new runner. |
1046
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunner.grantStateMachine">grantStateMachine</a></code> | An optional method that modifies the role of the state machine after all the tasks have been generated. |
1047
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunner.status">status</a></code> | Return status of the runner provider to be used in the main status function. |
906
1048
 
907
1049
  ---
908
1050
 
@@ -932,6 +1074,39 @@ workflow job details.
932
1074
 
933
1075
  ---
934
1076
 
1077
+ ##### `grantStateMachine` <a name="grantStateMachine" id="@cloudsnorkel/cdk-github-runners.FargateRunner.grantStateMachine"></a>
1078
+
1079
+ ```typescript
1080
+ public grantStateMachine(_: IGrantable): void
1081
+ ```
1082
+
1083
+ An optional method that modifies the role of the state machine after all the tasks have been generated.
1084
+
1085
+ This can be used to add additional policy
1086
+ statements to the state machine role that are not automatically added by the task returned from {@link getStepFunctionTask}.
1087
+
1088
+ ###### `_`<sup>Required</sup> <a name="_" id="@cloudsnorkel/cdk-github-runners.FargateRunner.grantStateMachine.parameter._"></a>
1089
+
1090
+ - *Type:* aws-cdk-lib.aws_iam.IGrantable
1091
+
1092
+ ---
1093
+
1094
+ ##### `status` <a name="status" id="@cloudsnorkel/cdk-github-runners.FargateRunner.status"></a>
1095
+
1096
+ ```typescript
1097
+ public status(statusFunctionRole: IGrantable): IRunnerProviderStatus
1098
+ ```
1099
+
1100
+ Return status of the runner provider to be used in the main status function.
1101
+
1102
+ Also gives the status function any needed permissions to query the Docker image or AMI.
1103
+
1104
+ ###### `statusFunctionRole`<sup>Required</sup> <a name="statusFunctionRole" id="@cloudsnorkel/cdk-github-runners.FargateRunner.status.parameter.statusFunctionRole"></a>
1105
+
1106
+ - *Type:* aws-cdk-lib.aws_iam.IGrantable
1107
+
1108
+ ---
1109
+
935
1110
  #### Static Functions <a name="Static Functions" id="Static Functions"></a>
936
1111
 
937
1112
  | **Name** | **Description** |
@@ -968,7 +1143,7 @@ Any object.
968
1143
  | <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. |
969
1144
  | <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. |
970
1145
  | <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. |
1146
+ | <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 loaded with GitHub Actions Runner and its prerequisites. |
972
1147
  | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunner.property.labels">labels</a></code> | <code>string[]</code> | Labels associated with this provider. |
973
1148
  | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunner.property.spot">spot</a></code> | <code>boolean</code> | Use spot pricing for Fargate tasks. |
974
1149
  | <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. |
@@ -1058,7 +1233,9 @@ public readonly image: RunnerImage;
1058
1233
 
1059
1234
  - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImage">RunnerImage</a>
1060
1235
 
1061
- Docker image used to start a new Fargate task.
1236
+ Docker image loaded with GitHub Actions Runner and its prerequisites.
1237
+
1238
+ The image is built by an image builder and is specific to Fargate tasks.
1062
1239
 
1063
1240
  ---
1064
1241
 
@@ -1458,6 +1635,7 @@ Grants read permissions to the principal on the assets buckets.
1458
1635
  | **Name** | **Description** |
1459
1636
  | --- | --- |
1460
1637
  | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
1638
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isOwnedResource">isOwnedResource</a></code> | Returns true if the construct was created by CDK, and false otherwise. |
1461
1639
  | <code><a href="#@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isResource">isResource</a></code> | Check whether the given construct is a Resource. |
1462
1640
 
1463
1641
  ---
@@ -1480,6 +1658,22 @@ Any object.
1480
1658
 
1481
1659
  ---
1482
1660
 
1661
+ ##### `isOwnedResource` <a name="isOwnedResource" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isOwnedResource"></a>
1662
+
1663
+ ```typescript
1664
+ import { ImageBuilderComponent } from '@cloudsnorkel/cdk-github-runners'
1665
+
1666
+ ImageBuilderComponent.isOwnedResource(construct: IConstruct)
1667
+ ```
1668
+
1669
+ Returns true if the construct was created by CDK, and false otherwise.
1670
+
1671
+ ###### `construct`<sup>Required</sup> <a name="construct" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isOwnedResource.parameter.construct"></a>
1672
+
1673
+ - *Type:* constructs.IConstruct
1674
+
1675
+ ---
1676
+
1483
1677
  ##### `isResource` <a name="isResource" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isResource"></a>
1484
1678
 
1485
1679
  ```typescript
@@ -1580,7 +1774,7 @@ Supported platform for the component.
1580
1774
 
1581
1775
  - *Implements:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider">IRunnerProvider</a>
1582
1776
 
1583
- GitHub Actions runner provider using Lambda to execute the actions.
1777
+ GitHub Actions runner provider using Lambda to execute jobs.
1584
1778
 
1585
1779
  Creates a Docker-based function that gets executed for each job.
1586
1780
 
@@ -1626,6 +1820,8 @@ new LambdaRunner(scope: Construct, id: string, props: LambdaRunnerProps)
1626
1820
  | --- | --- |
1627
1821
  | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunner.toString">toString</a></code> | Returns a string representation of this construct. |
1628
1822
  | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunner.getStepFunctionTask">getStepFunctionTask</a></code> | Generate step function task(s) to start a new runner. |
1823
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunner.grantStateMachine">grantStateMachine</a></code> | An optional method that modifies the role of the state machine after all the tasks have been generated. |
1824
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunner.status">status</a></code> | Return status of the runner provider to be used in the main status function. |
1629
1825
 
1630
1826
  ---
1631
1827
 
@@ -1655,6 +1851,39 @@ workflow job details.
1655
1851
 
1656
1852
  ---
1657
1853
 
1854
+ ##### `grantStateMachine` <a name="grantStateMachine" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.grantStateMachine"></a>
1855
+
1856
+ ```typescript
1857
+ public grantStateMachine(_: IGrantable): void
1858
+ ```
1859
+
1860
+ An optional method that modifies the role of the state machine after all the tasks have been generated.
1861
+
1862
+ This can be used to add additional policy
1863
+ statements to the state machine role that are not automatically added by the task returned from {@link getStepFunctionTask}.
1864
+
1865
+ ###### `_`<sup>Required</sup> <a name="_" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.grantStateMachine.parameter._"></a>
1866
+
1867
+ - *Type:* aws-cdk-lib.aws_iam.IGrantable
1868
+
1869
+ ---
1870
+
1871
+ ##### `status` <a name="status" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.status"></a>
1872
+
1873
+ ```typescript
1874
+ public status(statusFunctionRole: IGrantable): IRunnerProviderStatus
1875
+ ```
1876
+
1877
+ Return status of the runner provider to be used in the main status function.
1878
+
1879
+ Also gives the status function any needed permissions to query the Docker image or AMI.
1880
+
1881
+ ###### `statusFunctionRole`<sup>Required</sup> <a name="statusFunctionRole" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.status.parameter.statusFunctionRole"></a>
1882
+
1883
+ - *Type:* aws-cdk-lib.aws_iam.IGrantable
1884
+
1885
+ ---
1886
+
1658
1887
  #### Static Functions <a name="Static Functions" id="Static Functions"></a>
1659
1888
 
1660
1889
  | **Name** | **Description** |
@@ -1689,7 +1918,7 @@ Any object.
1689
1918
  | <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. |
1690
1919
  | <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. |
1691
1920
  | <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. |
1692
- | <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. |
1921
+ | <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 loaded with GitHub Actions Runner and its prerequisites. |
1693
1922
  | <code><a href="#@cloudsnorkel/cdk-github-runners.LambdaRunner.property.labels">labels</a></code> | <code>string[]</code> | Labels associated with this provider. |
1694
1923
  | <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. |
1695
1924
  | <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. |
@@ -1752,7 +1981,9 @@ public readonly image: RunnerImage;
1752
1981
 
1753
1982
  - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImage">RunnerImage</a>
1754
1983
 
1755
- Docker image used to start Lambda function.
1984
+ Docker image loaded with GitHub Actions Runner and its prerequisites.
1985
+
1986
+ The image is built by an image builder and is specific to Lambda.
1756
1987
 
1757
1988
  ---
1758
1989
 
@@ -2215,7 +2446,7 @@ const codeBuildRunnerProps: CodeBuildRunnerProps = { ... }
2215
2446
  | --- | --- | --- |
2216
2447
  | <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. |
2217
2448
  | <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. |
2218
- | <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. |
2449
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.imageBuilder">imageBuilder</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder">IImageBuilder</a></code> | Image builder for CodeBuild image with GitHub runner pre-configured. |
2219
2450
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.label">label</a></code> | <code>string</code> | GitHub Actions label used for this provider. |
2220
2451
  | <code><a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProps.property.labels">labels</a></code> | <code>string[]</code> | GitHub Actions labels used for this provider. |
2221
2452
  | <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. |
@@ -2266,7 +2497,7 @@ public readonly imageBuilder: IImageBuilder;
2266
2497
  - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder">IImageBuilder</a>
2267
2498
  - *Default:* image builder with `CodeBuildRunner.LINUX_X64_DOCKERFILE_PATH` as Dockerfile
2268
2499
 
2269
- Provider running an image to run inside CodeBuild with GitHub runner pre-configured.
2500
+ Image builder for CodeBuild image with GitHub runner pre-configured.
2270
2501
 
2271
2502
  A user named `runner` is expected to exist with access to Docker-in-Docker.
2272
2503
 
@@ -2546,39 +2777,35 @@ VPC to launch the runners in.
2546
2777
 
2547
2778
  ---
2548
2779
 
2549
- ### FargateRunnerProps <a name="FargateRunnerProps" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProps"></a>
2780
+ ### Ec2RunnerProps <a name="Ec2RunnerProps" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps"></a>
2550
2781
 
2551
- Properties for FargateRunner.
2782
+ Properties for {@link Ec2Runner} construct.
2552
2783
 
2553
- #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProps.Initializer"></a>
2784
+ #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.Initializer"></a>
2554
2785
 
2555
2786
  ```typescript
2556
- import { FargateRunnerProps } from '@cloudsnorkel/cdk-github-runners'
2787
+ import { Ec2RunnerProps } from '@cloudsnorkel/cdk-github-runners'
2557
2788
 
2558
- const fargateRunnerProps: FargateRunnerProps = { ... }
2789
+ const ec2RunnerProps: Ec2RunnerProps = { ... }
2559
2790
  ```
2560
2791
 
2561
2792
  #### Properties <a name="Properties" id="Properties"></a>
2562
2793
 
2563
2794
  | **Name** | **Type** | **Description** |
2564
2795
  | --- | --- | --- |
2565
- | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.logRetention">logRetention</a></code> | <code>aws-cdk-lib.aws_logs.RetentionDays</code> | The number of days log events are kept in CloudWatch Logs. |
2566
- | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.assignPublicIp">assignPublicIp</a></code> | <code>boolean</code> | Assign public IP to the runner task. |
2567
- | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.cluster">cluster</a></code> | <code>aws-cdk-lib.aws_ecs.Cluster</code> | Existing Fargate cluster to use. |
2568
- | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.cpu">cpu</a></code> | <code>number</code> | The number of cpu units used by the task. |
2569
- | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.ephemeralStorageGiB">ephemeralStorageGiB</a></code> | <code>number</code> | The amount (in GiB) of ephemeral storage to be allocated to the task. |
2570
- | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.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. |
2571
- | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.label">label</a></code> | <code>string</code> | GitHub Actions label used for this provider. |
2572
- | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.labels">labels</a></code> | <code>string[]</code> | GitHub Actions labels used for this provider. |
2573
- | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.memoryLimitMiB">memoryLimitMiB</a></code> | <code>number</code> | The amount (in MiB) of memory used by the task. |
2574
- | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | Security Group to assign to the task. |
2575
- | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.spot">spot</a></code> | <code>boolean</code> | Use Fargate spot capacity provider to save money. |
2576
- | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.subnetSelection">subnetSelection</a></code> | <code>aws-cdk-lib.aws_ec2.SubnetSelection</code> | Subnets to run the runners in. |
2577
- | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.vpc">vpc</a></code> | <code>aws-cdk-lib.aws_ec2.IVpc</code> | VPC to launch the runners in. |
2796
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.logRetention">logRetention</a></code> | <code>aws-cdk-lib.aws_logs.RetentionDays</code> | The number of days log events are kept in CloudWatch Logs. |
2797
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.amiBuilder">amiBuilder</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.IAmiBuilder">IAmiBuilder</a></code> | AMI builder that creates AMIs with GitHub runner pre-configured. |
2798
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.instanceType">instanceType</a></code> | <code>aws-cdk-lib.aws_ec2.InstanceType</code> | Instance type for launched runner instances. |
2799
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.labels">labels</a></code> | <code>string[]</code> | GitHub Actions labels used for this provider. |
2800
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | Security Group to assign to launched runner instances. |
2801
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.spot">spot</a></code> | <code>boolean</code> | Use spot instances to save money. |
2802
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.spotMaxPrice">spotMaxPrice</a></code> | <code>string</code> | Set a maximum price for spot instances. |
2803
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.storageSize">storageSize</a></code> | <code>aws-cdk-lib.Size</code> | Size of volume available for launched runner instances. |
2804
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.subnet">subnet</a></code> | <code>aws-cdk-lib.aws_ec2.ISubnet</code> | Subnet where the runner instances will be launched. |
2578
2805
 
2579
2806
  ---
2580
2807
 
2581
- ##### `logRetention`<sup>Optional</sup> <a name="logRetention" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.logRetention"></a>
2808
+ ##### `logRetention`<sup>Optional</sup> <a name="logRetention" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.logRetention"></a>
2582
2809
 
2583
2810
  ```typescript
2584
2811
  public readonly logRetention: RetentionDays;
@@ -2595,56 +2822,219 @@ remove the retention policy, set the value to `INFINITE`.
2595
2822
 
2596
2823
  ---
2597
2824
 
2598
- ##### `assignPublicIp`<sup>Optional</sup> <a name="assignPublicIp" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.assignPublicIp"></a>
2825
+ ##### `amiBuilder`<sup>Optional</sup> <a name="amiBuilder" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.amiBuilder"></a>
2599
2826
 
2600
2827
  ```typescript
2601
- public readonly assignPublicIp: boolean;
2828
+ public readonly amiBuilder: IAmiBuilder;
2602
2829
  ```
2603
2830
 
2604
- - *Type:* boolean
2605
- - *Default:* true
2831
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IAmiBuilder">IAmiBuilder</a>
2832
+ - *Default:* AMI builder for Ubuntu Linux
2606
2833
 
2607
- Assign public IP to the runner task.
2834
+ AMI builder that creates AMIs with GitHub runner pre-configured.
2608
2835
 
2609
- Make sure the task will have access to GitHub. A public IP might be required unless you have NAT gateway.
2836
+ On Linux, a user named `runner` is expected to exist with access to Docker.
2610
2837
 
2611
2838
  ---
2612
2839
 
2613
- ##### `cluster`<sup>Optional</sup> <a name="cluster" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.cluster"></a>
2840
+ ##### `instanceType`<sup>Optional</sup> <a name="instanceType" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.instanceType"></a>
2614
2841
 
2615
2842
  ```typescript
2616
- public readonly cluster: Cluster;
2843
+ public readonly instanceType: InstanceType;
2617
2844
  ```
2618
2845
 
2619
- - *Type:* aws-cdk-lib.aws_ecs.Cluster
2620
- - *Default:* a new cluster
2846
+ - *Type:* aws-cdk-lib.aws_ec2.InstanceType
2847
+ - *Default:* m5.large
2621
2848
 
2622
- Existing Fargate cluster to use.
2849
+ Instance type for launched runner instances.
2623
2850
 
2624
2851
  ---
2625
2852
 
2626
- ##### `cpu`<sup>Optional</sup> <a name="cpu" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.cpu"></a>
2853
+ ##### `labels`<sup>Optional</sup> <a name="labels" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.labels"></a>
2627
2854
 
2628
2855
  ```typescript
2629
- public readonly cpu: number;
2856
+ public readonly labels: string[];
2630
2857
  ```
2631
2858
 
2632
- - *Type:* number
2633
- - *Default:* 1024
2859
+ - *Type:* string[]
2860
+ - *Default:* ['ec2']
2634
2861
 
2635
- The number of cpu units used by the task.
2862
+ GitHub Actions labels used for this provider.
2636
2863
 
2637
- For tasks using the Fargate launch type,
2638
- this field is required and you must use one of the following values,
2639
- which determines your range of valid values for the memory parameter:
2864
+ These labels are used to identify which provider should spawn a new on-demand runner. Every job sends a webhook with the labels it's looking for
2865
+ based on runs-on. We match the labels from the webhook with the labels specified here. If all the labels specified here are present in the
2866
+ job's labels, this provider will be chosen and spawn a new runner.
2640
2867
 
2641
- 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB)
2868
+ ---
2642
2869
 
2643
- 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB)
2870
+ ##### `securityGroup`<sup>Optional</sup> <a name="securityGroup" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.securityGroup"></a>
2644
2871
 
2645
- 1024 (1 vCPU) - Available memory values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB)
2872
+ ```typescript
2873
+ public readonly securityGroup: ISecurityGroup;
2874
+ ```
2646
2875
 
2647
- 2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB)
2876
+ - *Type:* aws-cdk-lib.aws_ec2.ISecurityGroup
2877
+ - *Default:* account's default security group
2878
+
2879
+ Security Group to assign to launched runner instances.
2880
+
2881
+ ---
2882
+
2883
+ ##### `spot`<sup>Optional</sup> <a name="spot" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.spot"></a>
2884
+
2885
+ ```typescript
2886
+ public readonly spot: boolean;
2887
+ ```
2888
+
2889
+ - *Type:* boolean
2890
+ - *Default:* false
2891
+
2892
+ Use spot instances to save money.
2893
+
2894
+ Spot instances are cheaper but not always available and can be stopped prematurely.
2895
+
2896
+ ---
2897
+
2898
+ ##### `spotMaxPrice`<sup>Optional</sup> <a name="spotMaxPrice" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.spotMaxPrice"></a>
2899
+
2900
+ ```typescript
2901
+ public readonly spotMaxPrice: string;
2902
+ ```
2903
+
2904
+ - *Type:* string
2905
+ - *Default:* no max price (you will pay current spot price)
2906
+
2907
+ Set a maximum price for spot instances.
2908
+
2909
+ ---
2910
+
2911
+ ##### `storageSize`<sup>Optional</sup> <a name="storageSize" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.storageSize"></a>
2912
+
2913
+ ```typescript
2914
+ public readonly storageSize: Size;
2915
+ ```
2916
+
2917
+ - *Type:* aws-cdk-lib.Size
2918
+ - *Default:* 30GB
2919
+
2920
+ Size of volume available for launched runner instances.
2921
+
2922
+ This modifies the boot volume size and doesn't add any additional volumes.
2923
+
2924
+ ---
2925
+
2926
+ ##### `subnet`<sup>Optional</sup> <a name="subnet" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.subnet"></a>
2927
+
2928
+ ```typescript
2929
+ public readonly subnet: ISubnet;
2930
+ ```
2931
+
2932
+ - *Type:* aws-cdk-lib.aws_ec2.ISubnet
2933
+ - *Default:* default subnet of account's default VPC
2934
+
2935
+ Subnet where the runner instances will be launched.
2936
+
2937
+ ---
2938
+
2939
+ ### FargateRunnerProps <a name="FargateRunnerProps" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProps"></a>
2940
+
2941
+ Properties for FargateRunner.
2942
+
2943
+ #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProps.Initializer"></a>
2944
+
2945
+ ```typescript
2946
+ import { FargateRunnerProps } from '@cloudsnorkel/cdk-github-runners'
2947
+
2948
+ const fargateRunnerProps: FargateRunnerProps = { ... }
2949
+ ```
2950
+
2951
+ #### Properties <a name="Properties" id="Properties"></a>
2952
+
2953
+ | **Name** | **Type** | **Description** |
2954
+ | --- | --- | --- |
2955
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.logRetention">logRetention</a></code> | <code>aws-cdk-lib.aws_logs.RetentionDays</code> | The number of days log events are kept in CloudWatch Logs. |
2956
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.assignPublicIp">assignPublicIp</a></code> | <code>boolean</code> | Assign public IP to the runner task. |
2957
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.cluster">cluster</a></code> | <code>aws-cdk-lib.aws_ecs.Cluster</code> | Existing Fargate cluster to use. |
2958
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.cpu">cpu</a></code> | <code>number</code> | The number of cpu units used by the task. |
2959
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.ephemeralStorageGiB">ephemeralStorageGiB</a></code> | <code>number</code> | The amount (in GiB) of ephemeral storage to be allocated to the task. |
2960
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.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. |
2961
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.label">label</a></code> | <code>string</code> | GitHub Actions label used for this provider. |
2962
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.labels">labels</a></code> | <code>string[]</code> | GitHub Actions labels used for this provider. |
2963
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.memoryLimitMiB">memoryLimitMiB</a></code> | <code>number</code> | The amount (in MiB) of memory used by the task. |
2964
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | Security Group to assign to the task. |
2965
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.spot">spot</a></code> | <code>boolean</code> | Use Fargate spot capacity provider to save money. |
2966
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.subnetSelection">subnetSelection</a></code> | <code>aws-cdk-lib.aws_ec2.SubnetSelection</code> | Subnets to run the runners in. |
2967
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.vpc">vpc</a></code> | <code>aws-cdk-lib.aws_ec2.IVpc</code> | VPC to launch the runners in. |
2968
+
2969
+ ---
2970
+
2971
+ ##### `logRetention`<sup>Optional</sup> <a name="logRetention" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.logRetention"></a>
2972
+
2973
+ ```typescript
2974
+ public readonly logRetention: RetentionDays;
2975
+ ```
2976
+
2977
+ - *Type:* aws-cdk-lib.aws_logs.RetentionDays
2978
+ - *Default:* logs.RetentionDays.ONE_MONTH
2979
+
2980
+ The number of days log events are kept in CloudWatch Logs.
2981
+
2982
+ When updating
2983
+ this property, unsetting it doesn't remove the log retention policy. To
2984
+ remove the retention policy, set the value to `INFINITE`.
2985
+
2986
+ ---
2987
+
2988
+ ##### `assignPublicIp`<sup>Optional</sup> <a name="assignPublicIp" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.assignPublicIp"></a>
2989
+
2990
+ ```typescript
2991
+ public readonly assignPublicIp: boolean;
2992
+ ```
2993
+
2994
+ - *Type:* boolean
2995
+ - *Default:* true
2996
+
2997
+ Assign public IP to the runner task.
2998
+
2999
+ Make sure the task will have access to GitHub. A public IP might be required unless you have NAT gateway.
3000
+
3001
+ ---
3002
+
3003
+ ##### `cluster`<sup>Optional</sup> <a name="cluster" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.cluster"></a>
3004
+
3005
+ ```typescript
3006
+ public readonly cluster: Cluster;
3007
+ ```
3008
+
3009
+ - *Type:* aws-cdk-lib.aws_ecs.Cluster
3010
+ - *Default:* a new cluster
3011
+
3012
+ Existing Fargate cluster to use.
3013
+
3014
+ ---
3015
+
3016
+ ##### `cpu`<sup>Optional</sup> <a name="cpu" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProps.property.cpu"></a>
3017
+
3018
+ ```typescript
3019
+ public readonly cpu: number;
3020
+ ```
3021
+
3022
+ - *Type:* number
3023
+ - *Default:* 1024
3024
+
3025
+ The number of cpu units used by the task.
3026
+
3027
+ For tasks using the Fargate launch type,
3028
+ this field is required and you must use one of the following values,
3029
+ which determines your range of valid values for the memory parameter:
3030
+
3031
+ 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB)
3032
+
3033
+ 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB)
3034
+
3035
+ 1024 (1 vCPU) - Available memory values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB)
3036
+
3037
+ 2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB)
2648
3038
 
2649
3039
  4096 (4 vCPU) - Available memory values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB)
2650
3040
 
@@ -3253,8 +3643,94 @@ VPC to launch the runners in.
3253
3643
 
3254
3644
  ---
3255
3645
 
3646
+ ### RunnerAmi <a name="RunnerAmi" id="@cloudsnorkel/cdk-github-runners.RunnerAmi"></a>
3647
+
3648
+ Description of a AMI built by {@link IAmiBuilder}.
3649
+
3650
+ #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.RunnerAmi.Initializer"></a>
3651
+
3652
+ ```typescript
3653
+ import { RunnerAmi } from '@cloudsnorkel/cdk-github-runners'
3654
+
3655
+ const runnerAmi: RunnerAmi = { ... }
3656
+ ```
3657
+
3658
+ #### Properties <a name="Properties" id="Properties"></a>
3659
+
3660
+ | **Name** | **Type** | **Description** |
3661
+ | --- | --- | --- |
3662
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerAmi.property.architecture">architecture</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a></code> | Architecture of the image. |
3663
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerAmi.property.launchTemplate">launchTemplate</a></code> | <code>aws-cdk-lib.aws_ec2.ILaunchTemplate</code> | Launch template pointing to the latest AMI. |
3664
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerAmi.property.os">os</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a></code> | OS type of the image. |
3665
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerAmi.property.runnerVersion">runnerVersion</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a></code> | Installed runner version. |
3666
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerAmi.property.logGroup">logGroup</a></code> | <code>aws-cdk-lib.aws_logs.LogGroup</code> | Log group where image builds are logged. |
3667
+
3668
+ ---
3669
+
3670
+ ##### `architecture`<sup>Required</sup> <a name="architecture" id="@cloudsnorkel/cdk-github-runners.RunnerAmi.property.architecture"></a>
3671
+
3672
+ ```typescript
3673
+ public readonly architecture: Architecture;
3674
+ ```
3675
+
3676
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
3677
+
3678
+ Architecture of the image.
3679
+
3680
+ ---
3681
+
3682
+ ##### `launchTemplate`<sup>Required</sup> <a name="launchTemplate" id="@cloudsnorkel/cdk-github-runners.RunnerAmi.property.launchTemplate"></a>
3683
+
3684
+ ```typescript
3685
+ public readonly launchTemplate: ILaunchTemplate;
3686
+ ```
3687
+
3688
+ - *Type:* aws-cdk-lib.aws_ec2.ILaunchTemplate
3689
+
3690
+ Launch template pointing to the latest AMI.
3691
+
3692
+ ---
3693
+
3694
+ ##### `os`<sup>Required</sup> <a name="os" id="@cloudsnorkel/cdk-github-runners.RunnerAmi.property.os"></a>
3695
+
3696
+ ```typescript
3697
+ public readonly os: Os;
3698
+ ```
3699
+
3700
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
3701
+
3702
+ OS type of the image.
3703
+
3704
+ ---
3705
+
3706
+ ##### `runnerVersion`<sup>Required</sup> <a name="runnerVersion" id="@cloudsnorkel/cdk-github-runners.RunnerAmi.property.runnerVersion"></a>
3707
+
3708
+ ```typescript
3709
+ public readonly runnerVersion: RunnerVersion;
3710
+ ```
3711
+
3712
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a>
3713
+
3714
+ Installed runner version.
3715
+
3716
+ ---
3717
+
3718
+ ##### `logGroup`<sup>Optional</sup> <a name="logGroup" id="@cloudsnorkel/cdk-github-runners.RunnerAmi.property.logGroup"></a>
3719
+
3720
+ ```typescript
3721
+ public readonly logGroup: LogGroup;
3722
+ ```
3723
+
3724
+ - *Type:* aws-cdk-lib.aws_logs.LogGroup
3725
+
3726
+ Log group where image builds are logged.
3727
+
3728
+ ---
3729
+
3256
3730
  ### RunnerImage <a name="RunnerImage" id="@cloudsnorkel/cdk-github-runners.RunnerImage"></a>
3257
3731
 
3732
+ Description of a Docker image built by {@link IImageBuilder}.
3733
+
3258
3734
  #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.RunnerImage.Initializer"></a>
3259
3735
 
3260
3736
  ```typescript
@@ -3271,6 +3747,7 @@ const runnerImage: RunnerImage = { ... }
3271
3747
  | <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. |
3272
3748
  | <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. |
3273
3749
  | <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. |
3750
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImage.property.runnerVersion">runnerVersion</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a></code> | Installed runner version. |
3274
3751
  | <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. |
3275
3752
 
3276
3753
  ---
@@ -3323,6 +3800,18 @@ OS type of the image.
3323
3800
 
3324
3801
  ---
3325
3802
 
3803
+ ##### `runnerVersion`<sup>Required</sup> <a name="runnerVersion" id="@cloudsnorkel/cdk-github-runners.RunnerImage.property.runnerVersion"></a>
3804
+
3805
+ ```typescript
3806
+ public readonly runnerVersion: RunnerVersion;
3807
+ ```
3808
+
3809
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a>
3810
+
3811
+ Installed runner version.
3812
+
3813
+ ---
3814
+
3326
3815
  ##### `logGroup`<sup>Optional</sup> <a name="logGroup" id="@cloudsnorkel/cdk-github-runners.RunnerImage.property.logGroup"></a>
3327
3816
 
3328
3817
  ```typescript
@@ -3476,7 +3965,25 @@ CPU architecture enum for an image.
3476
3965
 
3477
3966
  | **Name** | **Description** |
3478
3967
  | --- | --- |
3968
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture.instanceTypeMatch">instanceTypeMatch</a></code> | Checks if a given EC2 instance type matches this architecture. |
3479
3969
  | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture.is">is</a></code> | Checks if the given architecture is the same as this one. |
3970
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture.isIn">isIn</a></code> | Checks if this architecture is in a given list. |
3971
+
3972
+ ---
3973
+
3974
+ ##### `instanceTypeMatch` <a name="instanceTypeMatch" id="@cloudsnorkel/cdk-github-runners.Architecture.instanceTypeMatch"></a>
3975
+
3976
+ ```typescript
3977
+ public instanceTypeMatch(instanceType: InstanceType): boolean
3978
+ ```
3979
+
3980
+ Checks if a given EC2 instance type matches this architecture.
3981
+
3982
+ ###### `instanceType`<sup>Required</sup> <a name="instanceType" id="@cloudsnorkel/cdk-github-runners.Architecture.instanceTypeMatch.parameter.instanceType"></a>
3983
+
3984
+ - *Type:* aws-cdk-lib.aws_ec2.InstanceType
3985
+
3986
+ instance type to check.
3480
3987
 
3481
3988
  ---
3482
3989
 
@@ -3496,6 +4003,22 @@ architecture to compare.
3496
4003
 
3497
4004
  ---
3498
4005
 
4006
+ ##### `isIn` <a name="isIn" id="@cloudsnorkel/cdk-github-runners.Architecture.isIn"></a>
4007
+
4008
+ ```typescript
4009
+ public isIn(arches: Architecture[]): boolean
4010
+ ```
4011
+
4012
+ Checks if this architecture is in a given list.
4013
+
4014
+ ###### `arches`<sup>Required</sup> <a name="arches" id="@cloudsnorkel/cdk-github-runners.Architecture.isIn.parameter.arches"></a>
4015
+
4016
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>[]
4017
+
4018
+ architectures to check.
4019
+
4020
+ ---
4021
+
3499
4022
 
3500
4023
  #### Properties <a name="Properties" id="Properties"></a>
3501
4024
 
@@ -3548,27 +4071,252 @@ X86_64.
3548
4071
 
3549
4072
  ---
3550
4073
 
3551
- ### Os <a name="Os" id="@cloudsnorkel/cdk-github-runners.Os"></a>
3552
-
3553
- OS enum for an image.
3554
-
3555
- #### Methods <a name="Methods" id="Methods"></a>
4074
+ ### LinuxUbuntuComponents <a name="LinuxUbuntuComponents" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents"></a>
3556
4075
 
3557
- | **Name** | **Description** |
3558
- | --- | --- |
3559
- | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.is">is</a></code> | Checks if the given OS is the same as this one. |
4076
+ Components for Ubuntu Linux that can be used with AWS Image Builder based builders.
3560
4077
 
3561
- ---
4078
+ These cannot be used by {@link CodeBuildImageBuilder}.
3562
4079
 
3563
- ##### `is` <a name="is" id="@cloudsnorkel/cdk-github-runners.Os.is"></a>
4080
+ #### Initializers <a name="Initializers" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.Initializer"></a>
3564
4081
 
3565
4082
  ```typescript
3566
- public is(os: Os): boolean
4083
+ import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
4084
+
4085
+ new LinuxUbuntuComponents()
3567
4086
  ```
3568
4087
 
3569
- Checks if the given OS is the same as this one.
4088
+ | **Name** | **Type** | **Description** |
4089
+ | --- | --- | --- |
3570
4090
 
3571
- ###### `os`<sup>Required</sup> <a name="os" id="@cloudsnorkel/cdk-github-runners.Os.is.parameter.os"></a>
4091
+ ---
4092
+
4093
+
4094
+ #### Static Functions <a name="Static Functions" id="Static Functions"></a>
4095
+
4096
+ | **Name** | **Description** |
4097
+ | --- | --- |
4098
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.awsCli">awsCli</a></code> | *No description.* |
4099
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.docker">docker</a></code> | *No description.* |
4100
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.git">git</a></code> | *No description.* |
4101
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubCli">githubCli</a></code> | *No description.* |
4102
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubRunner">githubRunner</a></code> | *No description.* |
4103
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.requiredPackages">requiredPackages</a></code> | *No description.* |
4104
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.runnerUser">runnerUser</a></code> | *No description.* |
4105
+
4106
+ ---
4107
+
4108
+ ##### `awsCli` <a name="awsCli" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.awsCli"></a>
4109
+
4110
+ ```typescript
4111
+ import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
4112
+
4113
+ LinuxUbuntuComponents.awsCli(scope: Construct, id: string, architecture: Architecture)
4114
+ ```
4115
+
4116
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.awsCli.parameter.scope"></a>
4117
+
4118
+ - *Type:* constructs.Construct
4119
+
4120
+ ---
4121
+
4122
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.awsCli.parameter.id"></a>
4123
+
4124
+ - *Type:* string
4125
+
4126
+ ---
4127
+
4128
+ ###### `architecture`<sup>Required</sup> <a name="architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.awsCli.parameter.architecture"></a>
4129
+
4130
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
4131
+
4132
+ ---
4133
+
4134
+ ##### `docker` <a name="docker" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.docker"></a>
4135
+
4136
+ ```typescript
4137
+ import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
4138
+
4139
+ LinuxUbuntuComponents.docker(scope: Construct, id: string, _architecture: Architecture)
4140
+ ```
4141
+
4142
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.docker.parameter.scope"></a>
4143
+
4144
+ - *Type:* constructs.Construct
4145
+
4146
+ ---
4147
+
4148
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.docker.parameter.id"></a>
4149
+
4150
+ - *Type:* string
4151
+
4152
+ ---
4153
+
4154
+ ###### `_architecture`<sup>Required</sup> <a name="_architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.docker.parameter._architecture"></a>
4155
+
4156
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
4157
+
4158
+ ---
4159
+
4160
+ ##### `git` <a name="git" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.git"></a>
4161
+
4162
+ ```typescript
4163
+ import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
4164
+
4165
+ LinuxUbuntuComponents.git(scope: Construct, id: string, _architecture: Architecture)
4166
+ ```
4167
+
4168
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.git.parameter.scope"></a>
4169
+
4170
+ - *Type:* constructs.Construct
4171
+
4172
+ ---
4173
+
4174
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.git.parameter.id"></a>
4175
+
4176
+ - *Type:* string
4177
+
4178
+ ---
4179
+
4180
+ ###### `_architecture`<sup>Required</sup> <a name="_architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.git.parameter._architecture"></a>
4181
+
4182
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
4183
+
4184
+ ---
4185
+
4186
+ ##### `githubCli` <a name="githubCli" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubCli"></a>
4187
+
4188
+ ```typescript
4189
+ import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
4190
+
4191
+ LinuxUbuntuComponents.githubCli(scope: Construct, id: string, _architecture: Architecture)
4192
+ ```
4193
+
4194
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubCli.parameter.scope"></a>
4195
+
4196
+ - *Type:* constructs.Construct
4197
+
4198
+ ---
4199
+
4200
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubCli.parameter.id"></a>
4201
+
4202
+ - *Type:* string
4203
+
4204
+ ---
4205
+
4206
+ ###### `_architecture`<sup>Required</sup> <a name="_architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubCli.parameter._architecture"></a>
4207
+
4208
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
4209
+
4210
+ ---
4211
+
4212
+ ##### `githubRunner` <a name="githubRunner" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubRunner"></a>
4213
+
4214
+ ```typescript
4215
+ import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
4216
+
4217
+ LinuxUbuntuComponents.githubRunner(scope: Construct, id: string, runnerVersion: RunnerVersion, architecture: Architecture)
4218
+ ```
4219
+
4220
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubRunner.parameter.scope"></a>
4221
+
4222
+ - *Type:* constructs.Construct
4223
+
4224
+ ---
4225
+
4226
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubRunner.parameter.id"></a>
4227
+
4228
+ - *Type:* string
4229
+
4230
+ ---
4231
+
4232
+ ###### `runnerVersion`<sup>Required</sup> <a name="runnerVersion" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubRunner.parameter.runnerVersion"></a>
4233
+
4234
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a>
4235
+
4236
+ ---
4237
+
4238
+ ###### `architecture`<sup>Required</sup> <a name="architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.githubRunner.parameter.architecture"></a>
4239
+
4240
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
4241
+
4242
+ ---
4243
+
4244
+ ##### `requiredPackages` <a name="requiredPackages" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.requiredPackages"></a>
4245
+
4246
+ ```typescript
4247
+ import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
4248
+
4249
+ LinuxUbuntuComponents.requiredPackages(scope: Construct, id: string, architecture: Architecture)
4250
+ ```
4251
+
4252
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.requiredPackages.parameter.scope"></a>
4253
+
4254
+ - *Type:* constructs.Construct
4255
+
4256
+ ---
4257
+
4258
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.requiredPackages.parameter.id"></a>
4259
+
4260
+ - *Type:* string
4261
+
4262
+ ---
4263
+
4264
+ ###### `architecture`<sup>Required</sup> <a name="architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.requiredPackages.parameter.architecture"></a>
4265
+
4266
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
4267
+
4268
+ ---
4269
+
4270
+ ##### `runnerUser` <a name="runnerUser" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.runnerUser"></a>
4271
+
4272
+ ```typescript
4273
+ import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners'
4274
+
4275
+ LinuxUbuntuComponents.runnerUser(scope: Construct, id: string, _architecture: Architecture)
4276
+ ```
4277
+
4278
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.runnerUser.parameter.scope"></a>
4279
+
4280
+ - *Type:* constructs.Construct
4281
+
4282
+ ---
4283
+
4284
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.runnerUser.parameter.id"></a>
4285
+
4286
+ - *Type:* string
4287
+
4288
+ ---
4289
+
4290
+ ###### `_architecture`<sup>Required</sup> <a name="_architecture" id="@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents.runnerUser.parameter._architecture"></a>
4291
+
4292
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
4293
+
4294
+ ---
4295
+
4296
+
4297
+
4298
+ ### Os <a name="Os" id="@cloudsnorkel/cdk-github-runners.Os"></a>
4299
+
4300
+ OS enum for an image.
4301
+
4302
+ #### Methods <a name="Methods" id="Methods"></a>
4303
+
4304
+ | **Name** | **Description** |
4305
+ | --- | --- |
4306
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.is">is</a></code> | Checks if the given OS is the same as this one. |
4307
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.isIn">isIn</a></code> | Checks if this OS is in a given list. |
4308
+
4309
+ ---
4310
+
4311
+ ##### `is` <a name="is" id="@cloudsnorkel/cdk-github-runners.Os.is"></a>
4312
+
4313
+ ```typescript
4314
+ public is(os: Os): boolean
4315
+ ```
4316
+
4317
+ Checks if the given OS is the same as this one.
4318
+
4319
+ ###### `os`<sup>Required</sup> <a name="os" id="@cloudsnorkel/cdk-github-runners.Os.is.parameter.os"></a>
3572
4320
 
3573
4321
  - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
3574
4322
 
@@ -3576,6 +4324,22 @@ OS to compare.
3576
4324
 
3577
4325
  ---
3578
4326
 
4327
+ ##### `isIn` <a name="isIn" id="@cloudsnorkel/cdk-github-runners.Os.isIn"></a>
4328
+
4329
+ ```typescript
4330
+ public isIn(oses: Os[]): boolean
4331
+ ```
4332
+
4333
+ Checks if this OS is in a given list.
4334
+
4335
+ ###### `oses`<sup>Required</sup> <a name="oses" id="@cloudsnorkel/cdk-github-runners.Os.isIn.parameter.oses"></a>
4336
+
4337
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>[]
4338
+
4339
+ list of OS to check.
4340
+
4341
+ ---
4342
+
3579
4343
 
3580
4344
  #### Properties <a name="Properties" id="Properties"></a>
3581
4345
 
@@ -3652,6 +4416,29 @@ new RunnerVersion(version: string)
3652
4416
 
3653
4417
  ---
3654
4418
 
4419
+ #### Methods <a name="Methods" id="Methods"></a>
4420
+
4421
+ | **Name** | **Description** |
4422
+ | --- | --- |
4423
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion.is">is</a></code> | Check if two versions are the same. |
4424
+
4425
+ ---
4426
+
4427
+ ##### `is` <a name="is" id="@cloudsnorkel/cdk-github-runners.RunnerVersion.is"></a>
4428
+
4429
+ ```typescript
4430
+ public is(other: RunnerVersion): boolean
4431
+ ```
4432
+
4433
+ Check if two versions are the same.
4434
+
4435
+ ###### `other`<sup>Required</sup> <a name="other" id="@cloudsnorkel/cdk-github-runners.RunnerVersion.is.parameter.other"></a>
4436
+
4437
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a>
4438
+
4439
+ version to compare.
4440
+
4441
+ ---
3655
4442
 
3656
4443
  #### Static Functions <a name="Static Functions" id="Static Functions"></a>
3657
4444
 
@@ -3834,8 +4621,198 @@ image OS.
3834
4621
 
3835
4622
 
3836
4623
 
4624
+ ### WindowsComponents <a name="WindowsComponents" id="@cloudsnorkel/cdk-github-runners.WindowsComponents"></a>
4625
+
4626
+ Components for Windows that can be used with AWS Image Builder based builders.
4627
+
4628
+ These cannot be used by {@link CodeBuildImageBuilder}.
4629
+
4630
+ #### Initializers <a name="Initializers" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.Initializer"></a>
4631
+
4632
+ ```typescript
4633
+ import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners'
4634
+
4635
+ new WindowsComponents()
4636
+ ```
4637
+
4638
+ | **Name** | **Type** | **Description** |
4639
+ | --- | --- | --- |
4640
+
4641
+ ---
4642
+
4643
+
4644
+ #### Static Functions <a name="Static Functions" id="Static Functions"></a>
4645
+
4646
+ | **Name** | **Description** |
4647
+ | --- | --- |
4648
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.WindowsComponents.awsCli">awsCli</a></code> | *No description.* |
4649
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.WindowsComponents.cloudwatchAgent">cloudwatchAgent</a></code> | *No description.* |
4650
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.WindowsComponents.docker">docker</a></code> | *No description.* |
4651
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.WindowsComponents.git">git</a></code> | *No description.* |
4652
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.WindowsComponents.githubCli">githubCli</a></code> | *No description.* |
4653
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.WindowsComponents.githubRunner">githubRunner</a></code> | *No description.* |
4654
+
4655
+ ---
4656
+
4657
+ ##### `awsCli` <a name="awsCli" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.awsCli"></a>
4658
+
4659
+ ```typescript
4660
+ import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners'
4661
+
4662
+ WindowsComponents.awsCli(scope: Construct, id: string)
4663
+ ```
4664
+
4665
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.awsCli.parameter.scope"></a>
4666
+
4667
+ - *Type:* constructs.Construct
4668
+
4669
+ ---
4670
+
4671
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.awsCli.parameter.id"></a>
4672
+
4673
+ - *Type:* string
4674
+
4675
+ ---
4676
+
4677
+ ##### `cloudwatchAgent` <a name="cloudwatchAgent" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.cloudwatchAgent"></a>
4678
+
4679
+ ```typescript
4680
+ import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners'
4681
+
4682
+ WindowsComponents.cloudwatchAgent(scope: Construct, id: string)
4683
+ ```
4684
+
4685
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.cloudwatchAgent.parameter.scope"></a>
4686
+
4687
+ - *Type:* constructs.Construct
4688
+
4689
+ ---
4690
+
4691
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.cloudwatchAgent.parameter.id"></a>
4692
+
4693
+ - *Type:* string
4694
+
4695
+ ---
4696
+
4697
+ ##### `docker` <a name="docker" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.docker"></a>
4698
+
4699
+ ```typescript
4700
+ import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners'
4701
+
4702
+ WindowsComponents.docker(scope: Construct, id: string)
4703
+ ```
4704
+
4705
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.docker.parameter.scope"></a>
4706
+
4707
+ - *Type:* constructs.Construct
4708
+
4709
+ ---
4710
+
4711
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.docker.parameter.id"></a>
4712
+
4713
+ - *Type:* string
4714
+
4715
+ ---
4716
+
4717
+ ##### `git` <a name="git" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.git"></a>
4718
+
4719
+ ```typescript
4720
+ import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners'
4721
+
4722
+ WindowsComponents.git(scope: Construct, id: string)
4723
+ ```
4724
+
4725
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.git.parameter.scope"></a>
4726
+
4727
+ - *Type:* constructs.Construct
4728
+
4729
+ ---
4730
+
4731
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.git.parameter.id"></a>
4732
+
4733
+ - *Type:* string
4734
+
4735
+ ---
4736
+
4737
+ ##### `githubCli` <a name="githubCli" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.githubCli"></a>
4738
+
4739
+ ```typescript
4740
+ import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners'
4741
+
4742
+ WindowsComponents.githubCli(scope: Construct, id: string)
4743
+ ```
4744
+
4745
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.githubCli.parameter.scope"></a>
4746
+
4747
+ - *Type:* constructs.Construct
4748
+
4749
+ ---
4750
+
4751
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.githubCli.parameter.id"></a>
4752
+
4753
+ - *Type:* string
4754
+
4755
+ ---
4756
+
4757
+ ##### `githubRunner` <a name="githubRunner" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.githubRunner"></a>
4758
+
4759
+ ```typescript
4760
+ import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners'
4761
+
4762
+ WindowsComponents.githubRunner(scope: Construct, id: string, runnerVersion: RunnerVersion)
4763
+ ```
4764
+
4765
+ ###### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.githubRunner.parameter.scope"></a>
4766
+
4767
+ - *Type:* constructs.Construct
4768
+
4769
+ ---
4770
+
4771
+ ###### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.githubRunner.parameter.id"></a>
4772
+
4773
+ - *Type:* string
4774
+
4775
+ ---
4776
+
4777
+ ###### `runnerVersion`<sup>Required</sup> <a name="runnerVersion" id="@cloudsnorkel/cdk-github-runners.WindowsComponents.githubRunner.parameter.runnerVersion"></a>
4778
+
4779
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a>
4780
+
4781
+ ---
4782
+
4783
+
4784
+
3837
4785
  ## Protocols <a name="Protocols" id="Protocols"></a>
3838
4786
 
4787
+ ### IAmiBuilder <a name="IAmiBuilder" id="@cloudsnorkel/cdk-github-runners.IAmiBuilder"></a>
4788
+
4789
+ - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.IAmiBuilder">IAmiBuilder</a>
4790
+
4791
+ Interface for constructs that build an AMI that can be used in {@link IRunnerProvider}.
4792
+
4793
+ Anything that ends up with a launch template pointing to an AMI that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing AMI and nothing else.
4794
+
4795
+ The AMI can be further updated over time manually or using a schedule as long as it is always written to the same launch template.
4796
+
4797
+ #### Methods <a name="Methods" id="Methods"></a>
4798
+
4799
+ | **Name** | **Description** |
4800
+ | --- | --- |
4801
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IAmiBuilder.bind">bind</a></code> | Finalize and return all required information about the AMI built by this builder. |
4802
+
4803
+ ---
4804
+
4805
+ ##### `bind` <a name="bind" id="@cloudsnorkel/cdk-github-runners.IAmiBuilder.bind"></a>
4806
+
4807
+ ```typescript
4808
+ public bind(): RunnerAmi
4809
+ ```
4810
+
4811
+ Finalize and return all required information about the AMI built by this builder.
4812
+
4813
+ 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.
4814
+
4815
+
3839
4816
  ### IImageBuilder <a name="IImageBuilder" id="@cloudsnorkel/cdk-github-runners.IImageBuilder"></a>
3840
4817
 
3841
4818
  - *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>
@@ -3852,7 +4829,7 @@ The image can be further updated over time manually or using a schedule as long
3852
4829
 
3853
4830
  | **Name** | **Description** |
3854
4831
  | --- | --- |
3855
- | <code><a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder.bind">bind</a></code> | ECR repository containing the image. |
4832
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder.bind">bind</a></code> | Finalize and return all required information about the Docker image built by this builder. |
3856
4833
 
3857
4834
  ---
3858
4835
 
@@ -3862,41 +4839,69 @@ The image can be further updated over time manually or using a schedule as long
3862
4839
  public bind(): RunnerImage
3863
4840
  ```
3864
4841
 
3865
- ECR repository containing the image.
4842
+ Finalize and return all required information about the Docker image built by this builder.
3866
4843
 
3867
4844
  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.
3868
4845
 
3869
4846
 
3870
- ### IRunnerImageStatus <a name="IRunnerImageStatus" id="@cloudsnorkel/cdk-github-runners.IRunnerImageStatus"></a>
4847
+ ### IRunnerAmiStatus <a name="IRunnerAmiStatus" id="@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus"></a>
3871
4848
 
3872
- - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageStatus">IRunnerImageStatus</a>
4849
+ - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus">IRunnerAmiStatus</a>
3873
4850
 
3874
- Interface for runner image status used by status.json.
4851
+ AMI status returned from runner providers to be displayed as output of status function.
3875
4852
 
3876
4853
 
3877
4854
  #### Properties <a name="Properties" id="Properties"></a>
3878
4855
 
3879
4856
  | **Name** | **Type** | **Description** |
3880
4857
  | --- | --- | --- |
3881
- | <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. |
3882
- | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageRepository">imageRepository</a></code> | <code>string</code> | Image repository where runner image is pushed. |
3883
- | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageTag">imageTag</a></code> | <code>string</code> | Tag of image that should be used. |
4858
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus.property.launchTemplate">launchTemplate</a></code> | <code>string</code> | Id of launch template pointing to the latest AMI built by the AMI builder. |
4859
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus.property.amiBuilderLogGroup">amiBuilderLogGroup</a></code> | <code>string</code> | Log group name for the AMI builder where history of builds can be analyzed. |
3884
4860
 
3885
4861
  ---
3886
4862
 
3887
- ##### `imageBuilderLogGroup`<sup>Optional</sup> <a name="imageBuilderLogGroup" id="@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageBuilderLogGroup"></a>
4863
+ ##### `launchTemplate`<sup>Required</sup> <a name="launchTemplate" id="@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus.property.launchTemplate"></a>
3888
4864
 
3889
4865
  ```typescript
3890
- public readonly imageBuilderLogGroup: string;
4866
+ public readonly launchTemplate: string;
3891
4867
  ```
3892
4868
 
3893
4869
  - *Type:* string
3894
4870
 
3895
- Log group name for the image builder where history of image builds can be analyzed.
4871
+ Id of launch template pointing to the latest AMI built by the AMI builder.
4872
+
4873
+ ---
4874
+
4875
+ ##### `amiBuilderLogGroup`<sup>Optional</sup> <a name="amiBuilderLogGroup" id="@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus.property.amiBuilderLogGroup"></a>
4876
+
4877
+ ```typescript
4878
+ public readonly amiBuilderLogGroup: string;
4879
+ ```
4880
+
4881
+ - *Type:* string
4882
+
4883
+ Log group name for the AMI builder where history of builds can be analyzed.
4884
+
4885
+ ---
4886
+
4887
+ ### IRunnerImageStatus <a name="IRunnerImageStatus" id="@cloudsnorkel/cdk-github-runners.IRunnerImageStatus"></a>
4888
+
4889
+ - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageStatus">IRunnerImageStatus</a>
4890
+
4891
+ Image status returned from runner providers to be displayed in status.json.
4892
+
4893
+
4894
+ #### Properties <a name="Properties" id="Properties"></a>
4895
+
4896
+ | **Name** | **Type** | **Description** |
4897
+ | --- | --- | --- |
4898
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageRepository">imageRepository</a></code> | <code>string</code> | Image repository where image builder pushes runner images. |
4899
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageTag">imageTag</a></code> | <code>string</code> | Tag of image that should be used. |
4900
+ | <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. |
3896
4901
 
3897
4902
  ---
3898
4903
 
3899
- ##### `imageRepository`<sup>Optional</sup> <a name="imageRepository" id="@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageRepository"></a>
4904
+ ##### `imageRepository`<sup>Required</sup> <a name="imageRepository" id="@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageRepository"></a>
3900
4905
 
3901
4906
  ```typescript
3902
4907
  public readonly imageRepository: string;
@@ -3904,11 +4909,11 @@ public readonly imageRepository: string;
3904
4909
 
3905
4910
  - *Type:* string
3906
4911
 
3907
- Image repository where runner image is pushed.
4912
+ Image repository where image builder pushes runner images.
3908
4913
 
3909
4914
  ---
3910
4915
 
3911
- ##### `imageTag`<sup>Optional</sup> <a name="imageTag" id="@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageTag"></a>
4916
+ ##### `imageTag`<sup>Required</sup> <a name="imageTag" id="@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageTag"></a>
3912
4917
 
3913
4918
  ```typescript
3914
4919
  public readonly imageTag: string;
@@ -3920,11 +4925,23 @@ Tag of image that should be used.
3920
4925
 
3921
4926
  ---
3922
4927
 
4928
+ ##### `imageBuilderLogGroup`<sup>Optional</sup> <a name="imageBuilderLogGroup" id="@cloudsnorkel/cdk-github-runners.IRunnerImageStatus.property.imageBuilderLogGroup"></a>
4929
+
4930
+ ```typescript
4931
+ public readonly imageBuilderLogGroup: string;
4932
+ ```
4933
+
4934
+ - *Type:* string
4935
+
4936
+ Log group name for the image builder where history of image builds can be analyzed.
4937
+
4938
+ ---
4939
+
3923
4940
  ### IRunnerProvider <a name="IRunnerProvider" id="@cloudsnorkel/cdk-github-runners.IRunnerProvider"></a>
3924
4941
 
3925
4942
  - *Extends:* aws-cdk-lib.aws_ec2.IConnectable, aws-cdk-lib.aws_iam.IGrantable
3926
4943
 
3927
- - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner">CodeBuildRunner</a>, <a href="#@cloudsnorkel/cdk-github-runners.FargateRunner">FargateRunner</a>, <a href="#@cloudsnorkel/cdk-github-runners.LambdaRunner">LambdaRunner</a>, <a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider">IRunnerProvider</a>
4944
+ - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner">CodeBuildRunner</a>, <a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner">Ec2Runner</a>, <a href="#@cloudsnorkel/cdk-github-runners.FargateRunner">FargateRunner</a>, <a href="#@cloudsnorkel/cdk-github-runners.LambdaRunner">LambdaRunner</a>, <a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider">IRunnerProvider</a>
3928
4945
 
3929
4946
  Interface for all runner providers.
3930
4947
 
@@ -3935,6 +4952,8 @@ Implementations create all required resources and return a step function task th
3935
4952
  | **Name** | **Description** |
3936
4953
  | --- | --- |
3937
4954
  | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider.getStepFunctionTask">getStepFunctionTask</a></code> | Generate step function tasks that execute the runner. |
4955
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider.grantStateMachine">grantStateMachine</a></code> | An optional method that modifies the role of the state machine after all the tasks have been generated. |
4956
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider.status">status</a></code> | Return status of the runner provider to be used in the main status function. |
3938
4957
 
3939
4958
  ---
3940
4959
 
@@ -3956,13 +4975,49 @@ specific build parameters.
3956
4975
 
3957
4976
  ---
3958
4977
 
4978
+ ##### `grantStateMachine` <a name="grantStateMachine" id="@cloudsnorkel/cdk-github-runners.IRunnerProvider.grantStateMachine"></a>
4979
+
4980
+ ```typescript
4981
+ public grantStateMachine(stateMachineRole: IGrantable): void
4982
+ ```
4983
+
4984
+ An optional method that modifies the role of the state machine after all the tasks have been generated.
4985
+
4986
+ This can be used to add additional policy
4987
+ statements to the state machine role that are not automatically added by the task returned from {@link getStepFunctionTask}.
4988
+
4989
+ ###### `stateMachineRole`<sup>Required</sup> <a name="stateMachineRole" id="@cloudsnorkel/cdk-github-runners.IRunnerProvider.grantStateMachine.parameter.stateMachineRole"></a>
4990
+
4991
+ - *Type:* aws-cdk-lib.aws_iam.IGrantable
4992
+
4993
+ role for the state machine that executes the task returned from {@link getStepFunctionTask}.
4994
+
4995
+ ---
4996
+
4997
+ ##### `status` <a name="status" id="@cloudsnorkel/cdk-github-runners.IRunnerProvider.status"></a>
4998
+
4999
+ ```typescript
5000
+ public status(statusFunctionRole: IGrantable): IRunnerProviderStatus
5001
+ ```
5002
+
5003
+ Return status of the runner provider to be used in the main status function.
5004
+
5005
+ Also gives the status function any needed permissions to query the Docker image or AMI.
5006
+
5007
+ ###### `statusFunctionRole`<sup>Required</sup> <a name="statusFunctionRole" id="@cloudsnorkel/cdk-github-runners.IRunnerProvider.status.parameter.statusFunctionRole"></a>
5008
+
5009
+ - *Type:* aws-cdk-lib.aws_iam.IGrantable
5010
+
5011
+ grantable for the status function.
5012
+
5013
+ ---
5014
+
3959
5015
  #### Properties <a name="Properties" id="Properties"></a>
3960
5016
 
3961
5017
  | **Name** | **Type** | **Description** |
3962
5018
  | --- | --- | --- |
3963
5019
  | <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. |
3964
5020
  | <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. |
3965
- | <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. |
3966
5021
  | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider.property.labels">labels</a></code> | <code>string[]</code> | GitHub Actions labels used for this provider. |
3967
5022
  | <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. |
3968
5023
  | <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. |
@@ -3993,20 +5048,6 @@ The principal to grant permissions to.
3993
5048
 
3994
5049
  ---
3995
5050
 
3996
- ##### `image`<sup>Required</sup> <a name="image" id="@cloudsnorkel/cdk-github-runners.IRunnerProvider.property.image"></a>
3997
-
3998
- ```typescript
3999
- public readonly image: RunnerImage;
4000
- ```
4001
-
4002
- - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerImage">RunnerImage</a>
4003
-
4004
- Image used to create a new resource compute.
4005
-
4006
- Can be Docker image, AMI, or something else.
4007
-
4008
- ---
4009
-
4010
5051
  ##### `labels`<sup>Required</sup> <a name="labels" id="@cloudsnorkel/cdk-github-runners.IRunnerProvider.property.labels"></a>
4011
5052
 
4012
5053
  ```typescript
@@ -4047,3 +5088,108 @@ VPC network in which runners will be placed.
4047
5088
 
4048
5089
  ---
4049
5090
 
5091
+ ### IRunnerProviderStatus <a name="IRunnerProviderStatus" id="@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus"></a>
5092
+
5093
+ - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus">IRunnerProviderStatus</a>
5094
+
5095
+ Interface for runner image status used by status.json.
5096
+
5097
+
5098
+ #### Properties <a name="Properties" id="Properties"></a>
5099
+
5100
+ | **Name** | **Type** | **Description** |
5101
+ | --- | --- | --- |
5102
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus.property.labels">labels</a></code> | <code>string[]</code> | Labels associated with provider. |
5103
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus.property.type">type</a></code> | <code>string</code> | Runner provider type. |
5104
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus.property.ami">ami</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus">IRunnerAmiStatus</a></code> | Details about AMI used by this runner provider. |
5105
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus.property.image">image</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageStatus">IRunnerImageStatus</a></code> | Details about Docker image used by this runner provider. |
5106
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus.property.roleArn">roleArn</a></code> | <code>string</code> | Role attached to runners. |
5107
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus.property.securityGroup">securityGroup</a></code> | <code>string</code> | Security group attached to runners. |
5108
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus.property.vpcArn">vpcArn</a></code> | <code>string</code> | VPC where runners will be launched. |
5109
+
5110
+ ---
5111
+
5112
+ ##### `labels`<sup>Required</sup> <a name="labels" id="@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus.property.labels"></a>
5113
+
5114
+ ```typescript
5115
+ public readonly labels: string[];
5116
+ ```
5117
+
5118
+ - *Type:* string[]
5119
+
5120
+ Labels associated with provider.
5121
+
5122
+ ---
5123
+
5124
+ ##### `type`<sup>Required</sup> <a name="type" id="@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus.property.type"></a>
5125
+
5126
+ ```typescript
5127
+ public readonly type: string;
5128
+ ```
5129
+
5130
+ - *Type:* string
5131
+
5132
+ Runner provider type.
5133
+
5134
+ ---
5135
+
5136
+ ##### `ami`<sup>Optional</sup> <a name="ami" id="@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus.property.ami"></a>
5137
+
5138
+ ```typescript
5139
+ public readonly ami: IRunnerAmiStatus;
5140
+ ```
5141
+
5142
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus">IRunnerAmiStatus</a>
5143
+
5144
+ Details about AMI used by this runner provider.
5145
+
5146
+ ---
5147
+
5148
+ ##### `image`<sup>Optional</sup> <a name="image" id="@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus.property.image"></a>
5149
+
5150
+ ```typescript
5151
+ public readonly image: IRunnerImageStatus;
5152
+ ```
5153
+
5154
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageStatus">IRunnerImageStatus</a>
5155
+
5156
+ Details about Docker image used by this runner provider.
5157
+
5158
+ ---
5159
+
5160
+ ##### `roleArn`<sup>Optional</sup> <a name="roleArn" id="@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus.property.roleArn"></a>
5161
+
5162
+ ```typescript
5163
+ public readonly roleArn: string;
5164
+ ```
5165
+
5166
+ - *Type:* string
5167
+
5168
+ Role attached to runners.
5169
+
5170
+ ---
5171
+
5172
+ ##### `securityGroup`<sup>Optional</sup> <a name="securityGroup" id="@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus.property.securityGroup"></a>
5173
+
5174
+ ```typescript
5175
+ public readonly securityGroup: string;
5176
+ ```
5177
+
5178
+ - *Type:* string
5179
+
5180
+ Security group attached to runners.
5181
+
5182
+ ---
5183
+
5184
+ ##### `vpcArn`<sup>Optional</sup> <a name="vpcArn" id="@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus.property.vpcArn"></a>
5185
+
5186
+ ```typescript
5187
+ public readonly vpcArn: string;
5188
+ ```
5189
+
5190
+ - *Type:* string
5191
+
5192
+ VPC where runners will be launched.
5193
+
5194
+ ---
5195
+