cloudsnorkel.cdk-github-runners 0.13.3__py3-none-any.whl → 0.14.15__py3-none-any.whl

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.
@@ -1,4 +1,4 @@
1
- '''
1
+ r'''
2
2
  # GitHub Self-Hosted Runners CDK Constructs
3
3
 
4
4
  [![NPM](https://img.shields.io/npm/v/@cloudsnorkel/cdk-github-runners?label=npm&logo=npm)](https://www.npmjs.com/package/@cloudsnorkel/cdk-github-runners)
@@ -11,17 +11,17 @@
11
11
 
12
12
  Use this CDK construct to create ephemeral [self-hosted GitHub runners](https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners) on-demand inside your AWS account.
13
13
 
14
- * Easy to configure GitHub integration with a web-based interface
15
- * Customizable runners with decent defaults
16
- * Multiple runner configurations controlled by labels
17
- * Everything fully hosted in your account
18
- * Automatically updated build environment with latest runner version
14
+ * 🧩 Easy to configure GitHub integration with a web-based interface
15
+ * 🧠 Customizable runners with decent defaults
16
+ * 🏃🏻 Multiple runner configurations controlled by labels
17
+ * 🔐 Everything fully hosted in your account
18
+ * 🔃 Automatically updated build environment with latest runner version
19
19
 
20
20
  Self-hosted runners in AWS are useful when:
21
21
 
22
22
  * You need easy access to internal resources in your actions
23
23
  * You want to pre-install some software for your actions
24
- * You want to provide some basic AWS API access (but [aws-actions/configure-aws-credentials](https://github.com/marketplace/actions/configure-aws-credentials-for-github-actions) has more security controls)
24
+ * You want to provide some basic AWS API access (but [aws-actions/configure-aws-credentials](https://github.com/marketplace/actions/configure-aws-credentials-action-for-github-actions) has more security controls)
25
25
  * You are using GitHub Enterprise Server
26
26
 
27
27
  Ephemeral (or on-demand) runners are the [recommended way by GitHub](https://docs.github.com/en/actions/hosting-your-own-runners/autoscaling-with-self-hosted-runners#using-ephemeral-runners-for-autoscaling) for auto-scaling, and they make sure all jobs run with a clean image. Runners are started on-demand. You don't pay unless a job is running.
@@ -71,9 +71,14 @@ You can also create your own provider by implementing `IRunnerProvider`.
71
71
  ### Use
72
72
 
73
73
  ```python
74
+ from aws_cdk import App, Stack
74
75
  from cloudsnorkel.cdk_github_runners import GitHubRunners
75
76
 
76
- GitHubRunners(self, "runners")
77
+ app = App()
78
+ stack = Stack(app, "github-runners")
79
+ GitHubRunners(stack, "runners")
80
+
81
+ app.synth()
77
82
  ```
78
83
 
79
84
  </details>
@@ -90,9 +95,14 @@ You can also create your own provider by implementing `IRunnerProvider`.
90
95
  ### Use
91
96
 
92
97
  ```python
98
+ import { App, Stack } from 'aws-cdk-lib';
93
99
  import { GitHubRunners } from '@cloudsnorkel/cdk-github-runners';
94
100
 
95
- new GitHubRunners(this, "runners");
101
+ const app = new App();
102
+ const stack = new Stack(app, 'github-runners');
103
+ new GitHubRunners(stack, 'runners');
104
+
105
+ app.synth();
96
106
  ```
97
107
 
98
108
  </details>
@@ -112,9 +122,19 @@ You can also create your own provider by implementing `IRunnerProvider`.
112
122
  ### Use
113
123
 
114
124
  ```java
125
+ import software.amazon.awscdk.App;
126
+ import software.amazon.awscdk.Stack;
115
127
  import com.cloudsnorkel.cdk.github.runners.GitHubRunners;
116
128
 
117
- GitHubRunners.Builder.create(this, "runners").build();
129
+ public class Example {
130
+ public static void main(String[] args){
131
+ App app = new App();
132
+ Stack stack = new Stack(app, "github-runners");
133
+ GitHubRunners.Builder.create(stack, "runners").build();
134
+
135
+ app.synth();
136
+ }
137
+ }
118
138
  ```
119
139
 
120
140
  </details>
@@ -131,9 +151,21 @@ You can also create your own provider by implementing `IRunnerProvider`.
131
151
  ### Use
132
152
 
133
153
  ```go
134
- import "github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners"
154
+ package main
135
155
 
136
- NewGitHubRunners(this, jsii.String("runners"))
156
+ import (
157
+ "github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners"
158
+ "github.com/aws/aws-cdk-go/awscdk/v2"
159
+ "github.com/aws/jsii-runtime-go"
160
+ )
161
+
162
+ func main() {
163
+ app := awscdk.NewApp(nil)
164
+ stack := awscdk.NewStack(app, jsii.String("github-runners"), &awscdk.StackProps{})
165
+ cloudsnorkelcdkgithubrunners.NewGitHubRunners(stack, jsii.String("runners"), &cloudsnorkelcdkgithubrunners.GitHubRunnersProps{})
166
+
167
+ app.Synth(nil)
168
+ }
137
169
  ```
138
170
 
139
171
  </details>
@@ -150,9 +182,22 @@ You can also create your own provider by implementing `IRunnerProvider`.
150
182
  ### Use
151
183
 
152
184
  ```csharp
185
+ using Amazon.CDK;
153
186
  using CloudSnorkel;
154
187
 
155
- new GitHubRunners(this, "runners");
188
+ namespace Example
189
+ {
190
+ sealed class Program
191
+ {
192
+ public static void Main(string[] args)
193
+ {
194
+ var app = new App();
195
+ var stack = new Stack(app, "github-runners");
196
+ new GitHubRunners(stack, "runners");
197
+ app.Synth();
198
+ }
199
+ }
200
+ }
156
201
  ```
157
202
 
158
203
  </details>
@@ -171,7 +216,7 @@ You can also create your own provider by implementing `IRunnerProvider`.
171
216
  5. Execute the status command (you may need to specify `--profile` too) and open the resulting `status.json` file
172
217
  6. Open the URL in `github.setup.url` from `status.json` or [manually setup GitHub](SETUP_GITHUB.md) integration as an app or with personal access token
173
218
  7. Run status command again to confirm `github.auth.status` and `github.webhook.status` are OK
174
- 8. Trigger a GitHub action that has a `self-hosted` label with `runs-on: [self-hosted, linux, codebuild]` or similar
219
+ 8. Trigger a GitHub action that has a `self-hosted` label with `runs-on: [self-hosted, codebuild]` (or non-default labels you set in step 2)
175
220
  9. If the action is not successful, see [troubleshooting](#Troubleshooting)
176
221
 
177
222
  [![Demo](demo-thumbnail.jpg)](https://youtu.be/wlyv_3V8lIw)
@@ -279,6 +324,12 @@ new GitHubRunners(this, 'runners', {
279
324
  });
280
325
  ```
281
326
 
327
+ ## Examples
328
+
329
+ Beyond the code snippets above, the fullest example available is the [integration test](test/default.integ.ts).
330
+
331
+ If you have more to share, please open a PR adding them to the `examples` folder.
332
+
282
333
  ## Architecture
283
334
 
284
335
  ![Architecture diagram](architecture.svg)
@@ -323,6 +374,20 @@ Other useful metrics to track:
323
374
  1. Use `GitHubRunners.metricJobCompleted()` to get a metric for the number of completed jobs broken down by labels and job success.
324
375
  2. Use `GitHubRunners.metricTime()` to get a metric for the total time a runner is running. This includes the overhead of starting the runner.
325
376
 
377
+ ## Contributing
378
+
379
+ If you use and love this project, please consider contributing.
380
+
381
+ 1. 🪳 If you see something, say something. [Issues](https://github.com/CloudSnorkel/cdk-github-runners/issues) help improve the quality of the project.
382
+
383
+ * Include relevant logs and package versions for bugs.
384
+ * When possible, describe the use-case behind feature requests.
385
+ 2. 🛠️ [Pull requests](https://github.com/CloudSnorkel/cdk-github-runners/pulls) are welcome.
386
+
387
+ * Run `npm run build` before submitting to make sure all tests pass.
388
+ * Allow edits from maintainers so small adjustments can be made easily.
389
+ 3. 💵 Consider [sponsoring](https://github.com/sponsors/CloudSnorkel) the project to show your support and optionally get your name listed below.
390
+
326
391
  ## Other Options
327
392
 
328
393
  1. [philips-labs/terraform-aws-github-runner](https://github.com/philips-labs/terraform-aws-github-runner) if you're using Terraform
@@ -341,7 +406,22 @@ import jsii
341
406
  import publication
342
407
  import typing_extensions
343
408
 
344
- from typeguard import check_type
409
+ import typeguard
410
+ from importlib.metadata import version as _metadata_package_version
411
+ TYPEGUARD_MAJOR_VERSION = int(_metadata_package_version('typeguard').split('.')[0])
412
+
413
+ def check_type(argname: str, value: object, expected_type: typing.Any) -> typing.Any:
414
+ if TYPEGUARD_MAJOR_VERSION <= 2:
415
+ return typeguard.check_type(argname=argname, value=value, expected_type=expected_type) # type:ignore
416
+ else:
417
+ if isinstance(value, jsii._reference_map.InterfaceDynamicProxy): # pyright: ignore [reportAttributeAccessIssue]
418
+ pass
419
+ else:
420
+ if TYPEGUARD_MAJOR_VERSION == 3:
421
+ typeguard.config.collection_check_strategy = typeguard.CollectionCheckStrategy.ALL_ITEMS # type:ignore
422
+ typeguard.check_type(value=value, expected_type=expected_type) # type:ignore
423
+ else:
424
+ typeguard.check_type(value=value, expected_type=expected_type, collection_check_strategy=typeguard.CollectionCheckStrategy.ALL_ITEMS) # type:ignore
345
425
 
346
426
  from ._jsii import *
347
427
 
@@ -401,7 +481,7 @@ class AmiBuilderProps:
401
481
 
402
482
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
403
483
  :param install_docker: (experimental) Install Docker inside the image, so it can be used by the runner. Default: true
404
- :param instance_type: (experimental) The instance type used to build the image. Default: m5.large
484
+ :param instance_type: (experimental) The instance type used to build the image. Default: m6i.large
405
485
  :param log_removal_policy: (experimental) Removal policy for logs of image builds. If deployment fails on the custom resource, try setting this to ``RemovalPolicy.RETAIN``. This way the logs can still be viewed, and you can see why the build failed. We try to not leave anything behind when removed. But sometimes a log staying behind is useful. Default: RemovalPolicy.DESTROY
406
486
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
407
487
  :param os: (experimental) Image OS. Default: OS.LINUX
@@ -482,7 +562,7 @@ class AmiBuilderProps:
482
562
  def instance_type(self) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType]:
483
563
  '''(experimental) The instance type used to build the image.
484
564
 
485
- :default: m5.large
565
+ :default: m6i.large
486
566
 
487
567
  :stability: experimental
488
568
  '''
@@ -815,6 +895,7 @@ class Architecture(
815
895
  name_mapping={
816
896
  "fast_launch_options": "fastLaunchOptions",
817
897
  "instance_type": "instanceType",
898
+ "storage_size": "storageSize",
818
899
  },
819
900
  )
820
901
  class AwsImageBuilderRunnerImageBuilderProps:
@@ -823,10 +904,12 @@ class AwsImageBuilderRunnerImageBuilderProps:
823
904
  *,
824
905
  fast_launch_options: typing.Optional[typing.Union["FastLaunchOptions", typing.Dict[builtins.str, typing.Any]]] = None,
825
906
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
907
+ storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
826
908
  ) -> None:
827
909
  '''
828
910
  :param fast_launch_options: (experimental) Options for fast launch. This is only supported for Windows AMIs. Default: disabled
829
- :param instance_type: (experimental) The instance type used to build the image. Default: m5.large
911
+ :param instance_type: (experimental) The instance type used to build the image. Default: m6i.large
912
+ :param storage_size: (experimental) Size of volume available for builder instances. This modifies the boot volume size and doesn't add any additional volumes. Use this if you're building images with big components and need more space. Default: default size for AMI (usually 30GB for Linux and 50GB for Windows)
830
913
 
831
914
  :stability: experimental
832
915
  '''
@@ -836,11 +919,14 @@ class AwsImageBuilderRunnerImageBuilderProps:
836
919
  type_hints = typing.get_type_hints(_typecheckingstub__fe17585d38b67015c3f03db2aefab095f171e0e0900c9a4564679bbc5a29fd07)
837
920
  check_type(argname="argument fast_launch_options", value=fast_launch_options, expected_type=type_hints["fast_launch_options"])
838
921
  check_type(argname="argument instance_type", value=instance_type, expected_type=type_hints["instance_type"])
922
+ check_type(argname="argument storage_size", value=storage_size, expected_type=type_hints["storage_size"])
839
923
  self._values: typing.Dict[builtins.str, typing.Any] = {}
840
924
  if fast_launch_options is not None:
841
925
  self._values["fast_launch_options"] = fast_launch_options
842
926
  if instance_type is not None:
843
927
  self._values["instance_type"] = instance_type
928
+ if storage_size is not None:
929
+ self._values["storage_size"] = storage_size
844
930
 
845
931
  @builtins.property
846
932
  def fast_launch_options(self) -> typing.Optional["FastLaunchOptions"]:
@@ -859,13 +945,26 @@ class AwsImageBuilderRunnerImageBuilderProps:
859
945
  def instance_type(self) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType]:
860
946
  '''(experimental) The instance type used to build the image.
861
947
 
862
- :default: m5.large
948
+ :default: m6i.large
863
949
 
864
950
  :stability: experimental
865
951
  '''
866
952
  result = self._values.get("instance_type")
867
953
  return typing.cast(typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType], result)
868
954
 
955
+ @builtins.property
956
+ def storage_size(self) -> typing.Optional[_aws_cdk_ceddda9d.Size]:
957
+ '''(experimental) Size of volume available for builder instances. This modifies the boot volume size and doesn't add any additional volumes.
958
+
959
+ Use this if you're building images with big components and need more space.
960
+
961
+ :default: default size for AMI (usually 30GB for Linux and 50GB for Windows)
962
+
963
+ :stability: experimental
964
+ '''
965
+ result = self._values.get("storage_size")
966
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Size], result)
967
+
869
968
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
870
969
  return isinstance(rhs, self.__class__) and rhs._values == self._values
871
970
 
@@ -1298,7 +1397,7 @@ class ContainerImageBuilderProps:
1298
1397
  '''(experimental) Properties for ContainerImageBuilder construct.
1299
1398
 
1300
1399
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
1301
- :param instance_type: (experimental) The instance type used to build the image. Default: m5.large
1400
+ :param instance_type: (experimental) The instance type used to build the image. Default: m6i.large
1302
1401
  :param log_removal_policy: (experimental) Removal policy for logs of image builds. If deployment fails on the custom resource, try setting this to ``RemovalPolicy.RETAIN``. This way the CodeBuild logs can still be viewed, and you can see why the build failed. We try to not leave anything behind when removed. But sometimes a log staying behind is useful. Default: RemovalPolicy.DESTROY
1303
1402
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
1304
1403
  :param os: (experimental) Image OS. Default: OS.LINUX
@@ -1369,7 +1468,7 @@ class ContainerImageBuilderProps:
1369
1468
  def instance_type(self) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType]:
1370
1469
  '''(experimental) The instance type used to build the image.
1371
1470
 
1372
- :default: m5.large
1471
+ :default: m6i.large
1373
1472
 
1374
1473
  :stability: experimental
1375
1474
  '''
@@ -3396,6 +3495,7 @@ class LambdaRunnerProvider(
3396
3495
  id: builtins.str,
3397
3496
  *,
3398
3497
  ephemeral_storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
3498
+ group: typing.Optional[builtins.str] = None,
3399
3499
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
3400
3500
  label: typing.Optional[builtins.str] = None,
3401
3501
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -3405,6 +3505,7 @@ class LambdaRunnerProvider(
3405
3505
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
3406
3506
  timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3407
3507
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
3508
+ default_labels: typing.Optional[builtins.bool] = None,
3408
3509
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
3409
3510
  retry_options: typing.Optional[typing.Union["ProviderRetryOptions", typing.Dict[builtins.str, typing.Any]]] = None,
3410
3511
  ) -> None:
@@ -3412,6 +3513,7 @@ class LambdaRunnerProvider(
3412
3513
  :param scope: -
3413
3514
  :param id: -
3414
3515
  :param ephemeral_storage_size: (experimental) The size of the function’s /tmp directory in MiB. Default: 10 GiB
3516
+ :param group: (experimental) GitHub Actions runner group name. If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It requires a paid GitHub account. The group must exist or the runner will not start. Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group. Default: undefined
3415
3517
  :param image_builder: (experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements. The image builder must contain the {@link RunnerImageComponent.lambdaEntrypoint} component. The image builder determines the OS and architecture of the runner. Default: LambdaRunnerProvider.imageBuilder()
3416
3518
  :param label: (deprecated) GitHub Actions label used for this provider. Default: undefined
3417
3519
  :param labels: (experimental) GitHub Actions labels used for this provider. 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 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 job's labels, this provider will be chosen and spawn a new runner. Default: ['lambda']
@@ -3421,6 +3523,7 @@ class LambdaRunnerProvider(
3421
3523
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
3422
3524
  :param timeout: (experimental) The function execution time (in seconds) after which Lambda terminates the function. Because the execution time affects cost, set this value based on the function's expected execution time. Default: Duration.minutes(15)
3423
3525
  :param vpc: (experimental) VPC to launch the runners in. Default: no VPC
3526
+ :param default_labels: (experimental) Add default labels based on OS and architecture of the runner. This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``. Default: true
3424
3527
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
3425
3528
  :param retry_options:
3426
3529
 
@@ -3432,6 +3535,7 @@ class LambdaRunnerProvider(
3432
3535
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
3433
3536
  props = LambdaRunnerProviderProps(
3434
3537
  ephemeral_storage_size=ephemeral_storage_size,
3538
+ group=group,
3435
3539
  image_builder=image_builder,
3436
3540
  label=label,
3437
3541
  labels=labels,
@@ -3441,6 +3545,7 @@ class LambdaRunnerProvider(
3441
3545
  subnet_selection=subnet_selection,
3442
3546
  timeout=timeout,
3443
3547
  vpc=vpc,
3548
+ default_labels=default_labels,
3444
3549
  log_retention=log_retention,
3445
3550
  retry_options=retry_options,
3446
3551
  )
@@ -3478,7 +3583,7 @@ class LambdaRunnerProvider(
3478
3583
 
3479
3584
  You can add components to the image builder by calling ``imageBuilder.addComponent()``.
3480
3585
 
3481
- The default OS is Amazon Linux 2 running on x64 architecture.
3586
+ The default OS is Amazon Linux 2023 running on x64 architecture.
3482
3587
 
3483
3588
  Included components:
3484
3589
 
@@ -3490,14 +3595,12 @@ class LambdaRunnerProvider(
3490
3595
  - ``RunnerImageComponent.githubRunner()``
3491
3596
  - ``RunnerImageComponent.lambdaEntrypoint()``
3492
3597
 
3493
- Base Docker image: ``public.ecr.aws/lambda/nodejs:20-x86_64`` or ``public.ecr.aws/lambda/nodejs:20-arm64``
3494
-
3495
3598
  :param scope: -
3496
3599
  :param id: -
3497
3600
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
3498
3601
  :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
3499
- :param base_ami: (experimental) Base AMI from which runner AMIs will be built. This can be an actual AMI or an AWS Image Builder ARN that points to the latest AMI. For example ``arn:aws:imagebuilder:us-east-1:aws:image/ubuntu-server-22-lts-x86/x.x.x`` would always use the latest version of Ubuntu 22.04 in each build. If you want a specific version, you can replace ``x.x.x`` with that version. Default: latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
3500
- :param base_docker_image: (experimental) Base image from which Docker runner images will be built. When using private images from a different account or not on ECR, you may need to include additional setup commands with {@link dockerSetupCommands}. Default: public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
3602
+ :param base_ami: (experimental) Base AMI from which runner AMIs will be built. This can be an actual AMI or an AWS Image Builder ARN that points to the latest AMI. For example ``arn:aws:imagebuilder:us-east-1:aws:image/ubuntu-server-22-lts-x86/x.x.x`` would always use the latest version of Ubuntu 22.04 in each build. If you want a specific version, you can replace ``x.x.x`` with that version. Default: latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, Ubuntu 24.04 AMI for Os.LINUX_UBUNTU_2404, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
3603
+ :param base_docker_image: (experimental) Base image from which Docker runner images will be built. When using private images from a different account or not on ECR, you may need to include additional setup commands with {@link dockerSetupCommands}. Default: public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, public.ecr.aws/lts/ubuntu:24.04 for Os.LINUX_UBUNTU_2404, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
3501
3604
  :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
3502
3605
  :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
3503
3606
  :param components: (experimental) Components to install on the image. Default: none
@@ -4074,7 +4177,7 @@ class Os(metaclass=jsii.JSIIMeta, jsii_type="@cloudsnorkel/cdk-github-runners.Os
4074
4177
  def LINUX(cls) -> "Os":
4075
4178
  '''(deprecated) Linux.
4076
4179
 
4077
- :deprecated: use {@link LINUX_UBUNTU } or {@link LINUX_AMAZON_2 } or {@link LINUX_AMAZON_2023 }
4180
+ :deprecated: use {@link LINUX_UBUNTU }, {@link LINUX_UBUNTU_2404 }, {@link LINUX_AMAZON_2 } or {@link LINUX_AMAZON_2023 }
4078
4181
 
4079
4182
  :stability: deprecated
4080
4183
  '''
@@ -4107,6 +4210,24 @@ class Os(metaclass=jsii.JSIIMeta, jsii_type="@cloudsnorkel/cdk-github-runners.Os
4107
4210
  '''
4108
4211
  return typing.cast("Os", jsii.sget(cls, "LINUX_UBUNTU"))
4109
4212
 
4213
+ @jsii.python.classproperty
4214
+ @jsii.member(jsii_name="LINUX_UBUNTU_2204")
4215
+ def LINUX_UBUNTU_2204(cls) -> "Os":
4216
+ '''(experimental) Ubuntu Linux 22.04.
4217
+
4218
+ :stability: experimental
4219
+ '''
4220
+ return typing.cast("Os", jsii.sget(cls, "LINUX_UBUNTU_2204"))
4221
+
4222
+ @jsii.python.classproperty
4223
+ @jsii.member(jsii_name="LINUX_UBUNTU_2404")
4224
+ def LINUX_UBUNTU_2404(cls) -> "Os":
4225
+ '''(experimental) Ubuntu Linux 24.04.
4226
+
4227
+ :stability: experimental
4228
+ '''
4229
+ return typing.cast("Os", jsii.sget(cls, "LINUX_UBUNTU_2404"))
4230
+
4110
4231
  @jsii.python.classproperty
4111
4232
  @jsii.member(jsii_name="WINDOWS")
4112
4233
  def WINDOWS(cls) -> "Os":
@@ -4571,8 +4692,8 @@ class RunnerImageBuilderProps:
4571
4692
  '''
4572
4693
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
4573
4694
  :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
4574
- :param base_ami: (experimental) Base AMI from which runner AMIs will be built. This can be an actual AMI or an AWS Image Builder ARN that points to the latest AMI. For example ``arn:aws:imagebuilder:us-east-1:aws:image/ubuntu-server-22-lts-x86/x.x.x`` would always use the latest version of Ubuntu 22.04 in each build. If you want a specific version, you can replace ``x.x.x`` with that version. Default: latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
4575
- :param base_docker_image: (experimental) Base image from which Docker runner images will be built. When using private images from a different account or not on ECR, you may need to include additional setup commands with {@link dockerSetupCommands}. Default: public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
4695
+ :param base_ami: (experimental) Base AMI from which runner AMIs will be built. This can be an actual AMI or an AWS Image Builder ARN that points to the latest AMI. For example ``arn:aws:imagebuilder:us-east-1:aws:image/ubuntu-server-22-lts-x86/x.x.x`` would always use the latest version of Ubuntu 22.04 in each build. If you want a specific version, you can replace ``x.x.x`` with that version. Default: latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, Ubuntu 24.04 AMI for Os.LINUX_UBUNTU_2404, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
4696
+ :param base_docker_image: (experimental) Base image from which Docker runner images will be built. When using private images from a different account or not on ECR, you may need to include additional setup commands with {@link dockerSetupCommands}. Default: public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, public.ecr.aws/lts/ubuntu:24.04 for Os.LINUX_UBUNTU_2404, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
4576
4697
  :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
4577
4698
  :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
4578
4699
  :param components: (experimental) Components to install on the image. Default: none
@@ -4680,7 +4801,7 @@ class RunnerImageBuilderProps:
4680
4801
 
4681
4802
  This can be an actual AMI or an AWS Image Builder ARN that points to the latest AMI. For example ``arn:aws:imagebuilder:us-east-1:aws:image/ubuntu-server-22-lts-x86/x.x.x`` would always use the latest version of Ubuntu 22.04 in each build. If you want a specific version, you can replace ``x.x.x`` with that version.
4682
4803
 
4683
- :default: latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
4804
+ :default: latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, Ubuntu 24.04 AMI for Os.LINUX_UBUNTU_2404, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
4684
4805
 
4685
4806
  :stability: experimental
4686
4807
  '''
@@ -4693,7 +4814,7 @@ class RunnerImageBuilderProps:
4693
4814
 
4694
4815
  When using private images from a different account or not on ECR, you may need to include additional setup commands with {@link dockerSetupCommands}.
4695
4816
 
4696
- :default: public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
4817
+ :default: public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, public.ecr.aws/lts/ubuntu:24.04 for Os.LINUX_UBUNTU_2404, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
4697
4818
 
4698
4819
  :stability: experimental
4699
4820
  '''
@@ -4926,6 +5047,15 @@ class RunnerImageComponent(
4926
5047
  '''
4927
5048
  return typing.cast("RunnerImageComponent", jsii.sinvoke(cls, "awsCli", []))
4928
5049
 
5050
+ @jsii.member(jsii_name="cloudWatchAgent")
5051
+ @builtins.classmethod
5052
+ def cloud_watch_agent(cls) -> "RunnerImageComponent":
5053
+ '''(experimental) A component to install CloudWatch Agent for the runner so we can send logs.
5054
+
5055
+ :stability: experimental
5056
+ '''
5057
+ return typing.cast("RunnerImageComponent", jsii.sinvoke(cls, "cloudWatchAgent", []))
5058
+
4929
5059
  @jsii.member(jsii_name="custom")
4930
5060
  @builtins.classmethod
4931
5061
  def custom(
@@ -5315,17 +5445,23 @@ class RunnerImageComponentCustomProps:
5315
5445
  @jsii.data_type(
5316
5446
  jsii_type="@cloudsnorkel/cdk-github-runners.RunnerProviderProps",
5317
5447
  jsii_struct_bases=[],
5318
- name_mapping={"log_retention": "logRetention", "retry_options": "retryOptions"},
5448
+ name_mapping={
5449
+ "default_labels": "defaultLabels",
5450
+ "log_retention": "logRetention",
5451
+ "retry_options": "retryOptions",
5452
+ },
5319
5453
  )
5320
5454
  class RunnerProviderProps:
5321
5455
  def __init__(
5322
5456
  self,
5323
5457
  *,
5458
+ default_labels: typing.Optional[builtins.bool] = None,
5324
5459
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
5325
5460
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
5326
5461
  ) -> None:
5327
5462
  '''(experimental) Common properties for all runner providers.
5328
5463
 
5464
+ :param default_labels: (experimental) Add default labels based on OS and architecture of the runner. This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``. Default: true
5329
5465
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
5330
5466
  :param retry_options:
5331
5467
 
@@ -5335,14 +5471,30 @@ class RunnerProviderProps:
5335
5471
  retry_options = ProviderRetryOptions(**retry_options)
5336
5472
  if __debug__:
5337
5473
  type_hints = typing.get_type_hints(_typecheckingstub__faa1323116edff475c54eafc82f7af57dd73527c022a54b6210c5a490a80a1d3)
5474
+ check_type(argname="argument default_labels", value=default_labels, expected_type=type_hints["default_labels"])
5338
5475
  check_type(argname="argument log_retention", value=log_retention, expected_type=type_hints["log_retention"])
5339
5476
  check_type(argname="argument retry_options", value=retry_options, expected_type=type_hints["retry_options"])
5340
5477
  self._values: typing.Dict[builtins.str, typing.Any] = {}
5478
+ if default_labels is not None:
5479
+ self._values["default_labels"] = default_labels
5341
5480
  if log_retention is not None:
5342
5481
  self._values["log_retention"] = log_retention
5343
5482
  if retry_options is not None:
5344
5483
  self._values["retry_options"] = retry_options
5345
5484
 
5485
+ @builtins.property
5486
+ def default_labels(self) -> typing.Optional[builtins.bool]:
5487
+ '''(experimental) Add default labels based on OS and architecture of the runner.
5488
+
5489
+ This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``.
5490
+
5491
+ :default: true
5492
+
5493
+ :stability: experimental
5494
+ '''
5495
+ result = self._values.get("default_labels")
5496
+ return typing.cast(typing.Optional[builtins.bool], result)
5497
+
5346
5498
  @builtins.property
5347
5499
  def log_retention(
5348
5500
  self,
@@ -5727,6 +5879,99 @@ class StaticRunnerImage(
5727
5879
  return typing.cast(IRunnerImageBuilder, jsii.sinvoke(cls, "fromEcrRepository", [repository, tag, architecture, os]))
5728
5880
 
5729
5881
 
5882
+ @jsii.data_type(
5883
+ jsii_type="@cloudsnorkel/cdk-github-runners.StorageOptions",
5884
+ jsii_struct_bases=[],
5885
+ name_mapping={
5886
+ "iops": "iops",
5887
+ "throughput": "throughput",
5888
+ "volume_type": "volumeType",
5889
+ },
5890
+ )
5891
+ class StorageOptions:
5892
+ def __init__(
5893
+ self,
5894
+ *,
5895
+ iops: typing.Optional[jsii.Number] = None,
5896
+ throughput: typing.Optional[jsii.Number] = None,
5897
+ volume_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.EbsDeviceVolumeType] = None,
5898
+ ) -> None:
5899
+ '''(experimental) Storage options for the runner instance.
5900
+
5901
+ :param iops: (experimental) The number of I/O operations per second (IOPS) to provision for the volume. Must only be set for ``volumeType``: ``EbsDeviceVolumeType.IO1`` The maximum ratio of IOPS to volume size (in GiB) is 50:1, so for 5,000 provisioned IOPS, you need at least 100 GiB storage on the volume. Default: - none, required for ``EbsDeviceVolumeType.IO1``
5902
+ :param throughput: (experimental) The throughput that the volume supports, in MiB/s Takes a minimum of 125 and maximum of 1000. Default: - 125 MiB/s. Only valid on gp3 volumes.
5903
+ :param volume_type: (experimental) The EBS volume type. Default: ``EbsDeviceVolumeType.GP2``
5904
+
5905
+ :stability: experimental
5906
+ '''
5907
+ if __debug__:
5908
+ type_hints = typing.get_type_hints(_typecheckingstub__ec3b766929d3a048d89c7dc502f77bbbfc7357735093ebc66695a13b92f9bf82)
5909
+ check_type(argname="argument iops", value=iops, expected_type=type_hints["iops"])
5910
+ check_type(argname="argument throughput", value=throughput, expected_type=type_hints["throughput"])
5911
+ check_type(argname="argument volume_type", value=volume_type, expected_type=type_hints["volume_type"])
5912
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
5913
+ if iops is not None:
5914
+ self._values["iops"] = iops
5915
+ if throughput is not None:
5916
+ self._values["throughput"] = throughput
5917
+ if volume_type is not None:
5918
+ self._values["volume_type"] = volume_type
5919
+
5920
+ @builtins.property
5921
+ def iops(self) -> typing.Optional[jsii.Number]:
5922
+ '''(experimental) The number of I/O operations per second (IOPS) to provision for the volume.
5923
+
5924
+ Must only be set for ``volumeType``: ``EbsDeviceVolumeType.IO1``
5925
+
5926
+ The maximum ratio of IOPS to volume size (in GiB) is 50:1, so for 5,000 provisioned IOPS,
5927
+ you need at least 100 GiB storage on the volume.
5928
+
5929
+ :default: - none, required for ``EbsDeviceVolumeType.IO1``
5930
+
5931
+ :see: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html
5932
+ :stability: experimental
5933
+ '''
5934
+ result = self._values.get("iops")
5935
+ return typing.cast(typing.Optional[jsii.Number], result)
5936
+
5937
+ @builtins.property
5938
+ def throughput(self) -> typing.Optional[jsii.Number]:
5939
+ '''(experimental) The throughput that the volume supports, in MiB/s Takes a minimum of 125 and maximum of 1000.
5940
+
5941
+ :default: - 125 MiB/s. Only valid on gp3 volumes.
5942
+
5943
+ :see: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-volume.html#cfn-ec2-volume-throughput
5944
+ :stability: experimental
5945
+ '''
5946
+ result = self._values.get("throughput")
5947
+ return typing.cast(typing.Optional[jsii.Number], result)
5948
+
5949
+ @builtins.property
5950
+ def volume_type(
5951
+ self,
5952
+ ) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.EbsDeviceVolumeType]:
5953
+ '''(experimental) The EBS volume type.
5954
+
5955
+ :default: ``EbsDeviceVolumeType.GP2``
5956
+
5957
+ :see: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html
5958
+ :stability: experimental
5959
+ '''
5960
+ result = self._values.get("volume_type")
5961
+ return typing.cast(typing.Optional[_aws_cdk_aws_ec2_ceddda9d.EbsDeviceVolumeType], result)
5962
+
5963
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
5964
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
5965
+
5966
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
5967
+ return not (rhs == self)
5968
+
5969
+ def __repr__(self) -> str:
5970
+ return "StorageOptions(%s)" % ", ".join(
5971
+ k + "=" + repr(v) for k, v in self._values.items()
5972
+ )
5973
+
5974
+
5730
5975
  class WindowsComponents(
5731
5976
  metaclass=jsii.JSIIMeta,
5732
5977
  jsii_type="@cloudsnorkel/cdk-github-runners.WindowsComponents",
@@ -5894,7 +6139,7 @@ class AmiBuilder(
5894
6139
  ):
5895
6140
  '''(deprecated) An AMI builder that uses AWS Image Builder to build AMIs pre-baked with all the GitHub Actions runner requirements.
5896
6141
 
5897
- Builders can be used with {@link Ec2Runner }.
6142
+ Builders can be used with {@link Ec2RunnerProvider }.
5898
6143
 
5899
6144
  Each builder re-runs automatically at a set interval to make sure the AMIs contain the latest versions of everything.
5900
6145
 
@@ -5919,7 +6164,7 @@ class AmiBuilder(
5919
6164
  amiBuilder: builder,
5920
6165
  });
5921
6166
 
5922
- :deprecated: use RunnerImageBuilder
6167
+ :deprecated: use RunnerImageBuilder, e.g. with Ec2RunnerProvider.imageBuilder()
5923
6168
 
5924
6169
  :stability: deprecated
5925
6170
  '''
@@ -5947,7 +6192,7 @@ class AmiBuilder(
5947
6192
  :param id: -
5948
6193
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
5949
6194
  :param install_docker: (experimental) Install Docker inside the image, so it can be used by the runner. Default: true
5950
- :param instance_type: (experimental) The instance type used to build the image. Default: m5.large
6195
+ :param instance_type: (experimental) The instance type used to build the image. Default: m6i.large
5951
6196
  :param log_removal_policy: (experimental) Removal policy for logs of image builds. If deployment fails on the custom resource, try setting this to ``RemovalPolicy.RETAIN``. This way the logs can still be viewed, and you can see why the build failed. We try to not leave anything behind when removed. But sometimes a log staying behind is useful. Default: RemovalPolicy.DESTROY
5952
6197
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
5953
6198
  :param os: (experimental) Image OS. Default: OS.LINUX
@@ -6192,7 +6437,7 @@ class AmiBuilder(
6192
6437
  if __debug__:
6193
6438
  type_hints = typing.get_type_hints(_typecheckingstub__8088868062a70621aab7b900883cf52d9c930de8a458039564d69a7d0cc80f52)
6194
6439
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
6195
- jsii.set(self, "components", value)
6440
+ jsii.set(self, "components", value) # pyright: ignore[reportArgumentType]
6196
6441
 
6197
6442
 
6198
6443
  @jsii.implements(IRunnerImageBuilder)
@@ -6435,6 +6680,7 @@ class CodeBuildRunnerProvider(
6435
6680
  *,
6436
6681
  compute_type: typing.Optional[_aws_cdk_aws_codebuild_ceddda9d.ComputeType] = None,
6437
6682
  docker_in_docker: typing.Optional[builtins.bool] = None,
6683
+ group: typing.Optional[builtins.str] = None,
6438
6684
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
6439
6685
  label: typing.Optional[builtins.str] = None,
6440
6686
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -6443,6 +6689,7 @@ class CodeBuildRunnerProvider(
6443
6689
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
6444
6690
  timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
6445
6691
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
6692
+ default_labels: typing.Optional[builtins.bool] = None,
6446
6693
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
6447
6694
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
6448
6695
  ) -> None:
@@ -6451,6 +6698,7 @@ class CodeBuildRunnerProvider(
6451
6698
  :param id: -
6452
6699
  :param compute_type: (experimental) The type of compute to use for this build. See the {@link ComputeType} enum for the possible values. Default: {@link ComputeType#SMALL }
6453
6700
  :param docker_in_docker: (experimental) Support building and running Docker images by enabling Docker-in-Docker (dind) and the required CodeBuild privileged mode. Disabling this can speed up provisioning of CodeBuild runners. If you don't intend on running or building Docker images, disable this for faster start-up times. Default: true
6701
+ :param group: (experimental) GitHub Actions runner group name. If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It requires a paid GitHub account. The group must exist or the runner will not start. Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group. Default: undefined
6454
6702
  :param image_builder: (experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements. The image builder must contain the {@link RunnerImageComponent.docker} component unless ``dockerInDocker`` is set to false. The image builder determines the OS and architecture of the runner. Default: CodeBuildRunnerProvider.imageBuilder()
6455
6703
  :param label: (deprecated) GitHub Actions label used for this provider. Default: undefined
6456
6704
  :param labels: (experimental) GitHub Actions labels used for this provider. 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 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 job's labels, this provider will be chosen and spawn a new runner. Default: ['codebuild']
@@ -6459,6 +6707,7 @@ class CodeBuildRunnerProvider(
6459
6707
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
6460
6708
  :param timeout: (experimental) The number of minutes after which AWS CodeBuild stops the build if it's not complete. For valid values, see the timeoutInMinutes field in the AWS CodeBuild User Guide. Default: Duration.hours(1)
6461
6709
  :param vpc: (experimental) VPC to launch the runners in. Default: no VPC
6710
+ :param default_labels: (experimental) Add default labels based on OS and architecture of the runner. This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``. Default: true
6462
6711
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
6463
6712
  :param retry_options:
6464
6713
 
@@ -6471,6 +6720,7 @@ class CodeBuildRunnerProvider(
6471
6720
  props = CodeBuildRunnerProviderProps(
6472
6721
  compute_type=compute_type,
6473
6722
  docker_in_docker=docker_in_docker,
6723
+ group=group,
6474
6724
  image_builder=image_builder,
6475
6725
  label=label,
6476
6726
  labels=labels,
@@ -6479,6 +6729,7 @@ class CodeBuildRunnerProvider(
6479
6729
  subnet_selection=subnet_selection,
6480
6730
  timeout=timeout,
6481
6731
  vpc=vpc,
6732
+ default_labels=default_labels,
6482
6733
  log_retention=log_retention,
6483
6734
  retry_options=retry_options,
6484
6735
  )
@@ -6532,8 +6783,8 @@ class CodeBuildRunnerProvider(
6532
6783
  :param id: -
6533
6784
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
6534
6785
  :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
6535
- :param base_ami: (experimental) Base AMI from which runner AMIs will be built. This can be an actual AMI or an AWS Image Builder ARN that points to the latest AMI. For example ``arn:aws:imagebuilder:us-east-1:aws:image/ubuntu-server-22-lts-x86/x.x.x`` would always use the latest version of Ubuntu 22.04 in each build. If you want a specific version, you can replace ``x.x.x`` with that version. Default: latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
6536
- :param base_docker_image: (experimental) Base image from which Docker runner images will be built. When using private images from a different account or not on ECR, you may need to include additional setup commands with {@link dockerSetupCommands}. Default: public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
6786
+ :param base_ami: (experimental) Base AMI from which runner AMIs will be built. This can be an actual AMI or an AWS Image Builder ARN that points to the latest AMI. For example ``arn:aws:imagebuilder:us-east-1:aws:image/ubuntu-server-22-lts-x86/x.x.x`` would always use the latest version of Ubuntu 22.04 in each build. If you want a specific version, you can replace ``x.x.x`` with that version. Default: latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, Ubuntu 24.04 AMI for Os.LINUX_UBUNTU_2404, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
6787
+ :param base_docker_image: (experimental) Base image from which Docker runner images will be built. When using private images from a different account or not on ECR, you may need to include additional setup commands with {@link dockerSetupCommands}. Default: public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, public.ecr.aws/lts/ubuntu:24.04 for Os.LINUX_UBUNTU_2404, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
6537
6788
  :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
6538
6789
  :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
6539
6790
  :param components: (experimental) Components to install on the image. Default: none
@@ -6782,10 +7033,12 @@ class CodeBuildRunnerProvider(
6782
7033
  jsii_type="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps",
6783
7034
  jsii_struct_bases=[RunnerProviderProps],
6784
7035
  name_mapping={
7036
+ "default_labels": "defaultLabels",
6785
7037
  "log_retention": "logRetention",
6786
7038
  "retry_options": "retryOptions",
6787
7039
  "compute_type": "computeType",
6788
7040
  "docker_in_docker": "dockerInDocker",
7041
+ "group": "group",
6789
7042
  "image_builder": "imageBuilder",
6790
7043
  "label": "label",
6791
7044
  "labels": "labels",
@@ -6800,10 +7053,12 @@ class CodeBuildRunnerProviderProps(RunnerProviderProps):
6800
7053
  def __init__(
6801
7054
  self,
6802
7055
  *,
7056
+ default_labels: typing.Optional[builtins.bool] = None,
6803
7057
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
6804
7058
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
6805
7059
  compute_type: typing.Optional[_aws_cdk_aws_codebuild_ceddda9d.ComputeType] = None,
6806
7060
  docker_in_docker: typing.Optional[builtins.bool] = None,
7061
+ group: typing.Optional[builtins.str] = None,
6807
7062
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
6808
7063
  label: typing.Optional[builtins.str] = None,
6809
7064
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -6814,10 +7069,12 @@ class CodeBuildRunnerProviderProps(RunnerProviderProps):
6814
7069
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
6815
7070
  ) -> None:
6816
7071
  '''
7072
+ :param default_labels: (experimental) Add default labels based on OS and architecture of the runner. This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``. Default: true
6817
7073
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
6818
7074
  :param retry_options:
6819
7075
  :param compute_type: (experimental) The type of compute to use for this build. See the {@link ComputeType} enum for the possible values. Default: {@link ComputeType#SMALL }
6820
7076
  :param docker_in_docker: (experimental) Support building and running Docker images by enabling Docker-in-Docker (dind) and the required CodeBuild privileged mode. Disabling this can speed up provisioning of CodeBuild runners. If you don't intend on running or building Docker images, disable this for faster start-up times. Default: true
7077
+ :param group: (experimental) GitHub Actions runner group name. If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It requires a paid GitHub account. The group must exist or the runner will not start. Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group. Default: undefined
6821
7078
  :param image_builder: (experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements. The image builder must contain the {@link RunnerImageComponent.docker} component unless ``dockerInDocker`` is set to false. The image builder determines the OS and architecture of the runner. Default: CodeBuildRunnerProvider.imageBuilder()
6822
7079
  :param label: (deprecated) GitHub Actions label used for this provider. Default: undefined
6823
7080
  :param labels: (experimental) GitHub Actions labels used for this provider. 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 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 job's labels, this provider will be chosen and spawn a new runner. Default: ['codebuild']
@@ -6835,10 +7092,12 @@ class CodeBuildRunnerProviderProps(RunnerProviderProps):
6835
7092
  subnet_selection = _aws_cdk_aws_ec2_ceddda9d.SubnetSelection(**subnet_selection)
6836
7093
  if __debug__:
6837
7094
  type_hints = typing.get_type_hints(_typecheckingstub__9377dcf4cd4dae74730635bdaf02246acb473843cea2856cf9a64295df964eb6)
7095
+ check_type(argname="argument default_labels", value=default_labels, expected_type=type_hints["default_labels"])
6838
7096
  check_type(argname="argument log_retention", value=log_retention, expected_type=type_hints["log_retention"])
6839
7097
  check_type(argname="argument retry_options", value=retry_options, expected_type=type_hints["retry_options"])
6840
7098
  check_type(argname="argument compute_type", value=compute_type, expected_type=type_hints["compute_type"])
6841
7099
  check_type(argname="argument docker_in_docker", value=docker_in_docker, expected_type=type_hints["docker_in_docker"])
7100
+ check_type(argname="argument group", value=group, expected_type=type_hints["group"])
6842
7101
  check_type(argname="argument image_builder", value=image_builder, expected_type=type_hints["image_builder"])
6843
7102
  check_type(argname="argument label", value=label, expected_type=type_hints["label"])
6844
7103
  check_type(argname="argument labels", value=labels, expected_type=type_hints["labels"])
@@ -6848,6 +7107,8 @@ class CodeBuildRunnerProviderProps(RunnerProviderProps):
6848
7107
  check_type(argname="argument timeout", value=timeout, expected_type=type_hints["timeout"])
6849
7108
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
6850
7109
  self._values: typing.Dict[builtins.str, typing.Any] = {}
7110
+ if default_labels is not None:
7111
+ self._values["default_labels"] = default_labels
6851
7112
  if log_retention is not None:
6852
7113
  self._values["log_retention"] = log_retention
6853
7114
  if retry_options is not None:
@@ -6856,6 +7117,8 @@ class CodeBuildRunnerProviderProps(RunnerProviderProps):
6856
7117
  self._values["compute_type"] = compute_type
6857
7118
  if docker_in_docker is not None:
6858
7119
  self._values["docker_in_docker"] = docker_in_docker
7120
+ if group is not None:
7121
+ self._values["group"] = group
6859
7122
  if image_builder is not None:
6860
7123
  self._values["image_builder"] = image_builder
6861
7124
  if label is not None:
@@ -6873,6 +7136,19 @@ class CodeBuildRunnerProviderProps(RunnerProviderProps):
6873
7136
  if vpc is not None:
6874
7137
  self._values["vpc"] = vpc
6875
7138
 
7139
+ @builtins.property
7140
+ def default_labels(self) -> typing.Optional[builtins.bool]:
7141
+ '''(experimental) Add default labels based on OS and architecture of the runner.
7142
+
7143
+ This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``.
7144
+
7145
+ :default: true
7146
+
7147
+ :stability: experimental
7148
+ '''
7149
+ result = self._values.get("default_labels")
7150
+ return typing.cast(typing.Optional[builtins.bool], result)
7151
+
6876
7152
  @builtins.property
6877
7153
  def log_retention(
6878
7154
  self,
@@ -6929,6 +7205,24 @@ class CodeBuildRunnerProviderProps(RunnerProviderProps):
6929
7205
  result = self._values.get("docker_in_docker")
6930
7206
  return typing.cast(typing.Optional[builtins.bool], result)
6931
7207
 
7208
+ @builtins.property
7209
+ def group(self) -> typing.Optional[builtins.str]:
7210
+ '''(experimental) GitHub Actions runner group name.
7211
+
7212
+ If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It
7213
+ requires a paid GitHub account.
7214
+
7215
+ The group must exist or the runner will not start.
7216
+
7217
+ Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group.
7218
+
7219
+ :default: undefined
7220
+
7221
+ :stability: experimental
7222
+ '''
7223
+ result = self._values.get("group")
7224
+ return typing.cast(typing.Optional[builtins.str], result)
7225
+
6932
7226
  @builtins.property
6933
7227
  def image_builder(self) -> typing.Optional[IRunnerImageBuilder]:
6934
7228
  '''(experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements.
@@ -7104,7 +7398,7 @@ class ContainerImageBuilder(
7104
7398
  :param scope: -
7105
7399
  :param id: -
7106
7400
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
7107
- :param instance_type: (experimental) The instance type used to build the image. Default: m5.large
7401
+ :param instance_type: (experimental) The instance type used to build the image. Default: m6i.large
7108
7402
  :param log_removal_policy: (experimental) Removal policy for logs of image builds. If deployment fails on the custom resource, try setting this to ``RemovalPolicy.RETAIN``. This way the CodeBuild logs can still be viewed, and you can see why the build failed. We try to not leave anything behind when removed. But sometimes a log staying behind is useful. Default: RemovalPolicy.DESTROY
7109
7403
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
7110
7404
  :param os: (experimental) Image OS. Default: OS.LINUX
@@ -7356,7 +7650,7 @@ class ContainerImageBuilder(
7356
7650
  if __debug__:
7357
7651
  type_hints = typing.get_type_hints(_typecheckingstub__f4c47d52e3f51709153fc49a53f833f06b1fd2ba44d3c86696b418a3bf88a972)
7358
7652
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
7359
- jsii.set(self, "components", value)
7653
+ jsii.set(self, "components", value) # pyright: ignore[reportArgumentType]
7360
7654
 
7361
7655
 
7362
7656
  @jsii.implements(IRunnerProvider)
@@ -7378,6 +7672,7 @@ class Ec2RunnerProvider(
7378
7672
  id: builtins.str,
7379
7673
  *,
7380
7674
  ami_builder: typing.Optional[IRunnerImageBuilder] = None,
7675
+ group: typing.Optional[builtins.str] = None,
7381
7676
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
7382
7677
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
7383
7678
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -7385,10 +7680,12 @@ class Ec2RunnerProvider(
7385
7680
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
7386
7681
  spot: typing.Optional[builtins.bool] = None,
7387
7682
  spot_max_price: typing.Optional[builtins.str] = None,
7683
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
7388
7684
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
7389
7685
  subnet: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.ISubnet] = None,
7390
7686
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
7391
7687
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
7688
+ default_labels: typing.Optional[builtins.bool] = None,
7392
7689
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
7393
7690
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
7394
7691
  ) -> None:
@@ -7396,17 +7693,20 @@ class Ec2RunnerProvider(
7396
7693
  :param scope: -
7397
7694
  :param id: -
7398
7695
  :param ami_builder:
7696
+ :param group: (experimental) GitHub Actions runner group name. If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It requires a paid GitHub account. The group must exist or the runner will not start. Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group. Default: undefined
7399
7697
  :param image_builder: (experimental) Runner image builder used to build AMI containing GitHub Runner and all requirements. The image builder determines the OS and architecture of the runner. Default: Ec2RunnerProvider.imageBuilder()
7400
- :param instance_type: (experimental) Instance type for launched runner instances. Default: m5.large
7698
+ :param instance_type: (experimental) Instance type for launched runner instances. Default: m6i.large
7401
7699
  :param labels: (experimental) GitHub Actions labels used for this provider. 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 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 job's labels, this provider will be chosen and spawn a new runner. Default: ['ec2']
7402
7700
  :param security_group: (deprecated) Security Group to assign to launched runner instances. Default: a new security group
7403
7701
  :param security_groups: (experimental) Security groups to assign to launched runner instances. Default: a new security group
7404
7702
  :param spot: (experimental) Use spot instances to save money. Spot instances are cheaper but not always available and can be stopped prematurely. Default: false
7405
7703
  :param spot_max_price: (experimental) Set a maximum price for spot instances. Default: no max price (you will pay current spot price)
7704
+ :param storage_options: (experimental) Options for runner instance storage volume.
7406
7705
  :param storage_size: (experimental) Size of volume available for launched runner instances. This modifies the boot volume size and doesn't add any additional volumes. Default: 30GB
7407
7706
  :param subnet: (deprecated) Subnet where the runner instances will be launched. Default: default subnet of account's default VPC
7408
7707
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Only the first matched subnet will be used. Default: default VPC subnet
7409
7708
  :param vpc: (experimental) VPC where runner instances will be launched. Default: default account VPC
7709
+ :param default_labels: (experimental) Add default labels based on OS and architecture of the runner. This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``. Default: true
7410
7710
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
7411
7711
  :param retry_options:
7412
7712
 
@@ -7418,6 +7718,7 @@ class Ec2RunnerProvider(
7418
7718
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
7419
7719
  props = Ec2RunnerProviderProps(
7420
7720
  ami_builder=ami_builder,
7721
+ group=group,
7421
7722
  image_builder=image_builder,
7422
7723
  instance_type=instance_type,
7423
7724
  labels=labels,
@@ -7425,10 +7726,12 @@ class Ec2RunnerProvider(
7425
7726
  security_groups=security_groups,
7426
7727
  spot=spot,
7427
7728
  spot_max_price=spot_max_price,
7729
+ storage_options=storage_options,
7428
7730
  storage_size=storage_size,
7429
7731
  subnet=subnet,
7430
7732
  subnet_selection=subnet_selection,
7431
7733
  vpc=vpc,
7734
+ default_labels=default_labels,
7432
7735
  log_retention=log_retention,
7433
7736
  retry_options=retry_options,
7434
7737
  )
@@ -7471,6 +7774,7 @@ class Ec2RunnerProvider(
7471
7774
  Included components:
7472
7775
 
7473
7776
  - ``RunnerImageComponent.requiredPackages()``
7777
+ - ``RunnerImageComponent.cloudWatchAgent()``
7474
7778
  - ``RunnerImageComponent.runnerUser()``
7475
7779
  - ``RunnerImageComponent.git()``
7476
7780
  - ``RunnerImageComponent.githubCli()``
@@ -7482,8 +7786,8 @@ class Ec2RunnerProvider(
7482
7786
  :param id: -
7483
7787
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
7484
7788
  :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
7485
- :param base_ami: (experimental) Base AMI from which runner AMIs will be built. This can be an actual AMI or an AWS Image Builder ARN that points to the latest AMI. For example ``arn:aws:imagebuilder:us-east-1:aws:image/ubuntu-server-22-lts-x86/x.x.x`` would always use the latest version of Ubuntu 22.04 in each build. If you want a specific version, you can replace ``x.x.x`` with that version. Default: latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
7486
- :param base_docker_image: (experimental) Base image from which Docker runner images will be built. When using private images from a different account or not on ECR, you may need to include additional setup commands with {@link dockerSetupCommands}. Default: public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
7789
+ :param base_ami: (experimental) Base AMI from which runner AMIs will be built. This can be an actual AMI or an AWS Image Builder ARN that points to the latest AMI. For example ``arn:aws:imagebuilder:us-east-1:aws:image/ubuntu-server-22-lts-x86/x.x.x`` would always use the latest version of Ubuntu 22.04 in each build. If you want a specific version, you can replace ``x.x.x`` with that version. Default: latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, Ubuntu 24.04 AMI for Os.LINUX_UBUNTU_2404, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
7790
+ :param base_docker_image: (experimental) Base image from which Docker runner images will be built. When using private images from a different account or not on ECR, you may need to include additional setup commands with {@link dockerSetupCommands}. Default: public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, public.ecr.aws/lts/ubuntu:24.04 for Os.LINUX_UBUNTU_2404, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
7487
7791
  :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
7488
7792
  :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
7489
7793
  :param components: (experimental) Components to install on the image. Default: none
@@ -7671,9 +7975,11 @@ class Ec2RunnerProvider(
7671
7975
  jsii_type="@cloudsnorkel/cdk-github-runners.Ec2RunnerProviderProps",
7672
7976
  jsii_struct_bases=[RunnerProviderProps],
7673
7977
  name_mapping={
7978
+ "default_labels": "defaultLabels",
7674
7979
  "log_retention": "logRetention",
7675
7980
  "retry_options": "retryOptions",
7676
7981
  "ami_builder": "amiBuilder",
7982
+ "group": "group",
7677
7983
  "image_builder": "imageBuilder",
7678
7984
  "instance_type": "instanceType",
7679
7985
  "labels": "labels",
@@ -7681,6 +7987,7 @@ class Ec2RunnerProvider(
7681
7987
  "security_groups": "securityGroups",
7682
7988
  "spot": "spot",
7683
7989
  "spot_max_price": "spotMaxPrice",
7990
+ "storage_options": "storageOptions",
7684
7991
  "storage_size": "storageSize",
7685
7992
  "subnet": "subnet",
7686
7993
  "subnet_selection": "subnetSelection",
@@ -7691,9 +7998,11 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7691
7998
  def __init__(
7692
7999
  self,
7693
8000
  *,
8001
+ default_labels: typing.Optional[builtins.bool] = None,
7694
8002
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
7695
8003
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
7696
8004
  ami_builder: typing.Optional[IRunnerImageBuilder] = None,
8005
+ group: typing.Optional[builtins.str] = None,
7697
8006
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
7698
8007
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
7699
8008
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -7701,6 +8010,7 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7701
8010
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
7702
8011
  spot: typing.Optional[builtins.bool] = None,
7703
8012
  spot_max_price: typing.Optional[builtins.str] = None,
8013
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
7704
8014
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
7705
8015
  subnet: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.ISubnet] = None,
7706
8016
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -7708,16 +8018,19 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7708
8018
  ) -> None:
7709
8019
  '''(experimental) Properties for {@link Ec2RunnerProvider} construct.
7710
8020
 
8021
+ :param default_labels: (experimental) Add default labels based on OS and architecture of the runner. This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``. Default: true
7711
8022
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
7712
8023
  :param retry_options:
7713
8024
  :param ami_builder:
8025
+ :param group: (experimental) GitHub Actions runner group name. If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It requires a paid GitHub account. The group must exist or the runner will not start. Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group. Default: undefined
7714
8026
  :param image_builder: (experimental) Runner image builder used to build AMI containing GitHub Runner and all requirements. The image builder determines the OS and architecture of the runner. Default: Ec2RunnerProvider.imageBuilder()
7715
- :param instance_type: (experimental) Instance type for launched runner instances. Default: m5.large
8027
+ :param instance_type: (experimental) Instance type for launched runner instances. Default: m6i.large
7716
8028
  :param labels: (experimental) GitHub Actions labels used for this provider. 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 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 job's labels, this provider will be chosen and spawn a new runner. Default: ['ec2']
7717
8029
  :param security_group: (deprecated) Security Group to assign to launched runner instances. Default: a new security group
7718
8030
  :param security_groups: (experimental) Security groups to assign to launched runner instances. Default: a new security group
7719
8031
  :param spot: (experimental) Use spot instances to save money. Spot instances are cheaper but not always available and can be stopped prematurely. Default: false
7720
8032
  :param spot_max_price: (experimental) Set a maximum price for spot instances. Default: no max price (you will pay current spot price)
8033
+ :param storage_options: (experimental) Options for runner instance storage volume.
7721
8034
  :param storage_size: (experimental) Size of volume available for launched runner instances. This modifies the boot volume size and doesn't add any additional volumes. Default: 30GB
7722
8035
  :param subnet: (deprecated) Subnet where the runner instances will be launched. Default: default subnet of account's default VPC
7723
8036
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Only the first matched subnet will be used. Default: default VPC subnet
@@ -7727,13 +8040,17 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7727
8040
  '''
7728
8041
  if isinstance(retry_options, dict):
7729
8042
  retry_options = ProviderRetryOptions(**retry_options)
8043
+ if isinstance(storage_options, dict):
8044
+ storage_options = StorageOptions(**storage_options)
7730
8045
  if isinstance(subnet_selection, dict):
7731
8046
  subnet_selection = _aws_cdk_aws_ec2_ceddda9d.SubnetSelection(**subnet_selection)
7732
8047
  if __debug__:
7733
8048
  type_hints = typing.get_type_hints(_typecheckingstub__b650c4bf7f2a31b514d6f1f9e0c1b4b2cdae8b20b6f209f5b5fc74ef418fc2a3)
8049
+ check_type(argname="argument default_labels", value=default_labels, expected_type=type_hints["default_labels"])
7734
8050
  check_type(argname="argument log_retention", value=log_retention, expected_type=type_hints["log_retention"])
7735
8051
  check_type(argname="argument retry_options", value=retry_options, expected_type=type_hints["retry_options"])
7736
8052
  check_type(argname="argument ami_builder", value=ami_builder, expected_type=type_hints["ami_builder"])
8053
+ check_type(argname="argument group", value=group, expected_type=type_hints["group"])
7737
8054
  check_type(argname="argument image_builder", value=image_builder, expected_type=type_hints["image_builder"])
7738
8055
  check_type(argname="argument instance_type", value=instance_type, expected_type=type_hints["instance_type"])
7739
8056
  check_type(argname="argument labels", value=labels, expected_type=type_hints["labels"])
@@ -7741,17 +8058,22 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7741
8058
  check_type(argname="argument security_groups", value=security_groups, expected_type=type_hints["security_groups"])
7742
8059
  check_type(argname="argument spot", value=spot, expected_type=type_hints["spot"])
7743
8060
  check_type(argname="argument spot_max_price", value=spot_max_price, expected_type=type_hints["spot_max_price"])
8061
+ check_type(argname="argument storage_options", value=storage_options, expected_type=type_hints["storage_options"])
7744
8062
  check_type(argname="argument storage_size", value=storage_size, expected_type=type_hints["storage_size"])
7745
8063
  check_type(argname="argument subnet", value=subnet, expected_type=type_hints["subnet"])
7746
8064
  check_type(argname="argument subnet_selection", value=subnet_selection, expected_type=type_hints["subnet_selection"])
7747
8065
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
7748
8066
  self._values: typing.Dict[builtins.str, typing.Any] = {}
8067
+ if default_labels is not None:
8068
+ self._values["default_labels"] = default_labels
7749
8069
  if log_retention is not None:
7750
8070
  self._values["log_retention"] = log_retention
7751
8071
  if retry_options is not None:
7752
8072
  self._values["retry_options"] = retry_options
7753
8073
  if ami_builder is not None:
7754
8074
  self._values["ami_builder"] = ami_builder
8075
+ if group is not None:
8076
+ self._values["group"] = group
7755
8077
  if image_builder is not None:
7756
8078
  self._values["image_builder"] = image_builder
7757
8079
  if instance_type is not None:
@@ -7766,6 +8088,8 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7766
8088
  self._values["spot"] = spot
7767
8089
  if spot_max_price is not None:
7768
8090
  self._values["spot_max_price"] = spot_max_price
8091
+ if storage_options is not None:
8092
+ self._values["storage_options"] = storage_options
7769
8093
  if storage_size is not None:
7770
8094
  self._values["storage_size"] = storage_size
7771
8095
  if subnet is not None:
@@ -7775,6 +8099,19 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7775
8099
  if vpc is not None:
7776
8100
  self._values["vpc"] = vpc
7777
8101
 
8102
+ @builtins.property
8103
+ def default_labels(self) -> typing.Optional[builtins.bool]:
8104
+ '''(experimental) Add default labels based on OS and architecture of the runner.
8105
+
8106
+ This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``.
8107
+
8108
+ :default: true
8109
+
8110
+ :stability: experimental
8111
+ '''
8112
+ result = self._values.get("default_labels")
8113
+ return typing.cast(typing.Optional[builtins.bool], result)
8114
+
7778
8115
  @builtins.property
7779
8116
  def log_retention(
7780
8117
  self,
@@ -7812,6 +8149,24 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7812
8149
  result = self._values.get("ami_builder")
7813
8150
  return typing.cast(typing.Optional[IRunnerImageBuilder], result)
7814
8151
 
8152
+ @builtins.property
8153
+ def group(self) -> typing.Optional[builtins.str]:
8154
+ '''(experimental) GitHub Actions runner group name.
8155
+
8156
+ If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It
8157
+ requires a paid GitHub account.
8158
+
8159
+ The group must exist or the runner will not start.
8160
+
8161
+ Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group.
8162
+
8163
+ :default: undefined
8164
+
8165
+ :stability: experimental
8166
+ '''
8167
+ result = self._values.get("group")
8168
+ return typing.cast(typing.Optional[builtins.str], result)
8169
+
7815
8170
  @builtins.property
7816
8171
  def image_builder(self) -> typing.Optional[IRunnerImageBuilder]:
7817
8172
  '''(experimental) Runner image builder used to build AMI containing GitHub Runner and all requirements.
@@ -7829,7 +8184,7 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7829
8184
  def instance_type(self) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType]:
7830
8185
  '''(experimental) Instance type for launched runner instances.
7831
8186
 
7832
- :default: m5.large
8187
+ :default: m6i.large
7833
8188
 
7834
8189
  :stability: experimental
7835
8190
  '''
@@ -7903,6 +8258,15 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7903
8258
  result = self._values.get("spot_max_price")
7904
8259
  return typing.cast(typing.Optional[builtins.str], result)
7905
8260
 
8261
+ @builtins.property
8262
+ def storage_options(self) -> typing.Optional[StorageOptions]:
8263
+ '''(experimental) Options for runner instance storage volume.
8264
+
8265
+ :stability: experimental
8266
+ '''
8267
+ result = self._values.get("storage_options")
8268
+ return typing.cast(typing.Optional[StorageOptions], result)
8269
+
7906
8270
  @builtins.property
7907
8271
  def storage_size(self) -> typing.Optional[_aws_cdk_ceddda9d.Size]:
7908
8272
  '''(experimental) Size of volume available for launched runner instances.
@@ -7994,6 +8358,7 @@ class EcsRunnerProvider(
7994
8358
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
7995
8359
  cpu: typing.Optional[jsii.Number] = None,
7996
8360
  docker_in_docker: typing.Optional[builtins.bool] = None,
8361
+ group: typing.Optional[builtins.str] = None,
7997
8362
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
7998
8363
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
7999
8364
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -8001,12 +8366,16 @@ class EcsRunnerProvider(
8001
8366
  memory_limit_mib: typing.Optional[jsii.Number] = None,
8002
8367
  memory_reservation_mib: typing.Optional[jsii.Number] = None,
8003
8368
  min_instances: typing.Optional[jsii.Number] = None,
8369
+ placement_constraints: typing.Optional[typing.Sequence[_aws_cdk_aws_ecs_ceddda9d.PlacementConstraint]] = None,
8370
+ placement_strategies: typing.Optional[typing.Sequence[_aws_cdk_aws_ecs_ceddda9d.PlacementStrategy]] = None,
8004
8371
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
8005
8372
  spot: typing.Optional[builtins.bool] = None,
8006
8373
  spot_max_price: typing.Optional[builtins.str] = None,
8374
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
8007
8375
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
8008
8376
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
8009
8377
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
8378
+ default_labels: typing.Optional[builtins.bool] = None,
8010
8379
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
8011
8380
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
8012
8381
  ) -> None:
@@ -8018,19 +8387,24 @@ class EcsRunnerProvider(
8018
8387
  :param cluster: (experimental) Existing ECS cluster to use. Default: a new cluster
8019
8388
  :param cpu: (experimental) The number of cpu units used by the task. 1024 units is 1 vCPU. Fractions of a vCPU are supported. Default: 1024
8020
8389
  :param docker_in_docker: (experimental) Support building and running Docker images by enabling Docker-in-Docker (dind) and the required CodeBuild privileged mode. Disabling this can speed up provisioning of CodeBuild runners. If you don't intend on running or building Docker images, disable this for faster start-up times. Default: true
8390
+ :param group: (experimental) GitHub Actions runner group name. If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It requires a paid GitHub account. The group must exist or the runner will not start. Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group. Default: undefined
8021
8391
  :param image_builder: (experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements. The image builder determines the OS and architecture of the runner. Default: EcsRunnerProvider.imageBuilder()
8022
- :param instance_type: (experimental) Instance type of ECS cluster instances. Only used when creating a new cluster. Default: m5.large or m6g.large
8392
+ :param instance_type: (experimental) Instance type of ECS cluster instances. Only used when creating a new cluster. Default: m6i.large or m6g.large
8023
8393
  :param labels: (experimental) GitHub Actions labels used for this provider. 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 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 job's labels, this provider will be chosen and spawn a new runner. Default: ['ecs']
8024
8394
  :param max_instances: (experimental) The maximum number of instances to run in the cluster. Only used when creating a new cluster. Default: 5
8025
8395
  :param memory_limit_mib: (experimental) The amount (in MiB) of memory used by the task. Default: 3500, unless ``memoryReservationMiB`` is used and then it's undefined
8026
8396
  :param memory_reservation_mib: (experimental) The soft limit (in MiB) of memory to reserve for the container. Default: undefined
8027
8397
  :param min_instances: (experimental) The minimum number of instances to run in the cluster. Only used when creating a new cluster. Default: 0
8398
+ :param placement_constraints: (experimental) ECS placement constraints to influence task placement. Example: [ecs.PlacementConstraint.memberOf('ecs-placement')] Default: undefined (no placement constraints)
8399
+ :param placement_strategies: (experimental) ECS placement strategies to influence task placement. Example: [ecs.PlacementStrategy.packedByCpu()] Default: undefined (no placement strategies)
8028
8400
  :param security_groups: (experimental) Security groups to assign to the task. Default: a new security group
8029
8401
  :param spot: (experimental) Use spot capacity. Default: false (true if spotMaxPrice is specified)
8030
8402
  :param spot_max_price: (experimental) Maximum price for spot instances.
8403
+ :param storage_options: (experimental) Options for runner instance storage volume.
8031
8404
  :param storage_size: (experimental) Size of volume available for launched cluster instances. This modifies the boot volume size and doesn't add any additional volumes. Each instance can be used by multiple runners, so make sure there is enough space for all of them. Default: default size for AMI (usually 30GB for Linux and 50GB for Windows)
8032
8405
  :param subnet_selection: (experimental) Subnets to run the runners in. Default: ECS default
8033
8406
  :param vpc: (experimental) VPC to launch the runners in. Default: default account VPC
8407
+ :param default_labels: (experimental) Add default labels based on OS and architecture of the runner. This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``. Default: true
8034
8408
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
8035
8409
  :param retry_options:
8036
8410
 
@@ -8046,6 +8420,7 @@ class EcsRunnerProvider(
8046
8420
  cluster=cluster,
8047
8421
  cpu=cpu,
8048
8422
  docker_in_docker=docker_in_docker,
8423
+ group=group,
8049
8424
  image_builder=image_builder,
8050
8425
  instance_type=instance_type,
8051
8426
  labels=labels,
@@ -8053,12 +8428,16 @@ class EcsRunnerProvider(
8053
8428
  memory_limit_mib=memory_limit_mib,
8054
8429
  memory_reservation_mib=memory_reservation_mib,
8055
8430
  min_instances=min_instances,
8431
+ placement_constraints=placement_constraints,
8432
+ placement_strategies=placement_strategies,
8056
8433
  security_groups=security_groups,
8057
8434
  spot=spot,
8058
8435
  spot_max_price=spot_max_price,
8436
+ storage_options=storage_options,
8059
8437
  storage_size=storage_size,
8060
8438
  subnet_selection=subnet_selection,
8061
8439
  vpc=vpc,
8440
+ default_labels=default_labels,
8062
8441
  log_retention=log_retention,
8063
8442
  retry_options=retry_options,
8064
8443
  )
@@ -8112,8 +8491,8 @@ class EcsRunnerProvider(
8112
8491
  :param id: -
8113
8492
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
8114
8493
  :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
8115
- :param base_ami: (experimental) Base AMI from which runner AMIs will be built. This can be an actual AMI or an AWS Image Builder ARN that points to the latest AMI. For example ``arn:aws:imagebuilder:us-east-1:aws:image/ubuntu-server-22-lts-x86/x.x.x`` would always use the latest version of Ubuntu 22.04 in each build. If you want a specific version, you can replace ``x.x.x`` with that version. Default: latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
8116
- :param base_docker_image: (experimental) Base image from which Docker runner images will be built. When using private images from a different account or not on ECR, you may need to include additional setup commands with {@link dockerSetupCommands}. Default: public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
8494
+ :param base_ami: (experimental) Base AMI from which runner AMIs will be built. This can be an actual AMI or an AWS Image Builder ARN that points to the latest AMI. For example ``arn:aws:imagebuilder:us-east-1:aws:image/ubuntu-server-22-lts-x86/x.x.x`` would always use the latest version of Ubuntu 22.04 in each build. If you want a specific version, you can replace ``x.x.x`` with that version. Default: latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, Ubuntu 24.04 AMI for Os.LINUX_UBUNTU_2404, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
8495
+ :param base_docker_image: (experimental) Base image from which Docker runner images will be built. When using private images from a different account or not on ECR, you may need to include additional setup commands with {@link dockerSetupCommands}. Default: public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, public.ecr.aws/lts/ubuntu:24.04 for Os.LINUX_UBUNTU_2404, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
8117
8496
  :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
8118
8497
  :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
8119
8498
  :param components: (experimental) Components to install on the image. Default: none
@@ -8298,6 +8677,7 @@ class EcsRunnerProvider(
8298
8677
  jsii_type="@cloudsnorkel/cdk-github-runners.EcsRunnerProviderProps",
8299
8678
  jsii_struct_bases=[RunnerProviderProps],
8300
8679
  name_mapping={
8680
+ "default_labels": "defaultLabels",
8301
8681
  "log_retention": "logRetention",
8302
8682
  "retry_options": "retryOptions",
8303
8683
  "assign_public_ip": "assignPublicIp",
@@ -8305,6 +8685,7 @@ class EcsRunnerProvider(
8305
8685
  "cluster": "cluster",
8306
8686
  "cpu": "cpu",
8307
8687
  "docker_in_docker": "dockerInDocker",
8688
+ "group": "group",
8308
8689
  "image_builder": "imageBuilder",
8309
8690
  "instance_type": "instanceType",
8310
8691
  "labels": "labels",
@@ -8312,9 +8693,12 @@ class EcsRunnerProvider(
8312
8693
  "memory_limit_mib": "memoryLimitMiB",
8313
8694
  "memory_reservation_mib": "memoryReservationMiB",
8314
8695
  "min_instances": "minInstances",
8696
+ "placement_constraints": "placementConstraints",
8697
+ "placement_strategies": "placementStrategies",
8315
8698
  "security_groups": "securityGroups",
8316
8699
  "spot": "spot",
8317
8700
  "spot_max_price": "spotMaxPrice",
8701
+ "storage_options": "storageOptions",
8318
8702
  "storage_size": "storageSize",
8319
8703
  "subnet_selection": "subnetSelection",
8320
8704
  "vpc": "vpc",
@@ -8324,6 +8708,7 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8324
8708
  def __init__(
8325
8709
  self,
8326
8710
  *,
8711
+ default_labels: typing.Optional[builtins.bool] = None,
8327
8712
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
8328
8713
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
8329
8714
  assign_public_ip: typing.Optional[builtins.bool] = None,
@@ -8331,6 +8716,7 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8331
8716
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
8332
8717
  cpu: typing.Optional[jsii.Number] = None,
8333
8718
  docker_in_docker: typing.Optional[builtins.bool] = None,
8719
+ group: typing.Optional[builtins.str] = None,
8334
8720
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
8335
8721
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
8336
8722
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -8338,15 +8724,19 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8338
8724
  memory_limit_mib: typing.Optional[jsii.Number] = None,
8339
8725
  memory_reservation_mib: typing.Optional[jsii.Number] = None,
8340
8726
  min_instances: typing.Optional[jsii.Number] = None,
8727
+ placement_constraints: typing.Optional[typing.Sequence[_aws_cdk_aws_ecs_ceddda9d.PlacementConstraint]] = None,
8728
+ placement_strategies: typing.Optional[typing.Sequence[_aws_cdk_aws_ecs_ceddda9d.PlacementStrategy]] = None,
8341
8729
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
8342
8730
  spot: typing.Optional[builtins.bool] = None,
8343
8731
  spot_max_price: typing.Optional[builtins.str] = None,
8732
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
8344
8733
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
8345
8734
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
8346
8735
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
8347
8736
  ) -> None:
8348
8737
  '''(experimental) Properties for EcsRunnerProvider.
8349
8738
 
8739
+ :param default_labels: (experimental) Add default labels based on OS and architecture of the runner. This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``. Default: true
8350
8740
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
8351
8741
  :param retry_options:
8352
8742
  :param assign_public_ip: (experimental) Assign public IP to the runner task. Make sure the task will have access to GitHub. A public IP might be required unless you have NAT gateway. Default: true
@@ -8354,16 +8744,20 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8354
8744
  :param cluster: (experimental) Existing ECS cluster to use. Default: a new cluster
8355
8745
  :param cpu: (experimental) The number of cpu units used by the task. 1024 units is 1 vCPU. Fractions of a vCPU are supported. Default: 1024
8356
8746
  :param docker_in_docker: (experimental) Support building and running Docker images by enabling Docker-in-Docker (dind) and the required CodeBuild privileged mode. Disabling this can speed up provisioning of CodeBuild runners. If you don't intend on running or building Docker images, disable this for faster start-up times. Default: true
8747
+ :param group: (experimental) GitHub Actions runner group name. If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It requires a paid GitHub account. The group must exist or the runner will not start. Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group. Default: undefined
8357
8748
  :param image_builder: (experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements. The image builder determines the OS and architecture of the runner. Default: EcsRunnerProvider.imageBuilder()
8358
- :param instance_type: (experimental) Instance type of ECS cluster instances. Only used when creating a new cluster. Default: m5.large or m6g.large
8749
+ :param instance_type: (experimental) Instance type of ECS cluster instances. Only used when creating a new cluster. Default: m6i.large or m6g.large
8359
8750
  :param labels: (experimental) GitHub Actions labels used for this provider. 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 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 job's labels, this provider will be chosen and spawn a new runner. Default: ['ecs']
8360
8751
  :param max_instances: (experimental) The maximum number of instances to run in the cluster. Only used when creating a new cluster. Default: 5
8361
8752
  :param memory_limit_mib: (experimental) The amount (in MiB) of memory used by the task. Default: 3500, unless ``memoryReservationMiB`` is used and then it's undefined
8362
8753
  :param memory_reservation_mib: (experimental) The soft limit (in MiB) of memory to reserve for the container. Default: undefined
8363
8754
  :param min_instances: (experimental) The minimum number of instances to run in the cluster. Only used when creating a new cluster. Default: 0
8755
+ :param placement_constraints: (experimental) ECS placement constraints to influence task placement. Example: [ecs.PlacementConstraint.memberOf('ecs-placement')] Default: undefined (no placement constraints)
8756
+ :param placement_strategies: (experimental) ECS placement strategies to influence task placement. Example: [ecs.PlacementStrategy.packedByCpu()] Default: undefined (no placement strategies)
8364
8757
  :param security_groups: (experimental) Security groups to assign to the task. Default: a new security group
8365
8758
  :param spot: (experimental) Use spot capacity. Default: false (true if spotMaxPrice is specified)
8366
8759
  :param spot_max_price: (experimental) Maximum price for spot instances.
8760
+ :param storage_options: (experimental) Options for runner instance storage volume.
8367
8761
  :param storage_size: (experimental) Size of volume available for launched cluster instances. This modifies the boot volume size and doesn't add any additional volumes. Each instance can be used by multiple runners, so make sure there is enough space for all of them. Default: default size for AMI (usually 30GB for Linux and 50GB for Windows)
8368
8762
  :param subnet_selection: (experimental) Subnets to run the runners in. Default: ECS default
8369
8763
  :param vpc: (experimental) VPC to launch the runners in. Default: default account VPC
@@ -8372,10 +8766,13 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8372
8766
  '''
8373
8767
  if isinstance(retry_options, dict):
8374
8768
  retry_options = ProviderRetryOptions(**retry_options)
8769
+ if isinstance(storage_options, dict):
8770
+ storage_options = StorageOptions(**storage_options)
8375
8771
  if isinstance(subnet_selection, dict):
8376
8772
  subnet_selection = _aws_cdk_aws_ec2_ceddda9d.SubnetSelection(**subnet_selection)
8377
8773
  if __debug__:
8378
8774
  type_hints = typing.get_type_hints(_typecheckingstub__73c1978e12dcea1bd69ce0927a80bd887d7f7d1b6573831942495e9d5966b483)
8775
+ check_type(argname="argument default_labels", value=default_labels, expected_type=type_hints["default_labels"])
8379
8776
  check_type(argname="argument log_retention", value=log_retention, expected_type=type_hints["log_retention"])
8380
8777
  check_type(argname="argument retry_options", value=retry_options, expected_type=type_hints["retry_options"])
8381
8778
  check_type(argname="argument assign_public_ip", value=assign_public_ip, expected_type=type_hints["assign_public_ip"])
@@ -8383,6 +8780,7 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8383
8780
  check_type(argname="argument cluster", value=cluster, expected_type=type_hints["cluster"])
8384
8781
  check_type(argname="argument cpu", value=cpu, expected_type=type_hints["cpu"])
8385
8782
  check_type(argname="argument docker_in_docker", value=docker_in_docker, expected_type=type_hints["docker_in_docker"])
8783
+ check_type(argname="argument group", value=group, expected_type=type_hints["group"])
8386
8784
  check_type(argname="argument image_builder", value=image_builder, expected_type=type_hints["image_builder"])
8387
8785
  check_type(argname="argument instance_type", value=instance_type, expected_type=type_hints["instance_type"])
8388
8786
  check_type(argname="argument labels", value=labels, expected_type=type_hints["labels"])
@@ -8390,13 +8788,18 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8390
8788
  check_type(argname="argument memory_limit_mib", value=memory_limit_mib, expected_type=type_hints["memory_limit_mib"])
8391
8789
  check_type(argname="argument memory_reservation_mib", value=memory_reservation_mib, expected_type=type_hints["memory_reservation_mib"])
8392
8790
  check_type(argname="argument min_instances", value=min_instances, expected_type=type_hints["min_instances"])
8791
+ check_type(argname="argument placement_constraints", value=placement_constraints, expected_type=type_hints["placement_constraints"])
8792
+ check_type(argname="argument placement_strategies", value=placement_strategies, expected_type=type_hints["placement_strategies"])
8393
8793
  check_type(argname="argument security_groups", value=security_groups, expected_type=type_hints["security_groups"])
8394
8794
  check_type(argname="argument spot", value=spot, expected_type=type_hints["spot"])
8395
8795
  check_type(argname="argument spot_max_price", value=spot_max_price, expected_type=type_hints["spot_max_price"])
8796
+ check_type(argname="argument storage_options", value=storage_options, expected_type=type_hints["storage_options"])
8396
8797
  check_type(argname="argument storage_size", value=storage_size, expected_type=type_hints["storage_size"])
8397
8798
  check_type(argname="argument subnet_selection", value=subnet_selection, expected_type=type_hints["subnet_selection"])
8398
8799
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
8399
8800
  self._values: typing.Dict[builtins.str, typing.Any] = {}
8801
+ if default_labels is not None:
8802
+ self._values["default_labels"] = default_labels
8400
8803
  if log_retention is not None:
8401
8804
  self._values["log_retention"] = log_retention
8402
8805
  if retry_options is not None:
@@ -8411,6 +8814,8 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8411
8814
  self._values["cpu"] = cpu
8412
8815
  if docker_in_docker is not None:
8413
8816
  self._values["docker_in_docker"] = docker_in_docker
8817
+ if group is not None:
8818
+ self._values["group"] = group
8414
8819
  if image_builder is not None:
8415
8820
  self._values["image_builder"] = image_builder
8416
8821
  if instance_type is not None:
@@ -8425,12 +8830,18 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8425
8830
  self._values["memory_reservation_mib"] = memory_reservation_mib
8426
8831
  if min_instances is not None:
8427
8832
  self._values["min_instances"] = min_instances
8833
+ if placement_constraints is not None:
8834
+ self._values["placement_constraints"] = placement_constraints
8835
+ if placement_strategies is not None:
8836
+ self._values["placement_strategies"] = placement_strategies
8428
8837
  if security_groups is not None:
8429
8838
  self._values["security_groups"] = security_groups
8430
8839
  if spot is not None:
8431
8840
  self._values["spot"] = spot
8432
8841
  if spot_max_price is not None:
8433
8842
  self._values["spot_max_price"] = spot_max_price
8843
+ if storage_options is not None:
8844
+ self._values["storage_options"] = storage_options
8434
8845
  if storage_size is not None:
8435
8846
  self._values["storage_size"] = storage_size
8436
8847
  if subnet_selection is not None:
@@ -8438,6 +8849,19 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8438
8849
  if vpc is not None:
8439
8850
  self._values["vpc"] = vpc
8440
8851
 
8852
+ @builtins.property
8853
+ def default_labels(self) -> typing.Optional[builtins.bool]:
8854
+ '''(experimental) Add default labels based on OS and architecture of the runner.
8855
+
8856
+ This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``.
8857
+
8858
+ :default: true
8859
+
8860
+ :stability: experimental
8861
+ '''
8862
+ result = self._values.get("default_labels")
8863
+ return typing.cast(typing.Optional[builtins.bool], result)
8864
+
8441
8865
  @builtins.property
8442
8866
  def log_retention(
8443
8867
  self,
@@ -8531,6 +8955,24 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8531
8955
  result = self._values.get("docker_in_docker")
8532
8956
  return typing.cast(typing.Optional[builtins.bool], result)
8533
8957
 
8958
+ @builtins.property
8959
+ def group(self) -> typing.Optional[builtins.str]:
8960
+ '''(experimental) GitHub Actions runner group name.
8961
+
8962
+ If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It
8963
+ requires a paid GitHub account.
8964
+
8965
+ The group must exist or the runner will not start.
8966
+
8967
+ Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group.
8968
+
8969
+ :default: undefined
8970
+
8971
+ :stability: experimental
8972
+ '''
8973
+ result = self._values.get("group")
8974
+ return typing.cast(typing.Optional[builtins.str], result)
8975
+
8534
8976
  @builtins.property
8535
8977
  def image_builder(self) -> typing.Optional[IRunnerImageBuilder]:
8536
8978
  '''(experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements.
@@ -8550,7 +8992,7 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8550
8992
 
8551
8993
  Only used when creating a new cluster.
8552
8994
 
8553
- :default: m5.large or m6g.large
8995
+ :default: m6i.large or m6g.large
8554
8996
 
8555
8997
  :stability: experimental
8556
8998
  '''
@@ -8620,6 +9062,36 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8620
9062
  result = self._values.get("min_instances")
8621
9063
  return typing.cast(typing.Optional[jsii.Number], result)
8622
9064
 
9065
+ @builtins.property
9066
+ def placement_constraints(
9067
+ self,
9068
+ ) -> typing.Optional[typing.List[_aws_cdk_aws_ecs_ceddda9d.PlacementConstraint]]:
9069
+ '''(experimental) ECS placement constraints to influence task placement.
9070
+
9071
+ Example: [ecs.PlacementConstraint.memberOf('ecs-placement')]
9072
+
9073
+ :default: undefined (no placement constraints)
9074
+
9075
+ :stability: experimental
9076
+ '''
9077
+ result = self._values.get("placement_constraints")
9078
+ return typing.cast(typing.Optional[typing.List[_aws_cdk_aws_ecs_ceddda9d.PlacementConstraint]], result)
9079
+
9080
+ @builtins.property
9081
+ def placement_strategies(
9082
+ self,
9083
+ ) -> typing.Optional[typing.List[_aws_cdk_aws_ecs_ceddda9d.PlacementStrategy]]:
9084
+ '''(experimental) ECS placement strategies to influence task placement.
9085
+
9086
+ Example: [ecs.PlacementStrategy.packedByCpu()]
9087
+
9088
+ :default: undefined (no placement strategies)
9089
+
9090
+ :stability: experimental
9091
+ '''
9092
+ result = self._values.get("placement_strategies")
9093
+ return typing.cast(typing.Optional[typing.List[_aws_cdk_aws_ecs_ceddda9d.PlacementStrategy]], result)
9094
+
8623
9095
  @builtins.property
8624
9096
  def security_groups(
8625
9097
  self,
@@ -8653,6 +9125,15 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8653
9125
  result = self._values.get("spot_max_price")
8654
9126
  return typing.cast(typing.Optional[builtins.str], result)
8655
9127
 
9128
+ @builtins.property
9129
+ def storage_options(self) -> typing.Optional[StorageOptions]:
9130
+ '''(experimental) Options for runner instance storage volume.
9131
+
9132
+ :stability: experimental
9133
+ '''
9134
+ result = self._values.get("storage_options")
9135
+ return typing.cast(typing.Optional[StorageOptions], result)
9136
+
8656
9137
  @builtins.property
8657
9138
  def storage_size(self) -> typing.Optional[_aws_cdk_ceddda9d.Size]:
8658
9139
  '''(experimental) Size of volume available for launched cluster instances.
@@ -8728,6 +9209,7 @@ class FargateRunnerProvider(
8728
9209
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
8729
9210
  cpu: typing.Optional[jsii.Number] = None,
8730
9211
  ephemeral_storage_gib: typing.Optional[jsii.Number] = None,
9212
+ group: typing.Optional[builtins.str] = None,
8731
9213
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
8732
9214
  label: typing.Optional[builtins.str] = None,
8733
9215
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -8737,6 +9219,7 @@ class FargateRunnerProvider(
8737
9219
  spot: typing.Optional[builtins.bool] = None,
8738
9220
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
8739
9221
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
9222
+ default_labels: typing.Optional[builtins.bool] = None,
8740
9223
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
8741
9224
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
8742
9225
  ) -> None:
@@ -8747,6 +9230,7 @@ class FargateRunnerProvider(
8747
9230
  :param cluster: (experimental) Existing Fargate cluster to use. Default: a new cluster
8748
9231
  :param cpu: (experimental) The number of cpu units used by the task. For tasks using the Fargate launch type, this field is required and you must use one of the following values, which determines your range of valid values for the memory parameter: 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) 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) 2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) 4096 (4 vCPU) - Available memory values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) Default: 1024
8749
9232
  :param ephemeral_storage_gib: (experimental) The amount (in GiB) of ephemeral storage to be allocated to the task. The maximum supported value is 200 GiB. NOTE: This parameter is only supported for tasks hosted on AWS Fargate using platform version 1.4.0 or later. Default: 20
9233
+ :param group: (experimental) GitHub Actions runner group name. If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It requires a paid GitHub account. The group must exist or the runner will not start. Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group. Default: undefined
8750
9234
  :param image_builder: (experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements. The image builder determines the OS and architecture of the runner. Default: FargateRunnerProvider.imageBuilder()
8751
9235
  :param label: (deprecated) GitHub Actions label used for this provider. Default: undefined
8752
9236
  :param labels: (experimental) GitHub Actions labels used for this provider. 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 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 job's labels, this provider will be chosen and spawn a new runner. Default: ['fargate']
@@ -8756,6 +9240,7 @@ class FargateRunnerProvider(
8756
9240
  :param spot: (experimental) Use Fargate spot capacity provider to save money. - Runners may fail to start due to missing capacity. - Runners might be stopped prematurely with spot pricing. Default: false
8757
9241
  :param subnet_selection: (experimental) Subnets to run the runners in. Default: Fargate default
8758
9242
  :param vpc: (experimental) VPC to launch the runners in. Default: default account VPC
9243
+ :param default_labels: (experimental) Add default labels based on OS and architecture of the runner. This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``. Default: true
8759
9244
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
8760
9245
  :param retry_options:
8761
9246
 
@@ -8770,6 +9255,7 @@ class FargateRunnerProvider(
8770
9255
  cluster=cluster,
8771
9256
  cpu=cpu,
8772
9257
  ephemeral_storage_gib=ephemeral_storage_gib,
9258
+ group=group,
8773
9259
  image_builder=image_builder,
8774
9260
  label=label,
8775
9261
  labels=labels,
@@ -8779,6 +9265,7 @@ class FargateRunnerProvider(
8779
9265
  spot=spot,
8780
9266
  subnet_selection=subnet_selection,
8781
9267
  vpc=vpc,
9268
+ default_labels=default_labels,
8782
9269
  log_retention=log_retention,
8783
9270
  retry_options=retry_options,
8784
9271
  )
@@ -8831,8 +9318,8 @@ class FargateRunnerProvider(
8831
9318
  :param id: -
8832
9319
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
8833
9320
  :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
8834
- :param base_ami: (experimental) Base AMI from which runner AMIs will be built. This can be an actual AMI or an AWS Image Builder ARN that points to the latest AMI. For example ``arn:aws:imagebuilder:us-east-1:aws:image/ubuntu-server-22-lts-x86/x.x.x`` would always use the latest version of Ubuntu 22.04 in each build. If you want a specific version, you can replace ``x.x.x`` with that version. Default: latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
8835
- :param base_docker_image: (experimental) Base image from which Docker runner images will be built. When using private images from a different account or not on ECR, you may need to include additional setup commands with {@link dockerSetupCommands}. Default: public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
9321
+ :param base_ami: (experimental) Base AMI from which runner AMIs will be built. This can be an actual AMI or an AWS Image Builder ARN that points to the latest AMI. For example ``arn:aws:imagebuilder:us-east-1:aws:image/ubuntu-server-22-lts-x86/x.x.x`` would always use the latest version of Ubuntu 22.04 in each build. If you want a specific version, you can replace ``x.x.x`` with that version. Default: latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, Ubuntu 24.04 AMI for Os.LINUX_UBUNTU_2404, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
9322
+ :param base_docker_image: (experimental) Base image from which Docker runner images will be built. When using private images from a different account or not on ECR, you may need to include additional setup commands with {@link dockerSetupCommands}. Default: public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, public.ecr.aws/lts/ubuntu:24.04 for Os.LINUX_UBUNTU_2404, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
8836
9323
  :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
8837
9324
  :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
8838
9325
  :param components: (experimental) Components to install on the image. Default: none
@@ -9129,12 +9616,14 @@ class FargateRunnerProvider(
9129
9616
  jsii_type="@cloudsnorkel/cdk-github-runners.FargateRunnerProviderProps",
9130
9617
  jsii_struct_bases=[RunnerProviderProps],
9131
9618
  name_mapping={
9619
+ "default_labels": "defaultLabels",
9132
9620
  "log_retention": "logRetention",
9133
9621
  "retry_options": "retryOptions",
9134
9622
  "assign_public_ip": "assignPublicIp",
9135
9623
  "cluster": "cluster",
9136
9624
  "cpu": "cpu",
9137
9625
  "ephemeral_storage_gib": "ephemeralStorageGiB",
9626
+ "group": "group",
9138
9627
  "image_builder": "imageBuilder",
9139
9628
  "label": "label",
9140
9629
  "labels": "labels",
@@ -9150,12 +9639,14 @@ class FargateRunnerProviderProps(RunnerProviderProps):
9150
9639
  def __init__(
9151
9640
  self,
9152
9641
  *,
9642
+ default_labels: typing.Optional[builtins.bool] = None,
9153
9643
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
9154
9644
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
9155
9645
  assign_public_ip: typing.Optional[builtins.bool] = None,
9156
9646
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
9157
9647
  cpu: typing.Optional[jsii.Number] = None,
9158
9648
  ephemeral_storage_gib: typing.Optional[jsii.Number] = None,
9649
+ group: typing.Optional[builtins.str] = None,
9159
9650
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
9160
9651
  label: typing.Optional[builtins.str] = None,
9161
9652
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -9168,12 +9659,14 @@ class FargateRunnerProviderProps(RunnerProviderProps):
9168
9659
  ) -> None:
9169
9660
  '''(experimental) Properties for FargateRunnerProvider.
9170
9661
 
9662
+ :param default_labels: (experimental) Add default labels based on OS and architecture of the runner. This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``. Default: true
9171
9663
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
9172
9664
  :param retry_options:
9173
9665
  :param assign_public_ip: (experimental) Assign public IP to the runner task. Make sure the task will have access to GitHub. A public IP might be required unless you have NAT gateway. Default: true
9174
9666
  :param cluster: (experimental) Existing Fargate cluster to use. Default: a new cluster
9175
9667
  :param cpu: (experimental) The number of cpu units used by the task. For tasks using the Fargate launch type, this field is required and you must use one of the following values, which determines your range of valid values for the memory parameter: 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) 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) 2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) 4096 (4 vCPU) - Available memory values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) Default: 1024
9176
9668
  :param ephemeral_storage_gib: (experimental) The amount (in GiB) of ephemeral storage to be allocated to the task. The maximum supported value is 200 GiB. NOTE: This parameter is only supported for tasks hosted on AWS Fargate using platform version 1.4.0 or later. Default: 20
9669
+ :param group: (experimental) GitHub Actions runner group name. If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It requires a paid GitHub account. The group must exist or the runner will not start. Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group. Default: undefined
9177
9670
  :param image_builder: (experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements. The image builder determines the OS and architecture of the runner. Default: FargateRunnerProvider.imageBuilder()
9178
9671
  :param label: (deprecated) GitHub Actions label used for this provider. Default: undefined
9179
9672
  :param labels: (experimental) GitHub Actions labels used for this provider. 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 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 job's labels, this provider will be chosen and spawn a new runner. Default: ['fargate']
@@ -9192,12 +9685,14 @@ class FargateRunnerProviderProps(RunnerProviderProps):
9192
9685
  subnet_selection = _aws_cdk_aws_ec2_ceddda9d.SubnetSelection(**subnet_selection)
9193
9686
  if __debug__:
9194
9687
  type_hints = typing.get_type_hints(_typecheckingstub__26cdeb87df1adf5c49e0f9c1c061c7138af674da9af221212e1505fc1193583d)
9688
+ check_type(argname="argument default_labels", value=default_labels, expected_type=type_hints["default_labels"])
9195
9689
  check_type(argname="argument log_retention", value=log_retention, expected_type=type_hints["log_retention"])
9196
9690
  check_type(argname="argument retry_options", value=retry_options, expected_type=type_hints["retry_options"])
9197
9691
  check_type(argname="argument assign_public_ip", value=assign_public_ip, expected_type=type_hints["assign_public_ip"])
9198
9692
  check_type(argname="argument cluster", value=cluster, expected_type=type_hints["cluster"])
9199
9693
  check_type(argname="argument cpu", value=cpu, expected_type=type_hints["cpu"])
9200
9694
  check_type(argname="argument ephemeral_storage_gib", value=ephemeral_storage_gib, expected_type=type_hints["ephemeral_storage_gib"])
9695
+ check_type(argname="argument group", value=group, expected_type=type_hints["group"])
9201
9696
  check_type(argname="argument image_builder", value=image_builder, expected_type=type_hints["image_builder"])
9202
9697
  check_type(argname="argument label", value=label, expected_type=type_hints["label"])
9203
9698
  check_type(argname="argument labels", value=labels, expected_type=type_hints["labels"])
@@ -9208,6 +9703,8 @@ class FargateRunnerProviderProps(RunnerProviderProps):
9208
9703
  check_type(argname="argument subnet_selection", value=subnet_selection, expected_type=type_hints["subnet_selection"])
9209
9704
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
9210
9705
  self._values: typing.Dict[builtins.str, typing.Any] = {}
9706
+ if default_labels is not None:
9707
+ self._values["default_labels"] = default_labels
9211
9708
  if log_retention is not None:
9212
9709
  self._values["log_retention"] = log_retention
9213
9710
  if retry_options is not None:
@@ -9220,6 +9717,8 @@ class FargateRunnerProviderProps(RunnerProviderProps):
9220
9717
  self._values["cpu"] = cpu
9221
9718
  if ephemeral_storage_gib is not None:
9222
9719
  self._values["ephemeral_storage_gib"] = ephemeral_storage_gib
9720
+ if group is not None:
9721
+ self._values["group"] = group
9223
9722
  if image_builder is not None:
9224
9723
  self._values["image_builder"] = image_builder
9225
9724
  if label is not None:
@@ -9239,6 +9738,19 @@ class FargateRunnerProviderProps(RunnerProviderProps):
9239
9738
  if vpc is not None:
9240
9739
  self._values["vpc"] = vpc
9241
9740
 
9741
+ @builtins.property
9742
+ def default_labels(self) -> typing.Optional[builtins.bool]:
9743
+ '''(experimental) Add default labels based on OS and architecture of the runner.
9744
+
9745
+ This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``.
9746
+
9747
+ :default: true
9748
+
9749
+ :stability: experimental
9750
+ '''
9751
+ result = self._values.get("default_labels")
9752
+ return typing.cast(typing.Optional[builtins.bool], result)
9753
+
9242
9754
  @builtins.property
9243
9755
  def log_retention(
9244
9756
  self,
@@ -9330,6 +9842,24 @@ class FargateRunnerProviderProps(RunnerProviderProps):
9330
9842
  result = self._values.get("ephemeral_storage_gib")
9331
9843
  return typing.cast(typing.Optional[jsii.Number], result)
9332
9844
 
9845
+ @builtins.property
9846
+ def group(self) -> typing.Optional[builtins.str]:
9847
+ '''(experimental) GitHub Actions runner group name.
9848
+
9849
+ If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It
9850
+ requires a paid GitHub account.
9851
+
9852
+ The group must exist or the runner will not start.
9853
+
9854
+ Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group.
9855
+
9856
+ :default: undefined
9857
+
9858
+ :stability: experimental
9859
+ '''
9860
+ result = self._values.get("group")
9861
+ return typing.cast(typing.Optional[builtins.str], result)
9862
+
9333
9863
  @builtins.property
9334
9864
  def image_builder(self) -> typing.Optional[IRunnerImageBuilder]:
9335
9865
  '''(experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements.
@@ -9583,6 +10113,7 @@ class LambdaRunner(
9583
10113
  id: builtins.str,
9584
10114
  *,
9585
10115
  ephemeral_storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
10116
+ group: typing.Optional[builtins.str] = None,
9586
10117
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
9587
10118
  label: typing.Optional[builtins.str] = None,
9588
10119
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -9592,6 +10123,7 @@ class LambdaRunner(
9592
10123
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
9593
10124
  timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
9594
10125
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
10126
+ default_labels: typing.Optional[builtins.bool] = None,
9595
10127
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
9596
10128
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
9597
10129
  ) -> None:
@@ -9599,6 +10131,7 @@ class LambdaRunner(
9599
10131
  :param scope: -
9600
10132
  :param id: -
9601
10133
  :param ephemeral_storage_size: (experimental) The size of the function’s /tmp directory in MiB. Default: 10 GiB
10134
+ :param group: (experimental) GitHub Actions runner group name. If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It requires a paid GitHub account. The group must exist or the runner will not start. Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group. Default: undefined
9602
10135
  :param image_builder: (experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements. The image builder must contain the {@link RunnerImageComponent.lambdaEntrypoint} component. The image builder determines the OS and architecture of the runner. Default: LambdaRunnerProvider.imageBuilder()
9603
10136
  :param label: (deprecated) GitHub Actions label used for this provider. Default: undefined
9604
10137
  :param labels: (experimental) GitHub Actions labels used for this provider. 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 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 job's labels, this provider will be chosen and spawn a new runner. Default: ['lambda']
@@ -9608,6 +10141,7 @@ class LambdaRunner(
9608
10141
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
9609
10142
  :param timeout: (experimental) The function execution time (in seconds) after which Lambda terminates the function. Because the execution time affects cost, set this value based on the function's expected execution time. Default: Duration.minutes(15)
9610
10143
  :param vpc: (experimental) VPC to launch the runners in. Default: no VPC
10144
+ :param default_labels: (experimental) Add default labels based on OS and architecture of the runner. This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``. Default: true
9611
10145
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
9612
10146
  :param retry_options:
9613
10147
 
@@ -9619,6 +10153,7 @@ class LambdaRunner(
9619
10153
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
9620
10154
  props = LambdaRunnerProviderProps(
9621
10155
  ephemeral_storage_size=ephemeral_storage_size,
10156
+ group=group,
9622
10157
  image_builder=image_builder,
9623
10158
  label=label,
9624
10159
  labels=labels,
@@ -9628,6 +10163,7 @@ class LambdaRunner(
9628
10163
  subnet_selection=subnet_selection,
9629
10164
  timeout=timeout,
9630
10165
  vpc=vpc,
10166
+ default_labels=default_labels,
9631
10167
  log_retention=log_retention,
9632
10168
  retry_options=retry_options,
9633
10169
  )
@@ -9639,9 +10175,11 @@ class LambdaRunner(
9639
10175
  jsii_type="@cloudsnorkel/cdk-github-runners.LambdaRunnerProviderProps",
9640
10176
  jsii_struct_bases=[RunnerProviderProps],
9641
10177
  name_mapping={
10178
+ "default_labels": "defaultLabels",
9642
10179
  "log_retention": "logRetention",
9643
10180
  "retry_options": "retryOptions",
9644
10181
  "ephemeral_storage_size": "ephemeralStorageSize",
10182
+ "group": "group",
9645
10183
  "image_builder": "imageBuilder",
9646
10184
  "label": "label",
9647
10185
  "labels": "labels",
@@ -9657,9 +10195,11 @@ class LambdaRunnerProviderProps(RunnerProviderProps):
9657
10195
  def __init__(
9658
10196
  self,
9659
10197
  *,
10198
+ default_labels: typing.Optional[builtins.bool] = None,
9660
10199
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
9661
10200
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
9662
10201
  ephemeral_storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
10202
+ group: typing.Optional[builtins.str] = None,
9663
10203
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
9664
10204
  label: typing.Optional[builtins.str] = None,
9665
10205
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -9671,9 +10211,11 @@ class LambdaRunnerProviderProps(RunnerProviderProps):
9671
10211
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
9672
10212
  ) -> None:
9673
10213
  '''
10214
+ :param default_labels: (experimental) Add default labels based on OS and architecture of the runner. This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``. Default: true
9674
10215
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
9675
10216
  :param retry_options:
9676
10217
  :param ephemeral_storage_size: (experimental) The size of the function’s /tmp directory in MiB. Default: 10 GiB
10218
+ :param group: (experimental) GitHub Actions runner group name. If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It requires a paid GitHub account. The group must exist or the runner will not start. Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group. Default: undefined
9677
10219
  :param image_builder: (experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements. The image builder must contain the {@link RunnerImageComponent.lambdaEntrypoint} component. The image builder determines the OS and architecture of the runner. Default: LambdaRunnerProvider.imageBuilder()
9678
10220
  :param label: (deprecated) GitHub Actions label used for this provider. Default: undefined
9679
10221
  :param labels: (experimental) GitHub Actions labels used for this provider. 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 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 job's labels, this provider will be chosen and spawn a new runner. Default: ['lambda']
@@ -9692,9 +10234,11 @@ class LambdaRunnerProviderProps(RunnerProviderProps):
9692
10234
  subnet_selection = _aws_cdk_aws_ec2_ceddda9d.SubnetSelection(**subnet_selection)
9693
10235
  if __debug__:
9694
10236
  type_hints = typing.get_type_hints(_typecheckingstub__45a4a92b817689da2d55675d278ad5c96699269cc41f3406b7fca6d7a7664861)
10237
+ check_type(argname="argument default_labels", value=default_labels, expected_type=type_hints["default_labels"])
9695
10238
  check_type(argname="argument log_retention", value=log_retention, expected_type=type_hints["log_retention"])
9696
10239
  check_type(argname="argument retry_options", value=retry_options, expected_type=type_hints["retry_options"])
9697
10240
  check_type(argname="argument ephemeral_storage_size", value=ephemeral_storage_size, expected_type=type_hints["ephemeral_storage_size"])
10241
+ check_type(argname="argument group", value=group, expected_type=type_hints["group"])
9698
10242
  check_type(argname="argument image_builder", value=image_builder, expected_type=type_hints["image_builder"])
9699
10243
  check_type(argname="argument label", value=label, expected_type=type_hints["label"])
9700
10244
  check_type(argname="argument labels", value=labels, expected_type=type_hints["labels"])
@@ -9705,12 +10249,16 @@ class LambdaRunnerProviderProps(RunnerProviderProps):
9705
10249
  check_type(argname="argument timeout", value=timeout, expected_type=type_hints["timeout"])
9706
10250
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
9707
10251
  self._values: typing.Dict[builtins.str, typing.Any] = {}
10252
+ if default_labels is not None:
10253
+ self._values["default_labels"] = default_labels
9708
10254
  if log_retention is not None:
9709
10255
  self._values["log_retention"] = log_retention
9710
10256
  if retry_options is not None:
9711
10257
  self._values["retry_options"] = retry_options
9712
10258
  if ephemeral_storage_size is not None:
9713
10259
  self._values["ephemeral_storage_size"] = ephemeral_storage_size
10260
+ if group is not None:
10261
+ self._values["group"] = group
9714
10262
  if image_builder is not None:
9715
10263
  self._values["image_builder"] = image_builder
9716
10264
  if label is not None:
@@ -9730,6 +10278,19 @@ class LambdaRunnerProviderProps(RunnerProviderProps):
9730
10278
  if vpc is not None:
9731
10279
  self._values["vpc"] = vpc
9732
10280
 
10281
+ @builtins.property
10282
+ def default_labels(self) -> typing.Optional[builtins.bool]:
10283
+ '''(experimental) Add default labels based on OS and architecture of the runner.
10284
+
10285
+ This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``.
10286
+
10287
+ :default: true
10288
+
10289
+ :stability: experimental
10290
+ '''
10291
+ result = self._values.get("default_labels")
10292
+ return typing.cast(typing.Optional[builtins.bool], result)
10293
+
9733
10294
  @builtins.property
9734
10295
  def log_retention(
9735
10296
  self,
@@ -9768,6 +10329,24 @@ class LambdaRunnerProviderProps(RunnerProviderProps):
9768
10329
  result = self._values.get("ephemeral_storage_size")
9769
10330
  return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Size], result)
9770
10331
 
10332
+ @builtins.property
10333
+ def group(self) -> typing.Optional[builtins.str]:
10334
+ '''(experimental) GitHub Actions runner group name.
10335
+
10336
+ If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It
10337
+ requires a paid GitHub account.
10338
+
10339
+ The group must exist or the runner will not start.
10340
+
10341
+ Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group.
10342
+
10343
+ :default: undefined
10344
+
10345
+ :stability: experimental
10346
+ '''
10347
+ result = self._values.get("group")
10348
+ return typing.cast(typing.Optional[builtins.str], result)
10349
+
9771
10350
  @builtins.property
9772
10351
  def image_builder(self) -> typing.Optional[IRunnerImageBuilder]:
9773
10352
  '''(experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements.
@@ -9947,8 +10526,8 @@ class RunnerImageBuilder(
9947
10526
  :param id: -
9948
10527
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
9949
10528
  :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
9950
- :param base_ami: (experimental) Base AMI from which runner AMIs will be built. This can be an actual AMI or an AWS Image Builder ARN that points to the latest AMI. For example ``arn:aws:imagebuilder:us-east-1:aws:image/ubuntu-server-22-lts-x86/x.x.x`` would always use the latest version of Ubuntu 22.04 in each build. If you want a specific version, you can replace ``x.x.x`` with that version. Default: latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
9951
- :param base_docker_image: (experimental) Base image from which Docker runner images will be built. When using private images from a different account or not on ECR, you may need to include additional setup commands with {@link dockerSetupCommands}. Default: public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
10529
+ :param base_ami: (experimental) Base AMI from which runner AMIs will be built. This can be an actual AMI or an AWS Image Builder ARN that points to the latest AMI. For example ``arn:aws:imagebuilder:us-east-1:aws:image/ubuntu-server-22-lts-x86/x.x.x`` would always use the latest version of Ubuntu 22.04 in each build. If you want a specific version, you can replace ``x.x.x`` with that version. Default: latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, Ubuntu 24.04 AMI for Os.LINUX_UBUNTU_2404, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
10530
+ :param base_docker_image: (experimental) Base image from which Docker runner images will be built. When using private images from a different account or not on ECR, you may need to include additional setup commands with {@link dockerSetupCommands}. Default: public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, public.ecr.aws/lts/ubuntu:24.04 for Os.LINUX_UBUNTU_2404, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
9952
10531
  :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
9953
10532
  :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
9954
10533
  :param components: (experimental) Components to install on the image. Default: none
@@ -10024,8 +10603,8 @@ class RunnerImageBuilder(
10024
10603
  :param id: -
10025
10604
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
10026
10605
  :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
10027
- :param base_ami: (experimental) Base AMI from which runner AMIs will be built. This can be an actual AMI or an AWS Image Builder ARN that points to the latest AMI. For example ``arn:aws:imagebuilder:us-east-1:aws:image/ubuntu-server-22-lts-x86/x.x.x`` would always use the latest version of Ubuntu 22.04 in each build. If you want a specific version, you can replace ``x.x.x`` with that version. Default: latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
10028
- :param base_docker_image: (experimental) Base image from which Docker runner images will be built. When using private images from a different account or not on ECR, you may need to include additional setup commands with {@link dockerSetupCommands}. Default: public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
10606
+ :param base_ami: (experimental) Base AMI from which runner AMIs will be built. This can be an actual AMI or an AWS Image Builder ARN that points to the latest AMI. For example ``arn:aws:imagebuilder:us-east-1:aws:image/ubuntu-server-22-lts-x86/x.x.x`` would always use the latest version of Ubuntu 22.04 in each build. If you want a specific version, you can replace ``x.x.x`` with that version. Default: latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, Ubuntu 24.04 AMI for Os.LINUX_UBUNTU_2404, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
10607
+ :param base_docker_image: (experimental) Base image from which Docker runner images will be built. When using private images from a different account or not on ECR, you may need to include additional setup commands with {@link dockerSetupCommands}. Default: public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, public.ecr.aws/lts/ubuntu:24.04 for Os.LINUX_UBUNTU_2404, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
10029
10608
  :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
10030
10609
  :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
10031
10610
  :param components: (experimental) Components to install on the image. Default: none
@@ -10159,7 +10738,7 @@ class RunnerImageBuilder(
10159
10738
  if __debug__:
10160
10739
  type_hints = typing.get_type_hints(_typecheckingstub__705c18a1eedaa490aebad511aac32a801519a57162e30be4673a8ab87ca434dc)
10161
10740
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
10162
- jsii.set(self, "components", value)
10741
+ jsii.set(self, "components", value) # pyright: ignore[reportArgumentType]
10163
10742
 
10164
10743
 
10165
10744
  class _RunnerImageBuilderProxy(RunnerImageBuilder):
@@ -10229,6 +10808,7 @@ class CodeBuildRunner(
10229
10808
  *,
10230
10809
  compute_type: typing.Optional[_aws_cdk_aws_codebuild_ceddda9d.ComputeType] = None,
10231
10810
  docker_in_docker: typing.Optional[builtins.bool] = None,
10811
+ group: typing.Optional[builtins.str] = None,
10232
10812
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
10233
10813
  label: typing.Optional[builtins.str] = None,
10234
10814
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -10237,6 +10817,7 @@ class CodeBuildRunner(
10237
10817
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
10238
10818
  timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
10239
10819
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
10820
+ default_labels: typing.Optional[builtins.bool] = None,
10240
10821
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
10241
10822
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
10242
10823
  ) -> None:
@@ -10245,6 +10826,7 @@ class CodeBuildRunner(
10245
10826
  :param id: -
10246
10827
  :param compute_type: (experimental) The type of compute to use for this build. See the {@link ComputeType} enum for the possible values. Default: {@link ComputeType#SMALL }
10247
10828
  :param docker_in_docker: (experimental) Support building and running Docker images by enabling Docker-in-Docker (dind) and the required CodeBuild privileged mode. Disabling this can speed up provisioning of CodeBuild runners. If you don't intend on running or building Docker images, disable this for faster start-up times. Default: true
10829
+ :param group: (experimental) GitHub Actions runner group name. If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It requires a paid GitHub account. The group must exist or the runner will not start. Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group. Default: undefined
10248
10830
  :param image_builder: (experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements. The image builder must contain the {@link RunnerImageComponent.docker} component unless ``dockerInDocker`` is set to false. The image builder determines the OS and architecture of the runner. Default: CodeBuildRunnerProvider.imageBuilder()
10249
10831
  :param label: (deprecated) GitHub Actions label used for this provider. Default: undefined
10250
10832
  :param labels: (experimental) GitHub Actions labels used for this provider. 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 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 job's labels, this provider will be chosen and spawn a new runner. Default: ['codebuild']
@@ -10253,6 +10835,7 @@ class CodeBuildRunner(
10253
10835
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
10254
10836
  :param timeout: (experimental) The number of minutes after which AWS CodeBuild stops the build if it's not complete. For valid values, see the timeoutInMinutes field in the AWS CodeBuild User Guide. Default: Duration.hours(1)
10255
10837
  :param vpc: (experimental) VPC to launch the runners in. Default: no VPC
10838
+ :param default_labels: (experimental) Add default labels based on OS and architecture of the runner. This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``. Default: true
10256
10839
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
10257
10840
  :param retry_options:
10258
10841
 
@@ -10265,6 +10848,7 @@ class CodeBuildRunner(
10265
10848
  props = CodeBuildRunnerProviderProps(
10266
10849
  compute_type=compute_type,
10267
10850
  docker_in_docker=docker_in_docker,
10851
+ group=group,
10268
10852
  image_builder=image_builder,
10269
10853
  label=label,
10270
10854
  labels=labels,
@@ -10273,6 +10857,7 @@ class CodeBuildRunner(
10273
10857
  subnet_selection=subnet_selection,
10274
10858
  timeout=timeout,
10275
10859
  vpc=vpc,
10860
+ default_labels=default_labels,
10276
10861
  log_retention=log_retention,
10277
10862
  retry_options=retry_options,
10278
10863
  )
@@ -10297,6 +10882,7 @@ class Ec2Runner(
10297
10882
  id: builtins.str,
10298
10883
  *,
10299
10884
  ami_builder: typing.Optional[IRunnerImageBuilder] = None,
10885
+ group: typing.Optional[builtins.str] = None,
10300
10886
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
10301
10887
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
10302
10888
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -10304,10 +10890,12 @@ class Ec2Runner(
10304
10890
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
10305
10891
  spot: typing.Optional[builtins.bool] = None,
10306
10892
  spot_max_price: typing.Optional[builtins.str] = None,
10893
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
10307
10894
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
10308
10895
  subnet: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.ISubnet] = None,
10309
10896
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
10310
10897
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
10898
+ default_labels: typing.Optional[builtins.bool] = None,
10311
10899
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
10312
10900
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
10313
10901
  ) -> None:
@@ -10315,17 +10903,20 @@ class Ec2Runner(
10315
10903
  :param scope: -
10316
10904
  :param id: -
10317
10905
  :param ami_builder:
10906
+ :param group: (experimental) GitHub Actions runner group name. If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It requires a paid GitHub account. The group must exist or the runner will not start. Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group. Default: undefined
10318
10907
  :param image_builder: (experimental) Runner image builder used to build AMI containing GitHub Runner and all requirements. The image builder determines the OS and architecture of the runner. Default: Ec2RunnerProvider.imageBuilder()
10319
- :param instance_type: (experimental) Instance type for launched runner instances. Default: m5.large
10908
+ :param instance_type: (experimental) Instance type for launched runner instances. Default: m6i.large
10320
10909
  :param labels: (experimental) GitHub Actions labels used for this provider. 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 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 job's labels, this provider will be chosen and spawn a new runner. Default: ['ec2']
10321
10910
  :param security_group: (deprecated) Security Group to assign to launched runner instances. Default: a new security group
10322
10911
  :param security_groups: (experimental) Security groups to assign to launched runner instances. Default: a new security group
10323
10912
  :param spot: (experimental) Use spot instances to save money. Spot instances are cheaper but not always available and can be stopped prematurely. Default: false
10324
10913
  :param spot_max_price: (experimental) Set a maximum price for spot instances. Default: no max price (you will pay current spot price)
10914
+ :param storage_options: (experimental) Options for runner instance storage volume.
10325
10915
  :param storage_size: (experimental) Size of volume available for launched runner instances. This modifies the boot volume size and doesn't add any additional volumes. Default: 30GB
10326
10916
  :param subnet: (deprecated) Subnet where the runner instances will be launched. Default: default subnet of account's default VPC
10327
10917
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Only the first matched subnet will be used. Default: default VPC subnet
10328
10918
  :param vpc: (experimental) VPC where runner instances will be launched. Default: default account VPC
10919
+ :param default_labels: (experimental) Add default labels based on OS and architecture of the runner. This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``. Default: true
10329
10920
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
10330
10921
  :param retry_options:
10331
10922
 
@@ -10337,6 +10928,7 @@ class Ec2Runner(
10337
10928
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
10338
10929
  props = Ec2RunnerProviderProps(
10339
10930
  ami_builder=ami_builder,
10931
+ group=group,
10340
10932
  image_builder=image_builder,
10341
10933
  instance_type=instance_type,
10342
10934
  labels=labels,
@@ -10344,10 +10936,12 @@ class Ec2Runner(
10344
10936
  security_groups=security_groups,
10345
10937
  spot=spot,
10346
10938
  spot_max_price=spot_max_price,
10939
+ storage_options=storage_options,
10347
10940
  storage_size=storage_size,
10348
10941
  subnet=subnet,
10349
10942
  subnet_selection=subnet_selection,
10350
10943
  vpc=vpc,
10944
+ default_labels=default_labels,
10351
10945
  log_retention=log_retention,
10352
10946
  retry_options=retry_options,
10353
10947
  )
@@ -10375,6 +10969,7 @@ class FargateRunner(
10375
10969
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
10376
10970
  cpu: typing.Optional[jsii.Number] = None,
10377
10971
  ephemeral_storage_gib: typing.Optional[jsii.Number] = None,
10972
+ group: typing.Optional[builtins.str] = None,
10378
10973
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
10379
10974
  label: typing.Optional[builtins.str] = None,
10380
10975
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -10384,6 +10979,7 @@ class FargateRunner(
10384
10979
  spot: typing.Optional[builtins.bool] = None,
10385
10980
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
10386
10981
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
10982
+ default_labels: typing.Optional[builtins.bool] = None,
10387
10983
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
10388
10984
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
10389
10985
  ) -> None:
@@ -10394,6 +10990,7 @@ class FargateRunner(
10394
10990
  :param cluster: (experimental) Existing Fargate cluster to use. Default: a new cluster
10395
10991
  :param cpu: (experimental) The number of cpu units used by the task. For tasks using the Fargate launch type, this field is required and you must use one of the following values, which determines your range of valid values for the memory parameter: 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) 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) 2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) 4096 (4 vCPU) - Available memory values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) Default: 1024
10396
10992
  :param ephemeral_storage_gib: (experimental) The amount (in GiB) of ephemeral storage to be allocated to the task. The maximum supported value is 200 GiB. NOTE: This parameter is only supported for tasks hosted on AWS Fargate using platform version 1.4.0 or later. Default: 20
10993
+ :param group: (experimental) GitHub Actions runner group name. If specified, the runner will be registered with this group name. Setting a runner group can help managing access to self-hosted runners. It requires a paid GitHub account. The group must exist or the runner will not start. Users will still be able to trigger this runner with the correct labels. But the runner will only be able to run jobs from repos allowed to use the group. Default: undefined
10397
10994
  :param image_builder: (experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements. The image builder determines the OS and architecture of the runner. Default: FargateRunnerProvider.imageBuilder()
10398
10995
  :param label: (deprecated) GitHub Actions label used for this provider. Default: undefined
10399
10996
  :param labels: (experimental) GitHub Actions labels used for this provider. 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 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 job's labels, this provider will be chosen and spawn a new runner. Default: ['fargate']
@@ -10403,6 +11000,7 @@ class FargateRunner(
10403
11000
  :param spot: (experimental) Use Fargate spot capacity provider to save money. - Runners may fail to start due to missing capacity. - Runners might be stopped prematurely with spot pricing. Default: false
10404
11001
  :param subnet_selection: (experimental) Subnets to run the runners in. Default: Fargate default
10405
11002
  :param vpc: (experimental) VPC to launch the runners in. Default: default account VPC
11003
+ :param default_labels: (experimental) Add default labels based on OS and architecture of the runner. This will tell GitHub Runner to add default labels like ``self-hosted``, ``linux``, ``x64``, and ``arm64``. Default: true
10406
11004
  :param log_retention: (experimental) The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to ``INFINITE``. Default: logs.RetentionDays.ONE_MONTH
10407
11005
  :param retry_options:
10408
11006
 
@@ -10417,6 +11015,7 @@ class FargateRunner(
10417
11015
  cluster=cluster,
10418
11016
  cpu=cpu,
10419
11017
  ephemeral_storage_gib=ephemeral_storage_gib,
11018
+ group=group,
10420
11019
  image_builder=image_builder,
10421
11020
  label=label,
10422
11021
  labels=labels,
@@ -10426,6 +11025,7 @@ class FargateRunner(
10426
11025
  spot=spot,
10427
11026
  subnet_selection=subnet_selection,
10428
11027
  vpc=vpc,
11028
+ default_labels=default_labels,
10429
11029
  log_retention=log_retention,
10430
11030
  retry_options=retry_options,
10431
11031
  )
@@ -10488,6 +11088,7 @@ __all__ = [
10488
11088
  "RunnerVersion",
10489
11089
  "Secrets",
10490
11090
  "StaticRunnerImage",
11091
+ "StorageOptions",
10491
11092
  "WindowsComponents",
10492
11093
  ]
10493
11094
 
@@ -10543,6 +11144,7 @@ def _typecheckingstub__fe17585d38b67015c3f03db2aefab095f171e0e0900c9a4564679bbc5
10543
11144
  *,
10544
11145
  fast_launch_options: typing.Optional[typing.Union[FastLaunchOptions, typing.Dict[builtins.str, typing.Any]]] = None,
10545
11146
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
11147
+ storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
10546
11148
  ) -> None:
10547
11149
  """Type checking stubs"""
10548
11150
  pass
@@ -10724,6 +11326,7 @@ def _typecheckingstub__637ac3a7237f114ea2a9842f95653a0d13444cd4da7a4dfe9330fdb98
10724
11326
  id: builtins.str,
10725
11327
  *,
10726
11328
  ephemeral_storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
11329
+ group: typing.Optional[builtins.str] = None,
10727
11330
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
10728
11331
  label: typing.Optional[builtins.str] = None,
10729
11332
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -10733,6 +11336,7 @@ def _typecheckingstub__637ac3a7237f114ea2a9842f95653a0d13444cd4da7a4dfe9330fdb98
10733
11336
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
10734
11337
  timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
10735
11338
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
11339
+ default_labels: typing.Optional[builtins.bool] = None,
10736
11340
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
10737
11341
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
10738
11342
  ) -> None:
@@ -10994,6 +11598,7 @@ def _typecheckingstub__6fe5c2d2437d742085479f02259513b739e15d569c2f5b87bf0244bf4
10994
11598
 
10995
11599
  def _typecheckingstub__faa1323116edff475c54eafc82f7af57dd73527c022a54b6210c5a490a80a1d3(
10996
11600
  *,
11601
+ default_labels: typing.Optional[builtins.bool] = None,
10997
11602
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
10998
11603
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
10999
11604
  ) -> None:
@@ -11056,6 +11661,15 @@ def _typecheckingstub__f48d8ecb3f18c1471b45f7dfd8f15c51227e04697959138092d72a915
11056
11661
  """Type checking stubs"""
11057
11662
  pass
11058
11663
 
11664
+ def _typecheckingstub__ec3b766929d3a048d89c7dc502f77bbbfc7357735093ebc66695a13b92f9bf82(
11665
+ *,
11666
+ iops: typing.Optional[jsii.Number] = None,
11667
+ throughput: typing.Optional[jsii.Number] = None,
11668
+ volume_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.EbsDeviceVolumeType] = None,
11669
+ ) -> None:
11670
+ """Type checking stubs"""
11671
+ pass
11672
+
11059
11673
  def _typecheckingstub__0c68c27f668327e6aeb3b0e5b7e88235ae547046edeb1fa6a808b729a31b7bd2(
11060
11674
  scope: _constructs_77d1e7e8.Construct,
11061
11675
  id: builtins.str,
@@ -11248,6 +11862,7 @@ def _typecheckingstub__bb924a0cf987a9f87f4ad0ebd952c61ebd4e02d7d83501b9600f14157
11248
11862
  *,
11249
11863
  compute_type: typing.Optional[_aws_cdk_aws_codebuild_ceddda9d.ComputeType] = None,
11250
11864
  docker_in_docker: typing.Optional[builtins.bool] = None,
11865
+ group: typing.Optional[builtins.str] = None,
11251
11866
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11252
11867
  label: typing.Optional[builtins.str] = None,
11253
11868
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11256,6 +11871,7 @@ def _typecheckingstub__bb924a0cf987a9f87f4ad0ebd952c61ebd4e02d7d83501b9600f14157
11256
11871
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11257
11872
  timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
11258
11873
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
11874
+ default_labels: typing.Optional[builtins.bool] = None,
11259
11875
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11260
11876
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11261
11877
  ) -> None:
@@ -11309,10 +11925,12 @@ def _typecheckingstub__6969b9c3ab349e4eada340b71bb6e985c199a88642a6d68289cc42ad9
11309
11925
 
11310
11926
  def _typecheckingstub__9377dcf4cd4dae74730635bdaf02246acb473843cea2856cf9a64295df964eb6(
11311
11927
  *,
11928
+ default_labels: typing.Optional[builtins.bool] = None,
11312
11929
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11313
11930
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11314
11931
  compute_type: typing.Optional[_aws_cdk_aws_codebuild_ceddda9d.ComputeType] = None,
11315
11932
  docker_in_docker: typing.Optional[builtins.bool] = None,
11933
+ group: typing.Optional[builtins.str] = None,
11316
11934
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11317
11935
  label: typing.Optional[builtins.str] = None,
11318
11936
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11406,6 +12024,7 @@ def _typecheckingstub__fd3f279069067627058d9a5818aab030be5ffd71ce03962b4fd7cdd85
11406
12024
  id: builtins.str,
11407
12025
  *,
11408
12026
  ami_builder: typing.Optional[IRunnerImageBuilder] = None,
12027
+ group: typing.Optional[builtins.str] = None,
11409
12028
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11410
12029
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
11411
12030
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11413,10 +12032,12 @@ def _typecheckingstub__fd3f279069067627058d9a5818aab030be5ffd71ce03962b4fd7cdd85
11413
12032
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
11414
12033
  spot: typing.Optional[builtins.bool] = None,
11415
12034
  spot_max_price: typing.Optional[builtins.str] = None,
12035
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11416
12036
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
11417
12037
  subnet: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.ISubnet] = None,
11418
12038
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11419
12039
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12040
+ default_labels: typing.Optional[builtins.bool] = None,
11420
12041
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11421
12042
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11422
12043
  ) -> None:
@@ -11470,9 +12091,11 @@ def _typecheckingstub__f493efe2a09a1094bf977e7690b481a2257fb28bdf86de99ba09b0eb0
11470
12091
 
11471
12092
  def _typecheckingstub__b650c4bf7f2a31b514d6f1f9e0c1b4b2cdae8b20b6f209f5b5fc74ef418fc2a3(
11472
12093
  *,
12094
+ default_labels: typing.Optional[builtins.bool] = None,
11473
12095
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11474
12096
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11475
12097
  ami_builder: typing.Optional[IRunnerImageBuilder] = None,
12098
+ group: typing.Optional[builtins.str] = None,
11476
12099
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11477
12100
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
11478
12101
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11480,6 +12103,7 @@ def _typecheckingstub__b650c4bf7f2a31b514d6f1f9e0c1b4b2cdae8b20b6f209f5b5fc74ef4
11480
12103
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
11481
12104
  spot: typing.Optional[builtins.bool] = None,
11482
12105
  spot_max_price: typing.Optional[builtins.str] = None,
12106
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11483
12107
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
11484
12108
  subnet: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.ISubnet] = None,
11485
12109
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -11497,6 +12121,7 @@ def _typecheckingstub__c520325dd0289bf8c6670ecdce77df4b229a0a2681957e61665818d2f
11497
12121
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
11498
12122
  cpu: typing.Optional[jsii.Number] = None,
11499
12123
  docker_in_docker: typing.Optional[builtins.bool] = None,
12124
+ group: typing.Optional[builtins.str] = None,
11500
12125
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11501
12126
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
11502
12127
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11504,12 +12129,16 @@ def _typecheckingstub__c520325dd0289bf8c6670ecdce77df4b229a0a2681957e61665818d2f
11504
12129
  memory_limit_mib: typing.Optional[jsii.Number] = None,
11505
12130
  memory_reservation_mib: typing.Optional[jsii.Number] = None,
11506
12131
  min_instances: typing.Optional[jsii.Number] = None,
12132
+ placement_constraints: typing.Optional[typing.Sequence[_aws_cdk_aws_ecs_ceddda9d.PlacementConstraint]] = None,
12133
+ placement_strategies: typing.Optional[typing.Sequence[_aws_cdk_aws_ecs_ceddda9d.PlacementStrategy]] = None,
11507
12134
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
11508
12135
  spot: typing.Optional[builtins.bool] = None,
11509
12136
  spot_max_price: typing.Optional[builtins.str] = None,
12137
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11510
12138
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
11511
12139
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11512
12140
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12141
+ default_labels: typing.Optional[builtins.bool] = None,
11513
12142
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11514
12143
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11515
12144
  ) -> None:
@@ -11563,6 +12192,7 @@ def _typecheckingstub__e7ecb1269ac1102589a8eb3fdd808b1c194dffc5acfa36b649506b72c
11563
12192
 
11564
12193
  def _typecheckingstub__73c1978e12dcea1bd69ce0927a80bd887d7f7d1b6573831942495e9d5966b483(
11565
12194
  *,
12195
+ default_labels: typing.Optional[builtins.bool] = None,
11566
12196
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11567
12197
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11568
12198
  assign_public_ip: typing.Optional[builtins.bool] = None,
@@ -11570,6 +12200,7 @@ def _typecheckingstub__73c1978e12dcea1bd69ce0927a80bd887d7f7d1b6573831942495e9d5
11570
12200
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
11571
12201
  cpu: typing.Optional[jsii.Number] = None,
11572
12202
  docker_in_docker: typing.Optional[builtins.bool] = None,
12203
+ group: typing.Optional[builtins.str] = None,
11573
12204
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11574
12205
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
11575
12206
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11577,9 +12208,12 @@ def _typecheckingstub__73c1978e12dcea1bd69ce0927a80bd887d7f7d1b6573831942495e9d5
11577
12208
  memory_limit_mib: typing.Optional[jsii.Number] = None,
11578
12209
  memory_reservation_mib: typing.Optional[jsii.Number] = None,
11579
12210
  min_instances: typing.Optional[jsii.Number] = None,
12211
+ placement_constraints: typing.Optional[typing.Sequence[_aws_cdk_aws_ecs_ceddda9d.PlacementConstraint]] = None,
12212
+ placement_strategies: typing.Optional[typing.Sequence[_aws_cdk_aws_ecs_ceddda9d.PlacementStrategy]] = None,
11580
12213
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
11581
12214
  spot: typing.Optional[builtins.bool] = None,
11582
12215
  spot_max_price: typing.Optional[builtins.str] = None,
12216
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11583
12217
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
11584
12218
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11585
12219
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
@@ -11595,6 +12229,7 @@ def _typecheckingstub__f7098876c10584a4cc58e16d23fd86ffe1fc50f2b55ca60549136d051
11595
12229
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
11596
12230
  cpu: typing.Optional[jsii.Number] = None,
11597
12231
  ephemeral_storage_gib: typing.Optional[jsii.Number] = None,
12232
+ group: typing.Optional[builtins.str] = None,
11598
12233
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11599
12234
  label: typing.Optional[builtins.str] = None,
11600
12235
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11604,6 +12239,7 @@ def _typecheckingstub__f7098876c10584a4cc58e16d23fd86ffe1fc50f2b55ca60549136d051
11604
12239
  spot: typing.Optional[builtins.bool] = None,
11605
12240
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11606
12241
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12242
+ default_labels: typing.Optional[builtins.bool] = None,
11607
12243
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11608
12244
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11609
12245
  ) -> None:
@@ -11657,12 +12293,14 @@ def _typecheckingstub__9c62078db683958716a7ad86909a8b9b4dce462def398eb03faf0dc61
11657
12293
 
11658
12294
  def _typecheckingstub__26cdeb87df1adf5c49e0f9c1c061c7138af674da9af221212e1505fc1193583d(
11659
12295
  *,
12296
+ default_labels: typing.Optional[builtins.bool] = None,
11660
12297
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11661
12298
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11662
12299
  assign_public_ip: typing.Optional[builtins.bool] = None,
11663
12300
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
11664
12301
  cpu: typing.Optional[jsii.Number] = None,
11665
12302
  ephemeral_storage_gib: typing.Optional[jsii.Number] = None,
12303
+ group: typing.Optional[builtins.str] = None,
11666
12304
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11667
12305
  label: typing.Optional[builtins.str] = None,
11668
12306
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11693,6 +12331,7 @@ def _typecheckingstub__80e9b84ecba02bdef856d3ee3f48a5e0a5e58ad813554fd529c0abe3a
11693
12331
  id: builtins.str,
11694
12332
  *,
11695
12333
  ephemeral_storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
12334
+ group: typing.Optional[builtins.str] = None,
11696
12335
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11697
12336
  label: typing.Optional[builtins.str] = None,
11698
12337
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11702,6 +12341,7 @@ def _typecheckingstub__80e9b84ecba02bdef856d3ee3f48a5e0a5e58ad813554fd529c0abe3a
11702
12341
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11703
12342
  timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
11704
12343
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12344
+ default_labels: typing.Optional[builtins.bool] = None,
11705
12345
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11706
12346
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11707
12347
  ) -> None:
@@ -11710,9 +12350,11 @@ def _typecheckingstub__80e9b84ecba02bdef856d3ee3f48a5e0a5e58ad813554fd529c0abe3a
11710
12350
 
11711
12351
  def _typecheckingstub__45a4a92b817689da2d55675d278ad5c96699269cc41f3406b7fca6d7a7664861(
11712
12352
  *,
12353
+ default_labels: typing.Optional[builtins.bool] = None,
11713
12354
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11714
12355
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11715
12356
  ephemeral_storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
12357
+ group: typing.Optional[builtins.str] = None,
11716
12358
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11717
12359
  label: typing.Optional[builtins.str] = None,
11718
12360
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11800,6 +12442,7 @@ def _typecheckingstub__1ab9454b0ecfcd12fc0ab07c0f0f4d7ce646a5a928f5e14092b0a6c42
11800
12442
  *,
11801
12443
  compute_type: typing.Optional[_aws_cdk_aws_codebuild_ceddda9d.ComputeType] = None,
11802
12444
  docker_in_docker: typing.Optional[builtins.bool] = None,
12445
+ group: typing.Optional[builtins.str] = None,
11803
12446
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11804
12447
  label: typing.Optional[builtins.str] = None,
11805
12448
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11808,6 +12451,7 @@ def _typecheckingstub__1ab9454b0ecfcd12fc0ab07c0f0f4d7ce646a5a928f5e14092b0a6c42
11808
12451
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11809
12452
  timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
11810
12453
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12454
+ default_labels: typing.Optional[builtins.bool] = None,
11811
12455
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11812
12456
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11813
12457
  ) -> None:
@@ -11819,6 +12463,7 @@ def _typecheckingstub__a0a6acc584ae2ad3aed3605810cea44858f1a0bc22f62f2df9005b318
11819
12463
  id: builtins.str,
11820
12464
  *,
11821
12465
  ami_builder: typing.Optional[IRunnerImageBuilder] = None,
12466
+ group: typing.Optional[builtins.str] = None,
11822
12467
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11823
12468
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
11824
12469
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11826,10 +12471,12 @@ def _typecheckingstub__a0a6acc584ae2ad3aed3605810cea44858f1a0bc22f62f2df9005b318
11826
12471
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
11827
12472
  spot: typing.Optional[builtins.bool] = None,
11828
12473
  spot_max_price: typing.Optional[builtins.str] = None,
12474
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11829
12475
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
11830
12476
  subnet: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.ISubnet] = None,
11831
12477
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11832
12478
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12479
+ default_labels: typing.Optional[builtins.bool] = None,
11833
12480
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11834
12481
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11835
12482
  ) -> None:
@@ -11844,6 +12491,7 @@ def _typecheckingstub__e507aa08f983fcd409ec9cf4ba5e0e6312ce72778cbbb2f9b5b016fde
11844
12491
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
11845
12492
  cpu: typing.Optional[jsii.Number] = None,
11846
12493
  ephemeral_storage_gib: typing.Optional[jsii.Number] = None,
12494
+ group: typing.Optional[builtins.str] = None,
11847
12495
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11848
12496
  label: typing.Optional[builtins.str] = None,
11849
12497
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11853,8 +12501,12 @@ def _typecheckingstub__e507aa08f983fcd409ec9cf4ba5e0e6312ce72778cbbb2f9b5b016fde
11853
12501
  spot: typing.Optional[builtins.bool] = None,
11854
12502
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11855
12503
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12504
+ default_labels: typing.Optional[builtins.bool] = None,
11856
12505
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11857
12506
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11858
12507
  ) -> None:
11859
12508
  """Type checking stubs"""
11860
12509
  pass
12510
+
12511
+ for cls in [IConfigurableRunnerImageBuilder, IRunnerAmiStatus, IRunnerImageBuilder, IRunnerImageStatus, IRunnerProvider, IRunnerProviderStatus]:
12512
+ typing.cast(typing.Any, cls).__protocol_attrs__ = typing.cast(typing.Any, cls).__protocol_attrs__ - set(['__jsii_proxy_class__', '__jsii_type__'])