cloudsnorkel.cdk-github-runners 0.12.0__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
155
+
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{})
135
166
 
136
- NewGitHubRunners(this, jsii.String("runners"))
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,11 +374,28 @@ 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
329
394
  2. [actions/actions-runner-controller](https://github.com/actions/actions-runner-controller) if you're using Kubernetes
330
395
  '''
396
+ from pkgutil import extend_path
397
+ __path__ = extend_path(__path__, __name__)
398
+
331
399
  import abc
332
400
  import builtins
333
401
  import datetime
@@ -338,7 +406,22 @@ import jsii
338
406
  import publication
339
407
  import typing_extensions
340
408
 
341
- 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
342
425
 
343
426
  from ._jsii import *
344
427
 
@@ -398,7 +481,7 @@ class AmiBuilderProps:
398
481
 
399
482
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
400
483
  :param install_docker: (experimental) Install Docker inside the image, so it can be used by the runner. Default: true
401
- :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
402
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
403
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
404
487
  :param os: (experimental) Image OS. Default: OS.LINUX
@@ -479,7 +562,7 @@ class AmiBuilderProps:
479
562
  def instance_type(self) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType]:
480
563
  '''(experimental) The instance type used to build the image.
481
564
 
482
- :default: m5.large
565
+ :default: m6i.large
483
566
 
484
567
  :stability: experimental
485
568
  '''
@@ -809,37 +892,79 @@ class Architecture(
809
892
  @jsii.data_type(
810
893
  jsii_type="@cloudsnorkel/cdk-github-runners.AwsImageBuilderRunnerImageBuilderProps",
811
894
  jsii_struct_bases=[],
812
- name_mapping={"instance_type": "instanceType"},
895
+ name_mapping={
896
+ "fast_launch_options": "fastLaunchOptions",
897
+ "instance_type": "instanceType",
898
+ "storage_size": "storageSize",
899
+ },
813
900
  )
814
901
  class AwsImageBuilderRunnerImageBuilderProps:
815
902
  def __init__(
816
903
  self,
817
904
  *,
905
+ fast_launch_options: typing.Optional[typing.Union["FastLaunchOptions", typing.Dict[builtins.str, typing.Any]]] = None,
818
906
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
907
+ storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
819
908
  ) -> None:
820
909
  '''
821
- :param instance_type: (experimental) The instance type used to build the image. Default: m5.large
910
+ :param fast_launch_options: (experimental) Options for fast launch. This is only supported for Windows AMIs. Default: disabled
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)
822
913
 
823
914
  :stability: experimental
824
915
  '''
916
+ if isinstance(fast_launch_options, dict):
917
+ fast_launch_options = FastLaunchOptions(**fast_launch_options)
825
918
  if __debug__:
826
919
  type_hints = typing.get_type_hints(_typecheckingstub__fe17585d38b67015c3f03db2aefab095f171e0e0900c9a4564679bbc5a29fd07)
920
+ check_type(argname="argument fast_launch_options", value=fast_launch_options, expected_type=type_hints["fast_launch_options"])
827
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"])
828
923
  self._values: typing.Dict[builtins.str, typing.Any] = {}
924
+ if fast_launch_options is not None:
925
+ self._values["fast_launch_options"] = fast_launch_options
829
926
  if instance_type is not None:
830
927
  self._values["instance_type"] = instance_type
928
+ if storage_size is not None:
929
+ self._values["storage_size"] = storage_size
930
+
931
+ @builtins.property
932
+ def fast_launch_options(self) -> typing.Optional["FastLaunchOptions"]:
933
+ '''(experimental) Options for fast launch.
934
+
935
+ This is only supported for Windows AMIs.
936
+
937
+ :default: disabled
938
+
939
+ :stability: experimental
940
+ '''
941
+ result = self._values.get("fast_launch_options")
942
+ return typing.cast(typing.Optional["FastLaunchOptions"], result)
831
943
 
832
944
  @builtins.property
833
945
  def instance_type(self) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType]:
834
946
  '''(experimental) The instance type used to build the image.
835
947
 
836
- :default: m5.large
948
+ :default: m6i.large
837
949
 
838
950
  :stability: experimental
839
951
  '''
840
952
  result = self._values.get("instance_type")
841
953
  return typing.cast(typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType], result)
842
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
+
843
968
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
844
969
  return isinstance(rhs, self.__class__) and rhs._values == self._values
845
970
 
@@ -1157,7 +1282,7 @@ class CodeBuildRunnerImageBuilderProps:
1157
1282
  timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
1158
1283
  ) -> None:
1159
1284
  '''
1160
- :param build_image: (experimental) Build image to use in CodeBuild. This is the image that's going to run the code that builds the runner image. The only action taken in CodeBuild is running ``docker build``. You would therefore not need to change this setting often. Default: Ubuntu 22.04 for x64 and Amazon Linux 2 for ARM64
1285
+ :param build_image: (experimental) Build image to use in CodeBuild. This is the image that's going to run the code that builds the runner image. The only action taken in CodeBuild is running ``docker build``. You would therefore not need to change this setting often. Default: Amazon Linux 2023
1161
1286
  :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 }
1162
1287
  :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)
1163
1288
 
@@ -1186,7 +1311,7 @@ class CodeBuildRunnerImageBuilderProps:
1186
1311
 
1187
1312
  The only action taken in CodeBuild is running ``docker build``. You would therefore not need to change this setting often.
1188
1313
 
1189
- :default: Ubuntu 22.04 for x64 and Amazon Linux 2 for ARM64
1314
+ :default: Amazon Linux 2023
1190
1315
 
1191
1316
  :stability: experimental
1192
1317
  '''
@@ -1272,7 +1397,7 @@ class ContainerImageBuilderProps:
1272
1397
  '''(experimental) Properties for ContainerImageBuilder construct.
1273
1398
 
1274
1399
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
1275
- :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
1276
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
1277
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
1278
1403
  :param os: (experimental) Image OS. Default: OS.LINUX
@@ -1343,7 +1468,7 @@ class ContainerImageBuilderProps:
1343
1468
  def instance_type(self) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType]:
1344
1469
  '''(experimental) The instance type used to build the image.
1345
1470
 
1346
- :default: m5.large
1471
+ :default: m6i.large
1347
1472
 
1348
1473
  :stability: experimental
1349
1474
  '''
@@ -1496,6 +1621,96 @@ class ContainerImageBuilderProps:
1496
1621
  )
1497
1622
 
1498
1623
 
1624
+ @jsii.data_type(
1625
+ jsii_type="@cloudsnorkel/cdk-github-runners.FastLaunchOptions",
1626
+ jsii_struct_bases=[],
1627
+ name_mapping={
1628
+ "enabled": "enabled",
1629
+ "max_parallel_launches": "maxParallelLaunches",
1630
+ "target_resource_count": "targetResourceCount",
1631
+ },
1632
+ )
1633
+ class FastLaunchOptions:
1634
+ def __init__(
1635
+ self,
1636
+ *,
1637
+ enabled: typing.Optional[builtins.bool] = None,
1638
+ max_parallel_launches: typing.Optional[jsii.Number] = None,
1639
+ target_resource_count: typing.Optional[jsii.Number] = None,
1640
+ ) -> None:
1641
+ '''(experimental) Options for fast launch.
1642
+
1643
+ :param enabled: (experimental) Enable fast launch for AMIs generated by this builder. It creates a snapshot of the root volume and uses it to launch new instances faster. This is only supported for Windows AMIs. Default: false
1644
+ :param max_parallel_launches: (experimental) The maximum number of parallel instances that are launched for creating resources. Must be at least 6. Default: 6
1645
+ :param target_resource_count: (experimental) The number of pre-provisioned snapshots to keep on hand for a fast-launch enabled Windows AMI. Default: 1
1646
+
1647
+ :stability: experimental
1648
+ '''
1649
+ if __debug__:
1650
+ type_hints = typing.get_type_hints(_typecheckingstub__d2952ae322a0fd40b480084b183be9e7179337af84efb30a496aa331a22fa562)
1651
+ check_type(argname="argument enabled", value=enabled, expected_type=type_hints["enabled"])
1652
+ check_type(argname="argument max_parallel_launches", value=max_parallel_launches, expected_type=type_hints["max_parallel_launches"])
1653
+ check_type(argname="argument target_resource_count", value=target_resource_count, expected_type=type_hints["target_resource_count"])
1654
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
1655
+ if enabled is not None:
1656
+ self._values["enabled"] = enabled
1657
+ if max_parallel_launches is not None:
1658
+ self._values["max_parallel_launches"] = max_parallel_launches
1659
+ if target_resource_count is not None:
1660
+ self._values["target_resource_count"] = target_resource_count
1661
+
1662
+ @builtins.property
1663
+ def enabled(self) -> typing.Optional[builtins.bool]:
1664
+ '''(experimental) Enable fast launch for AMIs generated by this builder.
1665
+
1666
+ It creates a snapshot of the root volume and uses it to launch new instances faster.
1667
+
1668
+ This is only supported for Windows AMIs.
1669
+
1670
+ :default: false
1671
+
1672
+ :stability: experimental
1673
+ :note: enabling fast launch on an existing builder will not enable it for existing AMIs. It will only affect new AMIs. If you want immediate effect, trigger a new image build. Alternatively, you can create a new builder with fast launch enabled and use it for new AMIs.
1674
+ '''
1675
+ result = self._values.get("enabled")
1676
+ return typing.cast(typing.Optional[builtins.bool], result)
1677
+
1678
+ @builtins.property
1679
+ def max_parallel_launches(self) -> typing.Optional[jsii.Number]:
1680
+ '''(experimental) The maximum number of parallel instances that are launched for creating resources.
1681
+
1682
+ Must be at least 6.
1683
+
1684
+ :default: 6
1685
+
1686
+ :stability: experimental
1687
+ '''
1688
+ result = self._values.get("max_parallel_launches")
1689
+ return typing.cast(typing.Optional[jsii.Number], result)
1690
+
1691
+ @builtins.property
1692
+ def target_resource_count(self) -> typing.Optional[jsii.Number]:
1693
+ '''(experimental) The number of pre-provisioned snapshots to keep on hand for a fast-launch enabled Windows AMI.
1694
+
1695
+ :default: 1
1696
+
1697
+ :stability: experimental
1698
+ '''
1699
+ result = self._values.get("target_resource_count")
1700
+ return typing.cast(typing.Optional[jsii.Number], result)
1701
+
1702
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
1703
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
1704
+
1705
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
1706
+ return not (rhs == self)
1707
+
1708
+ def __repr__(self) -> str:
1709
+ return "FastLaunchOptions(%s)" % ", ".join(
1710
+ k + "=" + repr(v) for k, v in self._values.items()
1711
+ )
1712
+
1713
+
1499
1714
  @jsii.implements(_aws_cdk_aws_ec2_ceddda9d.IConnectable)
1500
1715
  class GitHubRunners(
1501
1716
  _constructs_77d1e7e8.Construct,
@@ -3280,6 +3495,7 @@ class LambdaRunnerProvider(
3280
3495
  id: builtins.str,
3281
3496
  *,
3282
3497
  ephemeral_storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
3498
+ group: typing.Optional[builtins.str] = None,
3283
3499
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
3284
3500
  label: typing.Optional[builtins.str] = None,
3285
3501
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -3289,6 +3505,7 @@ class LambdaRunnerProvider(
3289
3505
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
3290
3506
  timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3291
3507
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
3508
+ default_labels: typing.Optional[builtins.bool] = None,
3292
3509
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
3293
3510
  retry_options: typing.Optional[typing.Union["ProviderRetryOptions", typing.Dict[builtins.str, typing.Any]]] = None,
3294
3511
  ) -> None:
@@ -3296,6 +3513,7 @@ class LambdaRunnerProvider(
3296
3513
  :param scope: -
3297
3514
  :param id: -
3298
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
3299
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()
3300
3518
  :param label: (deprecated) GitHub Actions label used for this provider. Default: undefined
3301
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']
@@ -3305,6 +3523,7 @@ class LambdaRunnerProvider(
3305
3523
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
3306
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)
3307
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
3308
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
3309
3528
  :param retry_options:
3310
3529
 
@@ -3316,6 +3535,7 @@ class LambdaRunnerProvider(
3316
3535
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
3317
3536
  props = LambdaRunnerProviderProps(
3318
3537
  ephemeral_storage_size=ephemeral_storage_size,
3538
+ group=group,
3319
3539
  image_builder=image_builder,
3320
3540
  label=label,
3321
3541
  labels=labels,
@@ -3325,6 +3545,7 @@ class LambdaRunnerProvider(
3325
3545
  subnet_selection=subnet_selection,
3326
3546
  timeout=timeout,
3327
3547
  vpc=vpc,
3548
+ default_labels=default_labels,
3328
3549
  log_retention=log_retention,
3329
3550
  retry_options=retry_options,
3330
3551
  )
@@ -3345,6 +3566,7 @@ class LambdaRunnerProvider(
3345
3566
  builder_type: typing.Optional["RunnerImageBuilderType"] = None,
3346
3567
  code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
3347
3568
  components: typing.Optional[typing.Sequence["RunnerImageComponent"]] = None,
3569
+ docker_setup_commands: typing.Optional[typing.Sequence[builtins.str]] = None,
3348
3570
  log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
3349
3571
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
3350
3572
  os: typing.Optional["Os"] = None,
@@ -3353,6 +3575,7 @@ class LambdaRunnerProvider(
3353
3575
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
3354
3576
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
3355
3577
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
3578
+ wait_on_deploy: typing.Optional[builtins.bool] = None,
3356
3579
  ) -> "IConfigurableRunnerImageBuilder":
3357
3580
  '''(experimental) Create new image builder that builds Lambda specific runner images.
3358
3581
 
@@ -3360,7 +3583,7 @@ class LambdaRunnerProvider(
3360
3583
 
3361
3584
  You can add components to the image builder by calling ``imageBuilder.addComponent()``.
3362
3585
 
3363
- The default OS is Amazon Linux 2 running on x64 architecture.
3586
+ The default OS is Amazon Linux 2023 running on x64 architecture.
3364
3587
 
3365
3588
  Included components:
3366
3589
 
@@ -3372,17 +3595,16 @@ class LambdaRunnerProvider(
3372
3595
  - ``RunnerImageComponent.githubRunner()``
3373
3596
  - ``RunnerImageComponent.lambdaEntrypoint()``
3374
3597
 
3375
- Base Docker image: ``public.ecr.aws/lambda/nodejs:16-x86_64`` or ``public.ecr.aws/lambda/nodejs:16-arm64``
3376
-
3377
3598
  :param scope: -
3378
3599
  :param id: -
3379
3600
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
3380
3601
  :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
3381
- :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
3382
- :param base_docker_image: (experimental) Base image from which Docker runner images will be built. 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
3383
3604
  :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
3384
3605
  :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
3385
3606
  :param components: (experimental) Components to install on the image. Default: none
3607
+ :param docker_setup_commands: (experimental) Additional commands to run on the build host before starting the Docker runner image build. Use this to execute commands such as ``docker login`` or ``aws ecr get-login-password`` to pull private base images. Default: []
3386
3608
  :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
3387
3609
  :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
3388
3610
  :param os: (experimental) Image OS. Default: OS.LINUX_UBUNTU
@@ -3391,6 +3613,7 @@ class LambdaRunnerProvider(
3391
3613
  :param security_groups: (experimental) Security Groups to assign to this instance.
3392
3614
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
3393
3615
  :param vpc: (experimental) VPC to build the image in. Default: no VPC
3616
+ :param wait_on_deploy: (experimental) Wait for image to finish building during deployment. It's usually best to leave this enabled to ensure everything is ready once deployment is done. However, it can be disabled to speed up deployment in case where you have a lot of image components that can take a long time to build. Disabling this option means a finished deployment is not ready to be used. You will have to wait for the image to finish building before the system can be used. Disabling this option may also mean any changes to settings or components can take up to a week (default rebuild interval) to take effect. Default: true
3394
3617
 
3395
3618
  :stability: experimental
3396
3619
  '''
@@ -3406,6 +3629,7 @@ class LambdaRunnerProvider(
3406
3629
  builder_type=builder_type,
3407
3630
  code_build_options=code_build_options,
3408
3631
  components=components,
3632
+ docker_setup_commands=docker_setup_commands,
3409
3633
  log_removal_policy=log_removal_policy,
3410
3634
  log_retention=log_retention,
3411
3635
  os=os,
@@ -3414,6 +3638,7 @@ class LambdaRunnerProvider(
3414
3638
  security_groups=security_groups,
3415
3639
  subnet_selection=subnet_selection,
3416
3640
  vpc=vpc,
3641
+ wait_on_deploy=wait_on_deploy,
3417
3642
  )
3418
3643
 
3419
3644
  return typing.cast("IConfigurableRunnerImageBuilder", jsii.sinvoke(cls, "imageBuilder", [scope, id, props]))
@@ -3952,7 +4177,7 @@ class Os(metaclass=jsii.JSIIMeta, jsii_type="@cloudsnorkel/cdk-github-runners.Os
3952
4177
  def LINUX(cls) -> "Os":
3953
4178
  '''(deprecated) Linux.
3954
4179
 
3955
- :deprecated: use {@link LINUX_UBUNTU } or {@link LINUX_AMAZON_2 }
4180
+ :deprecated: use {@link LINUX_UBUNTU }, {@link LINUX_UBUNTU_2404 }, {@link LINUX_AMAZON_2 } or {@link LINUX_AMAZON_2023 }
3956
4181
 
3957
4182
  :stability: deprecated
3958
4183
  '''
@@ -3967,6 +4192,15 @@ class Os(metaclass=jsii.JSIIMeta, jsii_type="@cloudsnorkel/cdk-github-runners.Os
3967
4192
  '''
3968
4193
  return typing.cast("Os", jsii.sget(cls, "LINUX_AMAZON_2"))
3969
4194
 
4195
+ @jsii.python.classproperty
4196
+ @jsii.member(jsii_name="LINUX_AMAZON_2023")
4197
+ def LINUX_AMAZON_2023(cls) -> "Os":
4198
+ '''(experimental) Amazon Linux 2023.
4199
+
4200
+ :stability: experimental
4201
+ '''
4202
+ return typing.cast("Os", jsii.sget(cls, "LINUX_AMAZON_2023"))
4203
+
3970
4204
  @jsii.python.classproperty
3971
4205
  @jsii.member(jsii_name="LINUX_UBUNTU")
3972
4206
  def LINUX_UBUNTU(cls) -> "Os":
@@ -3976,6 +4210,24 @@ class Os(metaclass=jsii.JSIIMeta, jsii_type="@cloudsnorkel/cdk-github-runners.Os
3976
4210
  '''
3977
4211
  return typing.cast("Os", jsii.sget(cls, "LINUX_UBUNTU"))
3978
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
+
3979
4231
  @jsii.python.classproperty
3980
4232
  @jsii.member(jsii_name="WINDOWS")
3981
4233
  def WINDOWS(cls) -> "Os":
@@ -4403,6 +4655,7 @@ class RunnerImageAsset:
4403
4655
  "builder_type": "builderType",
4404
4656
  "code_build_options": "codeBuildOptions",
4405
4657
  "components": "components",
4658
+ "docker_setup_commands": "dockerSetupCommands",
4406
4659
  "log_removal_policy": "logRemovalPolicy",
4407
4660
  "log_retention": "logRetention",
4408
4661
  "os": "os",
@@ -4411,6 +4664,7 @@ class RunnerImageAsset:
4411
4664
  "security_groups": "securityGroups",
4412
4665
  "subnet_selection": "subnetSelection",
4413
4666
  "vpc": "vpc",
4667
+ "wait_on_deploy": "waitOnDeploy",
4414
4668
  },
4415
4669
  )
4416
4670
  class RunnerImageBuilderProps:
@@ -4424,6 +4678,7 @@ class RunnerImageBuilderProps:
4424
4678
  builder_type: typing.Optional["RunnerImageBuilderType"] = None,
4425
4679
  code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
4426
4680
  components: typing.Optional[typing.Sequence["RunnerImageComponent"]] = None,
4681
+ docker_setup_commands: typing.Optional[typing.Sequence[builtins.str]] = None,
4427
4682
  log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
4428
4683
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
4429
4684
  os: typing.Optional[Os] = None,
@@ -4432,15 +4687,17 @@ class RunnerImageBuilderProps:
4432
4687
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
4433
4688
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
4434
4689
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
4690
+ wait_on_deploy: typing.Optional[builtins.bool] = None,
4435
4691
  ) -> None:
4436
4692
  '''
4437
4693
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
4438
4694
  :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
4439
- :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
4440
- :param base_docker_image: (experimental) Base image from which Docker runner images will be built. 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
4441
4697
  :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
4442
4698
  :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
4443
4699
  :param components: (experimental) Components to install on the image. Default: none
4700
+ :param docker_setup_commands: (experimental) Additional commands to run on the build host before starting the Docker runner image build. Use this to execute commands such as ``docker login`` or ``aws ecr get-login-password`` to pull private base images. Default: []
4444
4701
  :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
4445
4702
  :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
4446
4703
  :param os: (experimental) Image OS. Default: OS.LINUX_UBUNTU
@@ -4449,6 +4706,7 @@ class RunnerImageBuilderProps:
4449
4706
  :param security_groups: (experimental) Security Groups to assign to this instance.
4450
4707
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
4451
4708
  :param vpc: (experimental) VPC to build the image in. Default: no VPC
4709
+ :param wait_on_deploy: (experimental) Wait for image to finish building during deployment. It's usually best to leave this enabled to ensure everything is ready once deployment is done. However, it can be disabled to speed up deployment in case where you have a lot of image components that can take a long time to build. Disabling this option means a finished deployment is not ready to be used. You will have to wait for the image to finish building before the system can be used. Disabling this option may also mean any changes to settings or components can take up to a week (default rebuild interval) to take effect. Default: true
4452
4710
 
4453
4711
  :stability: experimental
4454
4712
  '''
@@ -4467,6 +4725,7 @@ class RunnerImageBuilderProps:
4467
4725
  check_type(argname="argument builder_type", value=builder_type, expected_type=type_hints["builder_type"])
4468
4726
  check_type(argname="argument code_build_options", value=code_build_options, expected_type=type_hints["code_build_options"])
4469
4727
  check_type(argname="argument components", value=components, expected_type=type_hints["components"])
4728
+ check_type(argname="argument docker_setup_commands", value=docker_setup_commands, expected_type=type_hints["docker_setup_commands"])
4470
4729
  check_type(argname="argument log_removal_policy", value=log_removal_policy, expected_type=type_hints["log_removal_policy"])
4471
4730
  check_type(argname="argument log_retention", value=log_retention, expected_type=type_hints["log_retention"])
4472
4731
  check_type(argname="argument os", value=os, expected_type=type_hints["os"])
@@ -4475,6 +4734,7 @@ class RunnerImageBuilderProps:
4475
4734
  check_type(argname="argument security_groups", value=security_groups, expected_type=type_hints["security_groups"])
4476
4735
  check_type(argname="argument subnet_selection", value=subnet_selection, expected_type=type_hints["subnet_selection"])
4477
4736
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
4737
+ check_type(argname="argument wait_on_deploy", value=wait_on_deploy, expected_type=type_hints["wait_on_deploy"])
4478
4738
  self._values: typing.Dict[builtins.str, typing.Any] = {}
4479
4739
  if architecture is not None:
4480
4740
  self._values["architecture"] = architecture
@@ -4490,6 +4750,8 @@ class RunnerImageBuilderProps:
4490
4750
  self._values["code_build_options"] = code_build_options
4491
4751
  if components is not None:
4492
4752
  self._values["components"] = components
4753
+ if docker_setup_commands is not None:
4754
+ self._values["docker_setup_commands"] = docker_setup_commands
4493
4755
  if log_removal_policy is not None:
4494
4756
  self._values["log_removal_policy"] = log_removal_policy
4495
4757
  if log_retention is not None:
@@ -4506,6 +4768,8 @@ class RunnerImageBuilderProps:
4506
4768
  self._values["subnet_selection"] = subnet_selection
4507
4769
  if vpc is not None:
4508
4770
  self._values["vpc"] = vpc
4771
+ if wait_on_deploy is not None:
4772
+ self._values["wait_on_deploy"] = wait_on_deploy
4509
4773
 
4510
4774
  @builtins.property
4511
4775
  def architecture(self) -> typing.Optional[Architecture]:
@@ -4537,7 +4801,7 @@ class RunnerImageBuilderProps:
4537
4801
 
4538
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.
4539
4803
 
4540
- :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
4541
4805
 
4542
4806
  :stability: experimental
4543
4807
  '''
@@ -4548,7 +4812,9 @@ class RunnerImageBuilderProps:
4548
4812
  def base_docker_image(self) -> typing.Optional[builtins.str]:
4549
4813
  '''(experimental) Base image from which Docker runner images will be built.
4550
4814
 
4551
- :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
4815
+ When using private images from a different account or not on ECR, you may need to include additional setup commands with {@link dockerSetupCommands}.
4816
+
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
4552
4818
 
4553
4819
  :stability: experimental
4554
4820
  '''
@@ -4587,6 +4853,19 @@ class RunnerImageBuilderProps:
4587
4853
  result = self._values.get("components")
4588
4854
  return typing.cast(typing.Optional[typing.List["RunnerImageComponent"]], result)
4589
4855
 
4856
+ @builtins.property
4857
+ def docker_setup_commands(self) -> typing.Optional[typing.List[builtins.str]]:
4858
+ '''(experimental) Additional commands to run on the build host before starting the Docker runner image build.
4859
+
4860
+ Use this to execute commands such as ``docker login`` or ``aws ecr get-login-password`` to pull private base images.
4861
+
4862
+ :default: []
4863
+
4864
+ :stability: experimental
4865
+ '''
4866
+ result = self._values.get("docker_setup_commands")
4867
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
4868
+
4590
4869
  @builtins.property
4591
4870
  def log_removal_policy(self) -> typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy]:
4592
4871
  '''(experimental) Removal policy for logs of image builds.
@@ -4691,6 +4970,23 @@ class RunnerImageBuilderProps:
4691
4970
  result = self._values.get("vpc")
4692
4971
  return typing.cast(typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc], result)
4693
4972
 
4973
+ @builtins.property
4974
+ def wait_on_deploy(self) -> typing.Optional[builtins.bool]:
4975
+ '''(experimental) Wait for image to finish building during deployment.
4976
+
4977
+ It's usually best to leave this enabled to ensure everything is ready once deployment is done. However, it can be disabled to speed up deployment in case where you have a lot of image components that can take a long time to build.
4978
+
4979
+ Disabling this option means a finished deployment is not ready to be used. You will have to wait for the image to finish building before the system can be used.
4980
+
4981
+ Disabling this option may also mean any changes to settings or components can take up to a week (default rebuild interval) to take effect.
4982
+
4983
+ :default: true
4984
+
4985
+ :stability: experimental
4986
+ '''
4987
+ result = self._values.get("wait_on_deploy")
4988
+ return typing.cast(typing.Optional[builtins.bool], result)
4989
+
4694
4990
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
4695
4991
  return isinstance(rhs, self.__class__) and rhs._values == self._values
4696
4992
 
@@ -4751,6 +5047,15 @@ class RunnerImageComponent(
4751
5047
  '''
4752
5048
  return typing.cast("RunnerImageComponent", jsii.sinvoke(cls, "awsCli", []))
4753
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
+
4754
5059
  @jsii.member(jsii_name="custom")
4755
5060
  @builtins.classmethod
4756
5061
  def custom(
@@ -4807,6 +5112,29 @@ class RunnerImageComponent(
4807
5112
  '''
4808
5113
  return typing.cast("RunnerImageComponent", jsii.sinvoke(cls, "dockerInDocker", []))
4809
5114
 
5115
+ @jsii.member(jsii_name="environmentVariables")
5116
+ @builtins.classmethod
5117
+ def environment_variables(
5118
+ cls,
5119
+ vars: typing.Mapping[builtins.str, builtins.str],
5120
+ ) -> "RunnerImageComponent":
5121
+ '''(experimental) A component to add environment variables for jobs the runner executes.
5122
+
5123
+ These variables only affect the jobs ran by the runner. They are not global. They do not affect other components.
5124
+
5125
+ It is not recommended to use this component to pass secrets. Instead, use GitHub Secrets or AWS Secrets Manager.
5126
+
5127
+ Must be used after the {@link githubRunner} component.
5128
+
5129
+ :param vars: -
5130
+
5131
+ :stability: experimental
5132
+ '''
5133
+ if __debug__:
5134
+ type_hints = typing.get_type_hints(_typecheckingstub__604cc9b160ccf839230b5f673dff20a8c9722aa81c88ef3ccadcdfcec778ec1a)
5135
+ check_type(argname="argument vars", value=vars, expected_type=type_hints["vars"])
5136
+ return typing.cast("RunnerImageComponent", jsii.sinvoke(cls, "environmentVariables", [vars]))
5137
+
4810
5138
  @jsii.member(jsii_name="extraCertificates")
4811
5139
  @builtins.classmethod
4812
5140
  def extra_certificates(
@@ -5117,17 +5445,23 @@ class RunnerImageComponentCustomProps:
5117
5445
  @jsii.data_type(
5118
5446
  jsii_type="@cloudsnorkel/cdk-github-runners.RunnerProviderProps",
5119
5447
  jsii_struct_bases=[],
5120
- name_mapping={"log_retention": "logRetention", "retry_options": "retryOptions"},
5448
+ name_mapping={
5449
+ "default_labels": "defaultLabels",
5450
+ "log_retention": "logRetention",
5451
+ "retry_options": "retryOptions",
5452
+ },
5121
5453
  )
5122
5454
  class RunnerProviderProps:
5123
5455
  def __init__(
5124
5456
  self,
5125
5457
  *,
5458
+ default_labels: typing.Optional[builtins.bool] = None,
5126
5459
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
5127
5460
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
5128
5461
  ) -> None:
5129
5462
  '''(experimental) Common properties for all runner providers.
5130
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
5131
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
5132
5466
  :param retry_options:
5133
5467
 
@@ -5137,14 +5471,30 @@ class RunnerProviderProps:
5137
5471
  retry_options = ProviderRetryOptions(**retry_options)
5138
5472
  if __debug__:
5139
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"])
5140
5475
  check_type(argname="argument log_retention", value=log_retention, expected_type=type_hints["log_retention"])
5141
5476
  check_type(argname="argument retry_options", value=retry_options, expected_type=type_hints["retry_options"])
5142
5477
  self._values: typing.Dict[builtins.str, typing.Any] = {}
5478
+ if default_labels is not None:
5479
+ self._values["default_labels"] = default_labels
5143
5480
  if log_retention is not None:
5144
5481
  self._values["log_retention"] = log_retention
5145
5482
  if retry_options is not None:
5146
5483
  self._values["retry_options"] = retry_options
5147
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
+
5148
5498
  @builtins.property
5149
5499
  def log_retention(
5150
5500
  self,
@@ -5529,6 +5879,99 @@ class StaticRunnerImage(
5529
5879
  return typing.cast(IRunnerImageBuilder, jsii.sinvoke(cls, "fromEcrRepository", [repository, tag, architecture, os]))
5530
5880
 
5531
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
+
5532
5975
  class WindowsComponents(
5533
5976
  metaclass=jsii.JSIIMeta,
5534
5977
  jsii_type="@cloudsnorkel/cdk-github-runners.WindowsComponents",
@@ -5696,7 +6139,7 @@ class AmiBuilder(
5696
6139
  ):
5697
6140
  '''(deprecated) An AMI builder that uses AWS Image Builder to build AMIs pre-baked with all the GitHub Actions runner requirements.
5698
6141
 
5699
- Builders can be used with {@link Ec2Runner }.
6142
+ Builders can be used with {@link Ec2RunnerProvider }.
5700
6143
 
5701
6144
  Each builder re-runs automatically at a set interval to make sure the AMIs contain the latest versions of everything.
5702
6145
 
@@ -5721,7 +6164,7 @@ class AmiBuilder(
5721
6164
  amiBuilder: builder,
5722
6165
  });
5723
6166
 
5724
- :deprecated: use RunnerImageBuilder
6167
+ :deprecated: use RunnerImageBuilder, e.g. with Ec2RunnerProvider.imageBuilder()
5725
6168
 
5726
6169
  :stability: deprecated
5727
6170
  '''
@@ -5749,7 +6192,7 @@ class AmiBuilder(
5749
6192
  :param id: -
5750
6193
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
5751
6194
  :param install_docker: (experimental) Install Docker inside the image, so it can be used by the runner. Default: true
5752
- :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
5753
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
5754
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
5755
6198
  :param os: (experimental) Image OS. Default: OS.LINUX
@@ -5994,7 +6437,7 @@ class AmiBuilder(
5994
6437
  if __debug__:
5995
6438
  type_hints = typing.get_type_hints(_typecheckingstub__8088868062a70621aab7b900883cf52d9c930de8a458039564d69a7d0cc80f52)
5996
6439
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
5997
- jsii.set(self, "components", value)
6440
+ jsii.set(self, "components", value) # pyright: ignore[reportArgumentType]
5998
6441
 
5999
6442
 
6000
6443
  @jsii.implements(IRunnerImageBuilder)
@@ -6237,6 +6680,7 @@ class CodeBuildRunnerProvider(
6237
6680
  *,
6238
6681
  compute_type: typing.Optional[_aws_cdk_aws_codebuild_ceddda9d.ComputeType] = None,
6239
6682
  docker_in_docker: typing.Optional[builtins.bool] = None,
6683
+ group: typing.Optional[builtins.str] = None,
6240
6684
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
6241
6685
  label: typing.Optional[builtins.str] = None,
6242
6686
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -6245,6 +6689,7 @@ class CodeBuildRunnerProvider(
6245
6689
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
6246
6690
  timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
6247
6691
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
6692
+ default_labels: typing.Optional[builtins.bool] = None,
6248
6693
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
6249
6694
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
6250
6695
  ) -> None:
@@ -6253,6 +6698,7 @@ class CodeBuildRunnerProvider(
6253
6698
  :param id: -
6254
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 }
6255
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
6256
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()
6257
6703
  :param label: (deprecated) GitHub Actions label used for this provider. Default: undefined
6258
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']
@@ -6261,6 +6707,7 @@ class CodeBuildRunnerProvider(
6261
6707
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
6262
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)
6263
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
6264
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
6265
6712
  :param retry_options:
6266
6713
 
@@ -6273,6 +6720,7 @@ class CodeBuildRunnerProvider(
6273
6720
  props = CodeBuildRunnerProviderProps(
6274
6721
  compute_type=compute_type,
6275
6722
  docker_in_docker=docker_in_docker,
6723
+ group=group,
6276
6724
  image_builder=image_builder,
6277
6725
  label=label,
6278
6726
  labels=labels,
@@ -6281,6 +6729,7 @@ class CodeBuildRunnerProvider(
6281
6729
  subnet_selection=subnet_selection,
6282
6730
  timeout=timeout,
6283
6731
  vpc=vpc,
6732
+ default_labels=default_labels,
6284
6733
  log_retention=log_retention,
6285
6734
  retry_options=retry_options,
6286
6735
  )
@@ -6301,6 +6750,7 @@ class CodeBuildRunnerProvider(
6301
6750
  builder_type: typing.Optional[RunnerImageBuilderType] = None,
6302
6751
  code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
6303
6752
  components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
6753
+ docker_setup_commands: typing.Optional[typing.Sequence[builtins.str]] = None,
6304
6754
  log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
6305
6755
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
6306
6756
  os: typing.Optional[Os] = None,
@@ -6309,6 +6759,7 @@ class CodeBuildRunnerProvider(
6309
6759
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
6310
6760
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
6311
6761
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
6762
+ wait_on_deploy: typing.Optional[builtins.bool] = None,
6312
6763
  ) -> "IConfigurableRunnerImageBuilder":
6313
6764
  '''(experimental) Create new image builder that builds CodeBuild specific runner images.
6314
6765
 
@@ -6332,11 +6783,12 @@ class CodeBuildRunnerProvider(
6332
6783
  :param id: -
6333
6784
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
6334
6785
  :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
6335
- :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
6336
- :param base_docker_image: (experimental) Base image from which Docker runner images will be built. 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
6337
6788
  :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
6338
6789
  :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
6339
6790
  :param components: (experimental) Components to install on the image. Default: none
6791
+ :param docker_setup_commands: (experimental) Additional commands to run on the build host before starting the Docker runner image build. Use this to execute commands such as ``docker login`` or ``aws ecr get-login-password`` to pull private base images. Default: []
6340
6792
  :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
6341
6793
  :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
6342
6794
  :param os: (experimental) Image OS. Default: OS.LINUX_UBUNTU
@@ -6345,6 +6797,7 @@ class CodeBuildRunnerProvider(
6345
6797
  :param security_groups: (experimental) Security Groups to assign to this instance.
6346
6798
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
6347
6799
  :param vpc: (experimental) VPC to build the image in. Default: no VPC
6800
+ :param wait_on_deploy: (experimental) Wait for image to finish building during deployment. It's usually best to leave this enabled to ensure everything is ready once deployment is done. However, it can be disabled to speed up deployment in case where you have a lot of image components that can take a long time to build. Disabling this option means a finished deployment is not ready to be used. You will have to wait for the image to finish building before the system can be used. Disabling this option may also mean any changes to settings or components can take up to a week (default rebuild interval) to take effect. Default: true
6348
6801
 
6349
6802
  :stability: experimental
6350
6803
  '''
@@ -6360,6 +6813,7 @@ class CodeBuildRunnerProvider(
6360
6813
  builder_type=builder_type,
6361
6814
  code_build_options=code_build_options,
6362
6815
  components=components,
6816
+ docker_setup_commands=docker_setup_commands,
6363
6817
  log_removal_policy=log_removal_policy,
6364
6818
  log_retention=log_retention,
6365
6819
  os=os,
@@ -6368,6 +6822,7 @@ class CodeBuildRunnerProvider(
6368
6822
  security_groups=security_groups,
6369
6823
  subnet_selection=subnet_selection,
6370
6824
  vpc=vpc,
6825
+ wait_on_deploy=wait_on_deploy,
6371
6826
  )
6372
6827
 
6373
6828
  return typing.cast("IConfigurableRunnerImageBuilder", jsii.sinvoke(cls, "imageBuilder", [scope, id, props]))
@@ -6578,10 +7033,12 @@ class CodeBuildRunnerProvider(
6578
7033
  jsii_type="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProviderProps",
6579
7034
  jsii_struct_bases=[RunnerProviderProps],
6580
7035
  name_mapping={
7036
+ "default_labels": "defaultLabels",
6581
7037
  "log_retention": "logRetention",
6582
7038
  "retry_options": "retryOptions",
6583
7039
  "compute_type": "computeType",
6584
7040
  "docker_in_docker": "dockerInDocker",
7041
+ "group": "group",
6585
7042
  "image_builder": "imageBuilder",
6586
7043
  "label": "label",
6587
7044
  "labels": "labels",
@@ -6596,10 +7053,12 @@ class CodeBuildRunnerProviderProps(RunnerProviderProps):
6596
7053
  def __init__(
6597
7054
  self,
6598
7055
  *,
7056
+ default_labels: typing.Optional[builtins.bool] = None,
6599
7057
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
6600
7058
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
6601
7059
  compute_type: typing.Optional[_aws_cdk_aws_codebuild_ceddda9d.ComputeType] = None,
6602
7060
  docker_in_docker: typing.Optional[builtins.bool] = None,
7061
+ group: typing.Optional[builtins.str] = None,
6603
7062
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
6604
7063
  label: typing.Optional[builtins.str] = None,
6605
7064
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -6610,10 +7069,12 @@ class CodeBuildRunnerProviderProps(RunnerProviderProps):
6610
7069
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
6611
7070
  ) -> None:
6612
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
6613
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
6614
7074
  :param retry_options:
6615
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 }
6616
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
6617
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()
6618
7079
  :param label: (deprecated) GitHub Actions label used for this provider. Default: undefined
6619
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']
@@ -6631,10 +7092,12 @@ class CodeBuildRunnerProviderProps(RunnerProviderProps):
6631
7092
  subnet_selection = _aws_cdk_aws_ec2_ceddda9d.SubnetSelection(**subnet_selection)
6632
7093
  if __debug__:
6633
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"])
6634
7096
  check_type(argname="argument log_retention", value=log_retention, expected_type=type_hints["log_retention"])
6635
7097
  check_type(argname="argument retry_options", value=retry_options, expected_type=type_hints["retry_options"])
6636
7098
  check_type(argname="argument compute_type", value=compute_type, expected_type=type_hints["compute_type"])
6637
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"])
6638
7101
  check_type(argname="argument image_builder", value=image_builder, expected_type=type_hints["image_builder"])
6639
7102
  check_type(argname="argument label", value=label, expected_type=type_hints["label"])
6640
7103
  check_type(argname="argument labels", value=labels, expected_type=type_hints["labels"])
@@ -6644,6 +7107,8 @@ class CodeBuildRunnerProviderProps(RunnerProviderProps):
6644
7107
  check_type(argname="argument timeout", value=timeout, expected_type=type_hints["timeout"])
6645
7108
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
6646
7109
  self._values: typing.Dict[builtins.str, typing.Any] = {}
7110
+ if default_labels is not None:
7111
+ self._values["default_labels"] = default_labels
6647
7112
  if log_retention is not None:
6648
7113
  self._values["log_retention"] = log_retention
6649
7114
  if retry_options is not None:
@@ -6652,6 +7117,8 @@ class CodeBuildRunnerProviderProps(RunnerProviderProps):
6652
7117
  self._values["compute_type"] = compute_type
6653
7118
  if docker_in_docker is not None:
6654
7119
  self._values["docker_in_docker"] = docker_in_docker
7120
+ if group is not None:
7121
+ self._values["group"] = group
6655
7122
  if image_builder is not None:
6656
7123
  self._values["image_builder"] = image_builder
6657
7124
  if label is not None:
@@ -6669,6 +7136,19 @@ class CodeBuildRunnerProviderProps(RunnerProviderProps):
6669
7136
  if vpc is not None:
6670
7137
  self._values["vpc"] = vpc
6671
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
+
6672
7152
  @builtins.property
6673
7153
  def log_retention(
6674
7154
  self,
@@ -6725,6 +7205,24 @@ class CodeBuildRunnerProviderProps(RunnerProviderProps):
6725
7205
  result = self._values.get("docker_in_docker")
6726
7206
  return typing.cast(typing.Optional[builtins.bool], result)
6727
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
+
6728
7226
  @builtins.property
6729
7227
  def image_builder(self) -> typing.Optional[IRunnerImageBuilder]:
6730
7228
  '''(experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements.
@@ -6900,7 +7398,7 @@ class ContainerImageBuilder(
6900
7398
  :param scope: -
6901
7399
  :param id: -
6902
7400
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
6903
- :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
6904
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
6905
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
6906
7404
  :param os: (experimental) Image OS. Default: OS.LINUX
@@ -7152,7 +7650,7 @@ class ContainerImageBuilder(
7152
7650
  if __debug__:
7153
7651
  type_hints = typing.get_type_hints(_typecheckingstub__f4c47d52e3f51709153fc49a53f833f06b1fd2ba44d3c86696b418a3bf88a972)
7154
7652
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
7155
- jsii.set(self, "components", value)
7653
+ jsii.set(self, "components", value) # pyright: ignore[reportArgumentType]
7156
7654
 
7157
7655
 
7158
7656
  @jsii.implements(IRunnerProvider)
@@ -7174,6 +7672,7 @@ class Ec2RunnerProvider(
7174
7672
  id: builtins.str,
7175
7673
  *,
7176
7674
  ami_builder: typing.Optional[IRunnerImageBuilder] = None,
7675
+ group: typing.Optional[builtins.str] = None,
7177
7676
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
7178
7677
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
7179
7678
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -7181,10 +7680,12 @@ class Ec2RunnerProvider(
7181
7680
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
7182
7681
  spot: typing.Optional[builtins.bool] = None,
7183
7682
  spot_max_price: typing.Optional[builtins.str] = None,
7683
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
7184
7684
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
7185
7685
  subnet: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.ISubnet] = None,
7186
7686
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
7187
7687
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
7688
+ default_labels: typing.Optional[builtins.bool] = None,
7188
7689
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
7189
7690
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
7190
7691
  ) -> None:
@@ -7192,17 +7693,20 @@ class Ec2RunnerProvider(
7192
7693
  :param scope: -
7193
7694
  :param id: -
7194
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
7195
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()
7196
- :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
7197
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']
7198
7700
  :param security_group: (deprecated) Security Group to assign to launched runner instances. Default: a new security group
7199
7701
  :param security_groups: (experimental) Security groups to assign to launched runner instances. Default: a new security group
7200
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
7201
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.
7202
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
7203
7706
  :param subnet: (deprecated) Subnet where the runner instances will be launched. Default: default subnet of account's default VPC
7204
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
7205
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
7206
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
7207
7711
  :param retry_options:
7208
7712
 
@@ -7214,6 +7718,7 @@ class Ec2RunnerProvider(
7214
7718
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
7215
7719
  props = Ec2RunnerProviderProps(
7216
7720
  ami_builder=ami_builder,
7721
+ group=group,
7217
7722
  image_builder=image_builder,
7218
7723
  instance_type=instance_type,
7219
7724
  labels=labels,
@@ -7221,10 +7726,12 @@ class Ec2RunnerProvider(
7221
7726
  security_groups=security_groups,
7222
7727
  spot=spot,
7223
7728
  spot_max_price=spot_max_price,
7729
+ storage_options=storage_options,
7224
7730
  storage_size=storage_size,
7225
7731
  subnet=subnet,
7226
7732
  subnet_selection=subnet_selection,
7227
7733
  vpc=vpc,
7734
+ default_labels=default_labels,
7228
7735
  log_retention=log_retention,
7229
7736
  retry_options=retry_options,
7230
7737
  )
@@ -7245,6 +7752,7 @@ class Ec2RunnerProvider(
7245
7752
  builder_type: typing.Optional[RunnerImageBuilderType] = None,
7246
7753
  code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
7247
7754
  components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
7755
+ docker_setup_commands: typing.Optional[typing.Sequence[builtins.str]] = None,
7248
7756
  log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
7249
7757
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
7250
7758
  os: typing.Optional[Os] = None,
@@ -7253,6 +7761,7 @@ class Ec2RunnerProvider(
7253
7761
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
7254
7762
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
7255
7763
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
7764
+ wait_on_deploy: typing.Optional[builtins.bool] = None,
7256
7765
  ) -> "IConfigurableRunnerImageBuilder":
7257
7766
  '''(experimental) Create new image builder that builds EC2 specific runner images.
7258
7767
 
@@ -7265,6 +7774,7 @@ class Ec2RunnerProvider(
7265
7774
  Included components:
7266
7775
 
7267
7776
  - ``RunnerImageComponent.requiredPackages()``
7777
+ - ``RunnerImageComponent.cloudWatchAgent()``
7268
7778
  - ``RunnerImageComponent.runnerUser()``
7269
7779
  - ``RunnerImageComponent.git()``
7270
7780
  - ``RunnerImageComponent.githubCli()``
@@ -7276,11 +7786,12 @@ class Ec2RunnerProvider(
7276
7786
  :param id: -
7277
7787
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
7278
7788
  :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
7279
- :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
7280
- :param base_docker_image: (experimental) Base image from which Docker runner images will be built. 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
7281
7791
  :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
7282
7792
  :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
7283
7793
  :param components: (experimental) Components to install on the image. Default: none
7794
+ :param docker_setup_commands: (experimental) Additional commands to run on the build host before starting the Docker runner image build. Use this to execute commands such as ``docker login`` or ``aws ecr get-login-password`` to pull private base images. Default: []
7284
7795
  :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
7285
7796
  :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
7286
7797
  :param os: (experimental) Image OS. Default: OS.LINUX_UBUNTU
@@ -7289,6 +7800,7 @@ class Ec2RunnerProvider(
7289
7800
  :param security_groups: (experimental) Security Groups to assign to this instance.
7290
7801
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
7291
7802
  :param vpc: (experimental) VPC to build the image in. Default: no VPC
7803
+ :param wait_on_deploy: (experimental) Wait for image to finish building during deployment. It's usually best to leave this enabled to ensure everything is ready once deployment is done. However, it can be disabled to speed up deployment in case where you have a lot of image components that can take a long time to build. Disabling this option means a finished deployment is not ready to be used. You will have to wait for the image to finish building before the system can be used. Disabling this option may also mean any changes to settings or components can take up to a week (default rebuild interval) to take effect. Default: true
7292
7804
 
7293
7805
  :stability: experimental
7294
7806
  '''
@@ -7304,6 +7816,7 @@ class Ec2RunnerProvider(
7304
7816
  builder_type=builder_type,
7305
7817
  code_build_options=code_build_options,
7306
7818
  components=components,
7819
+ docker_setup_commands=docker_setup_commands,
7307
7820
  log_removal_policy=log_removal_policy,
7308
7821
  log_retention=log_retention,
7309
7822
  os=os,
@@ -7312,6 +7825,7 @@ class Ec2RunnerProvider(
7312
7825
  security_groups=security_groups,
7313
7826
  subnet_selection=subnet_selection,
7314
7827
  vpc=vpc,
7828
+ wait_on_deploy=wait_on_deploy,
7315
7829
  )
7316
7830
 
7317
7831
  return typing.cast("IConfigurableRunnerImageBuilder", jsii.sinvoke(cls, "imageBuilder", [scope, id, props]))
@@ -7461,9 +7975,11 @@ class Ec2RunnerProvider(
7461
7975
  jsii_type="@cloudsnorkel/cdk-github-runners.Ec2RunnerProviderProps",
7462
7976
  jsii_struct_bases=[RunnerProviderProps],
7463
7977
  name_mapping={
7978
+ "default_labels": "defaultLabels",
7464
7979
  "log_retention": "logRetention",
7465
7980
  "retry_options": "retryOptions",
7466
7981
  "ami_builder": "amiBuilder",
7982
+ "group": "group",
7467
7983
  "image_builder": "imageBuilder",
7468
7984
  "instance_type": "instanceType",
7469
7985
  "labels": "labels",
@@ -7471,6 +7987,7 @@ class Ec2RunnerProvider(
7471
7987
  "security_groups": "securityGroups",
7472
7988
  "spot": "spot",
7473
7989
  "spot_max_price": "spotMaxPrice",
7990
+ "storage_options": "storageOptions",
7474
7991
  "storage_size": "storageSize",
7475
7992
  "subnet": "subnet",
7476
7993
  "subnet_selection": "subnetSelection",
@@ -7481,9 +7998,11 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7481
7998
  def __init__(
7482
7999
  self,
7483
8000
  *,
8001
+ default_labels: typing.Optional[builtins.bool] = None,
7484
8002
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
7485
8003
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
7486
8004
  ami_builder: typing.Optional[IRunnerImageBuilder] = None,
8005
+ group: typing.Optional[builtins.str] = None,
7487
8006
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
7488
8007
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
7489
8008
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -7491,6 +8010,7 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7491
8010
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
7492
8011
  spot: typing.Optional[builtins.bool] = None,
7493
8012
  spot_max_price: typing.Optional[builtins.str] = None,
8013
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
7494
8014
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
7495
8015
  subnet: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.ISubnet] = None,
7496
8016
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -7498,16 +8018,19 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7498
8018
  ) -> None:
7499
8019
  '''(experimental) Properties for {@link Ec2RunnerProvider} construct.
7500
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
7501
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
7502
8023
  :param retry_options:
7503
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
7504
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()
7505
- :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
7506
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']
7507
8029
  :param security_group: (deprecated) Security Group to assign to launched runner instances. Default: a new security group
7508
8030
  :param security_groups: (experimental) Security groups to assign to launched runner instances. Default: a new security group
7509
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
7510
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.
7511
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
7512
8035
  :param subnet: (deprecated) Subnet where the runner instances will be launched. Default: default subnet of account's default VPC
7513
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
@@ -7517,13 +8040,17 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7517
8040
  '''
7518
8041
  if isinstance(retry_options, dict):
7519
8042
  retry_options = ProviderRetryOptions(**retry_options)
8043
+ if isinstance(storage_options, dict):
8044
+ storage_options = StorageOptions(**storage_options)
7520
8045
  if isinstance(subnet_selection, dict):
7521
8046
  subnet_selection = _aws_cdk_aws_ec2_ceddda9d.SubnetSelection(**subnet_selection)
7522
8047
  if __debug__:
7523
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"])
7524
8050
  check_type(argname="argument log_retention", value=log_retention, expected_type=type_hints["log_retention"])
7525
8051
  check_type(argname="argument retry_options", value=retry_options, expected_type=type_hints["retry_options"])
7526
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"])
7527
8054
  check_type(argname="argument image_builder", value=image_builder, expected_type=type_hints["image_builder"])
7528
8055
  check_type(argname="argument instance_type", value=instance_type, expected_type=type_hints["instance_type"])
7529
8056
  check_type(argname="argument labels", value=labels, expected_type=type_hints["labels"])
@@ -7531,17 +8058,22 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7531
8058
  check_type(argname="argument security_groups", value=security_groups, expected_type=type_hints["security_groups"])
7532
8059
  check_type(argname="argument spot", value=spot, expected_type=type_hints["spot"])
7533
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"])
7534
8062
  check_type(argname="argument storage_size", value=storage_size, expected_type=type_hints["storage_size"])
7535
8063
  check_type(argname="argument subnet", value=subnet, expected_type=type_hints["subnet"])
7536
8064
  check_type(argname="argument subnet_selection", value=subnet_selection, expected_type=type_hints["subnet_selection"])
7537
8065
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
7538
8066
  self._values: typing.Dict[builtins.str, typing.Any] = {}
8067
+ if default_labels is not None:
8068
+ self._values["default_labels"] = default_labels
7539
8069
  if log_retention is not None:
7540
8070
  self._values["log_retention"] = log_retention
7541
8071
  if retry_options is not None:
7542
8072
  self._values["retry_options"] = retry_options
7543
8073
  if ami_builder is not None:
7544
8074
  self._values["ami_builder"] = ami_builder
8075
+ if group is not None:
8076
+ self._values["group"] = group
7545
8077
  if image_builder is not None:
7546
8078
  self._values["image_builder"] = image_builder
7547
8079
  if instance_type is not None:
@@ -7556,6 +8088,8 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7556
8088
  self._values["spot"] = spot
7557
8089
  if spot_max_price is not None:
7558
8090
  self._values["spot_max_price"] = spot_max_price
8091
+ if storage_options is not None:
8092
+ self._values["storage_options"] = storage_options
7559
8093
  if storage_size is not None:
7560
8094
  self._values["storage_size"] = storage_size
7561
8095
  if subnet is not None:
@@ -7565,6 +8099,19 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7565
8099
  if vpc is not None:
7566
8100
  self._values["vpc"] = vpc
7567
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
+
7568
8115
  @builtins.property
7569
8116
  def log_retention(
7570
8117
  self,
@@ -7602,6 +8149,24 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7602
8149
  result = self._values.get("ami_builder")
7603
8150
  return typing.cast(typing.Optional[IRunnerImageBuilder], result)
7604
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
+
7605
8170
  @builtins.property
7606
8171
  def image_builder(self) -> typing.Optional[IRunnerImageBuilder]:
7607
8172
  '''(experimental) Runner image builder used to build AMI containing GitHub Runner and all requirements.
@@ -7619,7 +8184,7 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7619
8184
  def instance_type(self) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType]:
7620
8185
  '''(experimental) Instance type for launched runner instances.
7621
8186
 
7622
- :default: m5.large
8187
+ :default: m6i.large
7623
8188
 
7624
8189
  :stability: experimental
7625
8190
  '''
@@ -7693,6 +8258,15 @@ class Ec2RunnerProviderProps(RunnerProviderProps):
7693
8258
  result = self._values.get("spot_max_price")
7694
8259
  return typing.cast(typing.Optional[builtins.str], result)
7695
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
+
7696
8270
  @builtins.property
7697
8271
  def storage_size(self) -> typing.Optional[_aws_cdk_ceddda9d.Size]:
7698
8272
  '''(experimental) Size of volume available for launched runner instances.
@@ -7784,6 +8358,7 @@ class EcsRunnerProvider(
7784
8358
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
7785
8359
  cpu: typing.Optional[jsii.Number] = None,
7786
8360
  docker_in_docker: typing.Optional[builtins.bool] = None,
8361
+ group: typing.Optional[builtins.str] = None,
7787
8362
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
7788
8363
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
7789
8364
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -7791,12 +8366,16 @@ class EcsRunnerProvider(
7791
8366
  memory_limit_mib: typing.Optional[jsii.Number] = None,
7792
8367
  memory_reservation_mib: typing.Optional[jsii.Number] = None,
7793
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,
7794
8371
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
7795
8372
  spot: typing.Optional[builtins.bool] = None,
7796
8373
  spot_max_price: typing.Optional[builtins.str] = None,
8374
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
7797
8375
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
7798
8376
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
7799
8377
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
8378
+ default_labels: typing.Optional[builtins.bool] = None,
7800
8379
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
7801
8380
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
7802
8381
  ) -> None:
@@ -7808,19 +8387,24 @@ class EcsRunnerProvider(
7808
8387
  :param cluster: (experimental) Existing ECS cluster to use. Default: a new cluster
7809
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
7810
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
7811
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()
7812
- :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
7813
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']
7814
8394
  :param max_instances: (experimental) The maximum number of instances to run in the cluster. Only used when creating a new cluster. Default: 5
7815
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
7816
8396
  :param memory_reservation_mib: (experimental) The soft limit (in MiB) of memory to reserve for the container. Default: undefined
7817
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)
7818
8400
  :param security_groups: (experimental) Security groups to assign to the task. Default: a new security group
7819
8401
  :param spot: (experimental) Use spot capacity. Default: false (true if spotMaxPrice is specified)
7820
8402
  :param spot_max_price: (experimental) Maximum price for spot instances.
8403
+ :param storage_options: (experimental) Options for runner instance storage volume.
7821
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)
7822
8405
  :param subnet_selection: (experimental) Subnets to run the runners in. Default: ECS default
7823
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
7824
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
7825
8409
  :param retry_options:
7826
8410
 
@@ -7836,6 +8420,7 @@ class EcsRunnerProvider(
7836
8420
  cluster=cluster,
7837
8421
  cpu=cpu,
7838
8422
  docker_in_docker=docker_in_docker,
8423
+ group=group,
7839
8424
  image_builder=image_builder,
7840
8425
  instance_type=instance_type,
7841
8426
  labels=labels,
@@ -7843,12 +8428,16 @@ class EcsRunnerProvider(
7843
8428
  memory_limit_mib=memory_limit_mib,
7844
8429
  memory_reservation_mib=memory_reservation_mib,
7845
8430
  min_instances=min_instances,
8431
+ placement_constraints=placement_constraints,
8432
+ placement_strategies=placement_strategies,
7846
8433
  security_groups=security_groups,
7847
8434
  spot=spot,
7848
8435
  spot_max_price=spot_max_price,
8436
+ storage_options=storage_options,
7849
8437
  storage_size=storage_size,
7850
8438
  subnet_selection=subnet_selection,
7851
8439
  vpc=vpc,
8440
+ default_labels=default_labels,
7852
8441
  log_retention=log_retention,
7853
8442
  retry_options=retry_options,
7854
8443
  )
@@ -7869,6 +8458,7 @@ class EcsRunnerProvider(
7869
8458
  builder_type: typing.Optional[RunnerImageBuilderType] = None,
7870
8459
  code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
7871
8460
  components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
8461
+ docker_setup_commands: typing.Optional[typing.Sequence[builtins.str]] = None,
7872
8462
  log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
7873
8463
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
7874
8464
  os: typing.Optional[Os] = None,
@@ -7877,6 +8467,7 @@ class EcsRunnerProvider(
7877
8467
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
7878
8468
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
7879
8469
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
8470
+ wait_on_deploy: typing.Optional[builtins.bool] = None,
7880
8471
  ) -> "IConfigurableRunnerImageBuilder":
7881
8472
  '''(experimental) Create new image builder that builds ECS specific runner images.
7882
8473
 
@@ -7900,11 +8491,12 @@ class EcsRunnerProvider(
7900
8491
  :param id: -
7901
8492
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
7902
8493
  :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
7903
- :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
7904
- :param base_docker_image: (experimental) Base image from which Docker runner images will be built. 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
7905
8496
  :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
7906
8497
  :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
7907
8498
  :param components: (experimental) Components to install on the image. Default: none
8499
+ :param docker_setup_commands: (experimental) Additional commands to run on the build host before starting the Docker runner image build. Use this to execute commands such as ``docker login`` or ``aws ecr get-login-password`` to pull private base images. Default: []
7908
8500
  :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
7909
8501
  :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
7910
8502
  :param os: (experimental) Image OS. Default: OS.LINUX_UBUNTU
@@ -7913,6 +8505,7 @@ class EcsRunnerProvider(
7913
8505
  :param security_groups: (experimental) Security Groups to assign to this instance.
7914
8506
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
7915
8507
  :param vpc: (experimental) VPC to build the image in. Default: no VPC
8508
+ :param wait_on_deploy: (experimental) Wait for image to finish building during deployment. It's usually best to leave this enabled to ensure everything is ready once deployment is done. However, it can be disabled to speed up deployment in case where you have a lot of image components that can take a long time to build. Disabling this option means a finished deployment is not ready to be used. You will have to wait for the image to finish building before the system can be used. Disabling this option may also mean any changes to settings or components can take up to a week (default rebuild interval) to take effect. Default: true
7916
8509
 
7917
8510
  :stability: experimental
7918
8511
  '''
@@ -7928,6 +8521,7 @@ class EcsRunnerProvider(
7928
8521
  builder_type=builder_type,
7929
8522
  code_build_options=code_build_options,
7930
8523
  components=components,
8524
+ docker_setup_commands=docker_setup_commands,
7931
8525
  log_removal_policy=log_removal_policy,
7932
8526
  log_retention=log_retention,
7933
8527
  os=os,
@@ -7936,6 +8530,7 @@ class EcsRunnerProvider(
7936
8530
  security_groups=security_groups,
7937
8531
  subnet_selection=subnet_selection,
7938
8532
  vpc=vpc,
8533
+ wait_on_deploy=wait_on_deploy,
7939
8534
  )
7940
8535
 
7941
8536
  return typing.cast("IConfigurableRunnerImageBuilder", jsii.sinvoke(cls, "imageBuilder", [scope, id, props]))
@@ -8082,6 +8677,7 @@ class EcsRunnerProvider(
8082
8677
  jsii_type="@cloudsnorkel/cdk-github-runners.EcsRunnerProviderProps",
8083
8678
  jsii_struct_bases=[RunnerProviderProps],
8084
8679
  name_mapping={
8680
+ "default_labels": "defaultLabels",
8085
8681
  "log_retention": "logRetention",
8086
8682
  "retry_options": "retryOptions",
8087
8683
  "assign_public_ip": "assignPublicIp",
@@ -8089,6 +8685,7 @@ class EcsRunnerProvider(
8089
8685
  "cluster": "cluster",
8090
8686
  "cpu": "cpu",
8091
8687
  "docker_in_docker": "dockerInDocker",
8688
+ "group": "group",
8092
8689
  "image_builder": "imageBuilder",
8093
8690
  "instance_type": "instanceType",
8094
8691
  "labels": "labels",
@@ -8096,9 +8693,12 @@ class EcsRunnerProvider(
8096
8693
  "memory_limit_mib": "memoryLimitMiB",
8097
8694
  "memory_reservation_mib": "memoryReservationMiB",
8098
8695
  "min_instances": "minInstances",
8696
+ "placement_constraints": "placementConstraints",
8697
+ "placement_strategies": "placementStrategies",
8099
8698
  "security_groups": "securityGroups",
8100
8699
  "spot": "spot",
8101
8700
  "spot_max_price": "spotMaxPrice",
8701
+ "storage_options": "storageOptions",
8102
8702
  "storage_size": "storageSize",
8103
8703
  "subnet_selection": "subnetSelection",
8104
8704
  "vpc": "vpc",
@@ -8108,6 +8708,7 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8108
8708
  def __init__(
8109
8709
  self,
8110
8710
  *,
8711
+ default_labels: typing.Optional[builtins.bool] = None,
8111
8712
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
8112
8713
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
8113
8714
  assign_public_ip: typing.Optional[builtins.bool] = None,
@@ -8115,6 +8716,7 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8115
8716
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
8116
8717
  cpu: typing.Optional[jsii.Number] = None,
8117
8718
  docker_in_docker: typing.Optional[builtins.bool] = None,
8719
+ group: typing.Optional[builtins.str] = None,
8118
8720
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
8119
8721
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
8120
8722
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -8122,15 +8724,19 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8122
8724
  memory_limit_mib: typing.Optional[jsii.Number] = None,
8123
8725
  memory_reservation_mib: typing.Optional[jsii.Number] = None,
8124
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,
8125
8729
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
8126
8730
  spot: typing.Optional[builtins.bool] = None,
8127
8731
  spot_max_price: typing.Optional[builtins.str] = None,
8732
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
8128
8733
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
8129
8734
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
8130
8735
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
8131
8736
  ) -> None:
8132
8737
  '''(experimental) Properties for EcsRunnerProvider.
8133
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
8134
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
8135
8741
  :param retry_options:
8136
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
@@ -8138,16 +8744,20 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8138
8744
  :param cluster: (experimental) Existing ECS cluster to use. Default: a new cluster
8139
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
8140
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
8141
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()
8142
- :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
8143
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']
8144
8751
  :param max_instances: (experimental) The maximum number of instances to run in the cluster. Only used when creating a new cluster. Default: 5
8145
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
8146
8753
  :param memory_reservation_mib: (experimental) The soft limit (in MiB) of memory to reserve for the container. Default: undefined
8147
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)
8148
8757
  :param security_groups: (experimental) Security groups to assign to the task. Default: a new security group
8149
8758
  :param spot: (experimental) Use spot capacity. Default: false (true if spotMaxPrice is specified)
8150
8759
  :param spot_max_price: (experimental) Maximum price for spot instances.
8760
+ :param storage_options: (experimental) Options for runner instance storage volume.
8151
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)
8152
8762
  :param subnet_selection: (experimental) Subnets to run the runners in. Default: ECS default
8153
8763
  :param vpc: (experimental) VPC to launch the runners in. Default: default account VPC
@@ -8156,10 +8766,13 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8156
8766
  '''
8157
8767
  if isinstance(retry_options, dict):
8158
8768
  retry_options = ProviderRetryOptions(**retry_options)
8769
+ if isinstance(storage_options, dict):
8770
+ storage_options = StorageOptions(**storage_options)
8159
8771
  if isinstance(subnet_selection, dict):
8160
8772
  subnet_selection = _aws_cdk_aws_ec2_ceddda9d.SubnetSelection(**subnet_selection)
8161
8773
  if __debug__:
8162
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"])
8163
8776
  check_type(argname="argument log_retention", value=log_retention, expected_type=type_hints["log_retention"])
8164
8777
  check_type(argname="argument retry_options", value=retry_options, expected_type=type_hints["retry_options"])
8165
8778
  check_type(argname="argument assign_public_ip", value=assign_public_ip, expected_type=type_hints["assign_public_ip"])
@@ -8167,6 +8780,7 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8167
8780
  check_type(argname="argument cluster", value=cluster, expected_type=type_hints["cluster"])
8168
8781
  check_type(argname="argument cpu", value=cpu, expected_type=type_hints["cpu"])
8169
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"])
8170
8784
  check_type(argname="argument image_builder", value=image_builder, expected_type=type_hints["image_builder"])
8171
8785
  check_type(argname="argument instance_type", value=instance_type, expected_type=type_hints["instance_type"])
8172
8786
  check_type(argname="argument labels", value=labels, expected_type=type_hints["labels"])
@@ -8174,13 +8788,18 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8174
8788
  check_type(argname="argument memory_limit_mib", value=memory_limit_mib, expected_type=type_hints["memory_limit_mib"])
8175
8789
  check_type(argname="argument memory_reservation_mib", value=memory_reservation_mib, expected_type=type_hints["memory_reservation_mib"])
8176
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"])
8177
8793
  check_type(argname="argument security_groups", value=security_groups, expected_type=type_hints["security_groups"])
8178
8794
  check_type(argname="argument spot", value=spot, expected_type=type_hints["spot"])
8179
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"])
8180
8797
  check_type(argname="argument storage_size", value=storage_size, expected_type=type_hints["storage_size"])
8181
8798
  check_type(argname="argument subnet_selection", value=subnet_selection, expected_type=type_hints["subnet_selection"])
8182
8799
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
8183
8800
  self._values: typing.Dict[builtins.str, typing.Any] = {}
8801
+ if default_labels is not None:
8802
+ self._values["default_labels"] = default_labels
8184
8803
  if log_retention is not None:
8185
8804
  self._values["log_retention"] = log_retention
8186
8805
  if retry_options is not None:
@@ -8195,6 +8814,8 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8195
8814
  self._values["cpu"] = cpu
8196
8815
  if docker_in_docker is not None:
8197
8816
  self._values["docker_in_docker"] = docker_in_docker
8817
+ if group is not None:
8818
+ self._values["group"] = group
8198
8819
  if image_builder is not None:
8199
8820
  self._values["image_builder"] = image_builder
8200
8821
  if instance_type is not None:
@@ -8209,12 +8830,18 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8209
8830
  self._values["memory_reservation_mib"] = memory_reservation_mib
8210
8831
  if min_instances is not None:
8211
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
8212
8837
  if security_groups is not None:
8213
8838
  self._values["security_groups"] = security_groups
8214
8839
  if spot is not None:
8215
8840
  self._values["spot"] = spot
8216
8841
  if spot_max_price is not None:
8217
8842
  self._values["spot_max_price"] = spot_max_price
8843
+ if storage_options is not None:
8844
+ self._values["storage_options"] = storage_options
8218
8845
  if storage_size is not None:
8219
8846
  self._values["storage_size"] = storage_size
8220
8847
  if subnet_selection is not None:
@@ -8222,6 +8849,19 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8222
8849
  if vpc is not None:
8223
8850
  self._values["vpc"] = vpc
8224
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
+
8225
8865
  @builtins.property
8226
8866
  def log_retention(
8227
8867
  self,
@@ -8315,6 +8955,24 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8315
8955
  result = self._values.get("docker_in_docker")
8316
8956
  return typing.cast(typing.Optional[builtins.bool], result)
8317
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
+
8318
8976
  @builtins.property
8319
8977
  def image_builder(self) -> typing.Optional[IRunnerImageBuilder]:
8320
8978
  '''(experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements.
@@ -8334,7 +8992,7 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8334
8992
 
8335
8993
  Only used when creating a new cluster.
8336
8994
 
8337
- :default: m5.large or m6g.large
8995
+ :default: m6i.large or m6g.large
8338
8996
 
8339
8997
  :stability: experimental
8340
8998
  '''
@@ -8404,6 +9062,36 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8404
9062
  result = self._values.get("min_instances")
8405
9063
  return typing.cast(typing.Optional[jsii.Number], result)
8406
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
+
8407
9095
  @builtins.property
8408
9096
  def security_groups(
8409
9097
  self,
@@ -8437,6 +9125,15 @@ class EcsRunnerProviderProps(RunnerProviderProps):
8437
9125
  result = self._values.get("spot_max_price")
8438
9126
  return typing.cast(typing.Optional[builtins.str], result)
8439
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
+
8440
9137
  @builtins.property
8441
9138
  def storage_size(self) -> typing.Optional[_aws_cdk_ceddda9d.Size]:
8442
9139
  '''(experimental) Size of volume available for launched cluster instances.
@@ -8512,6 +9209,7 @@ class FargateRunnerProvider(
8512
9209
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
8513
9210
  cpu: typing.Optional[jsii.Number] = None,
8514
9211
  ephemeral_storage_gib: typing.Optional[jsii.Number] = None,
9212
+ group: typing.Optional[builtins.str] = None,
8515
9213
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
8516
9214
  label: typing.Optional[builtins.str] = None,
8517
9215
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -8521,6 +9219,7 @@ class FargateRunnerProvider(
8521
9219
  spot: typing.Optional[builtins.bool] = None,
8522
9220
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
8523
9221
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
9222
+ default_labels: typing.Optional[builtins.bool] = None,
8524
9223
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
8525
9224
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
8526
9225
  ) -> None:
@@ -8531,6 +9230,7 @@ class FargateRunnerProvider(
8531
9230
  :param cluster: (experimental) Existing Fargate cluster to use. Default: a new cluster
8532
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
8533
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
8534
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()
8535
9235
  :param label: (deprecated) GitHub Actions label used for this provider. Default: undefined
8536
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']
@@ -8540,6 +9240,7 @@ class FargateRunnerProvider(
8540
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
8541
9241
  :param subnet_selection: (experimental) Subnets to run the runners in. Default: Fargate default
8542
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
8543
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
8544
9245
  :param retry_options:
8545
9246
 
@@ -8554,6 +9255,7 @@ class FargateRunnerProvider(
8554
9255
  cluster=cluster,
8555
9256
  cpu=cpu,
8556
9257
  ephemeral_storage_gib=ephemeral_storage_gib,
9258
+ group=group,
8557
9259
  image_builder=image_builder,
8558
9260
  label=label,
8559
9261
  labels=labels,
@@ -8563,6 +9265,7 @@ class FargateRunnerProvider(
8563
9265
  spot=spot,
8564
9266
  subnet_selection=subnet_selection,
8565
9267
  vpc=vpc,
9268
+ default_labels=default_labels,
8566
9269
  log_retention=log_retention,
8567
9270
  retry_options=retry_options,
8568
9271
  )
@@ -8583,6 +9286,7 @@ class FargateRunnerProvider(
8583
9286
  builder_type: typing.Optional[RunnerImageBuilderType] = None,
8584
9287
  code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
8585
9288
  components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
9289
+ docker_setup_commands: typing.Optional[typing.Sequence[builtins.str]] = None,
8586
9290
  log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
8587
9291
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
8588
9292
  os: typing.Optional[Os] = None,
@@ -8591,6 +9295,7 @@ class FargateRunnerProvider(
8591
9295
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
8592
9296
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
8593
9297
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
9298
+ wait_on_deploy: typing.Optional[builtins.bool] = None,
8594
9299
  ) -> "IConfigurableRunnerImageBuilder":
8595
9300
  '''(experimental) Create new image builder that builds Fargate specific runner images.
8596
9301
 
@@ -8613,11 +9318,12 @@ class FargateRunnerProvider(
8613
9318
  :param id: -
8614
9319
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
8615
9320
  :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
8616
- :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
8617
- :param base_docker_image: (experimental) Base image from which Docker runner images will be built. 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
8618
9323
  :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
8619
9324
  :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
8620
9325
  :param components: (experimental) Components to install on the image. Default: none
9326
+ :param docker_setup_commands: (experimental) Additional commands to run on the build host before starting the Docker runner image build. Use this to execute commands such as ``docker login`` or ``aws ecr get-login-password`` to pull private base images. Default: []
8621
9327
  :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
8622
9328
  :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
8623
9329
  :param os: (experimental) Image OS. Default: OS.LINUX_UBUNTU
@@ -8626,6 +9332,7 @@ class FargateRunnerProvider(
8626
9332
  :param security_groups: (experimental) Security Groups to assign to this instance.
8627
9333
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
8628
9334
  :param vpc: (experimental) VPC to build the image in. Default: no VPC
9335
+ :param wait_on_deploy: (experimental) Wait for image to finish building during deployment. It's usually best to leave this enabled to ensure everything is ready once deployment is done. However, it can be disabled to speed up deployment in case where you have a lot of image components that can take a long time to build. Disabling this option means a finished deployment is not ready to be used. You will have to wait for the image to finish building before the system can be used. Disabling this option may also mean any changes to settings or components can take up to a week (default rebuild interval) to take effect. Default: true
8629
9336
 
8630
9337
  :stability: experimental
8631
9338
  '''
@@ -8641,6 +9348,7 @@ class FargateRunnerProvider(
8641
9348
  builder_type=builder_type,
8642
9349
  code_build_options=code_build_options,
8643
9350
  components=components,
9351
+ docker_setup_commands=docker_setup_commands,
8644
9352
  log_removal_policy=log_removal_policy,
8645
9353
  log_retention=log_retention,
8646
9354
  os=os,
@@ -8649,6 +9357,7 @@ class FargateRunnerProvider(
8649
9357
  security_groups=security_groups,
8650
9358
  subnet_selection=subnet_selection,
8651
9359
  vpc=vpc,
9360
+ wait_on_deploy=wait_on_deploy,
8652
9361
  )
8653
9362
 
8654
9363
  return typing.cast("IConfigurableRunnerImageBuilder", jsii.sinvoke(cls, "imageBuilder", [scope, id, props]))
@@ -8907,12 +9616,14 @@ class FargateRunnerProvider(
8907
9616
  jsii_type="@cloudsnorkel/cdk-github-runners.FargateRunnerProviderProps",
8908
9617
  jsii_struct_bases=[RunnerProviderProps],
8909
9618
  name_mapping={
9619
+ "default_labels": "defaultLabels",
8910
9620
  "log_retention": "logRetention",
8911
9621
  "retry_options": "retryOptions",
8912
9622
  "assign_public_ip": "assignPublicIp",
8913
9623
  "cluster": "cluster",
8914
9624
  "cpu": "cpu",
8915
9625
  "ephemeral_storage_gib": "ephemeralStorageGiB",
9626
+ "group": "group",
8916
9627
  "image_builder": "imageBuilder",
8917
9628
  "label": "label",
8918
9629
  "labels": "labels",
@@ -8928,12 +9639,14 @@ class FargateRunnerProviderProps(RunnerProviderProps):
8928
9639
  def __init__(
8929
9640
  self,
8930
9641
  *,
9642
+ default_labels: typing.Optional[builtins.bool] = None,
8931
9643
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
8932
9644
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
8933
9645
  assign_public_ip: typing.Optional[builtins.bool] = None,
8934
9646
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
8935
9647
  cpu: typing.Optional[jsii.Number] = None,
8936
9648
  ephemeral_storage_gib: typing.Optional[jsii.Number] = None,
9649
+ group: typing.Optional[builtins.str] = None,
8937
9650
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
8938
9651
  label: typing.Optional[builtins.str] = None,
8939
9652
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -8946,12 +9659,14 @@ class FargateRunnerProviderProps(RunnerProviderProps):
8946
9659
  ) -> None:
8947
9660
  '''(experimental) Properties for FargateRunnerProvider.
8948
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
8949
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
8950
9664
  :param retry_options:
8951
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
8952
9666
  :param cluster: (experimental) Existing Fargate cluster to use. Default: a new cluster
8953
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
8954
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
8955
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()
8956
9671
  :param label: (deprecated) GitHub Actions label used for this provider. Default: undefined
8957
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']
@@ -8970,12 +9685,14 @@ class FargateRunnerProviderProps(RunnerProviderProps):
8970
9685
  subnet_selection = _aws_cdk_aws_ec2_ceddda9d.SubnetSelection(**subnet_selection)
8971
9686
  if __debug__:
8972
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"])
8973
9689
  check_type(argname="argument log_retention", value=log_retention, expected_type=type_hints["log_retention"])
8974
9690
  check_type(argname="argument retry_options", value=retry_options, expected_type=type_hints["retry_options"])
8975
9691
  check_type(argname="argument assign_public_ip", value=assign_public_ip, expected_type=type_hints["assign_public_ip"])
8976
9692
  check_type(argname="argument cluster", value=cluster, expected_type=type_hints["cluster"])
8977
9693
  check_type(argname="argument cpu", value=cpu, expected_type=type_hints["cpu"])
8978
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"])
8979
9696
  check_type(argname="argument image_builder", value=image_builder, expected_type=type_hints["image_builder"])
8980
9697
  check_type(argname="argument label", value=label, expected_type=type_hints["label"])
8981
9698
  check_type(argname="argument labels", value=labels, expected_type=type_hints["labels"])
@@ -8986,6 +9703,8 @@ class FargateRunnerProviderProps(RunnerProviderProps):
8986
9703
  check_type(argname="argument subnet_selection", value=subnet_selection, expected_type=type_hints["subnet_selection"])
8987
9704
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
8988
9705
  self._values: typing.Dict[builtins.str, typing.Any] = {}
9706
+ if default_labels is not None:
9707
+ self._values["default_labels"] = default_labels
8989
9708
  if log_retention is not None:
8990
9709
  self._values["log_retention"] = log_retention
8991
9710
  if retry_options is not None:
@@ -8998,6 +9717,8 @@ class FargateRunnerProviderProps(RunnerProviderProps):
8998
9717
  self._values["cpu"] = cpu
8999
9718
  if ephemeral_storage_gib is not None:
9000
9719
  self._values["ephemeral_storage_gib"] = ephemeral_storage_gib
9720
+ if group is not None:
9721
+ self._values["group"] = group
9001
9722
  if image_builder is not None:
9002
9723
  self._values["image_builder"] = image_builder
9003
9724
  if label is not None:
@@ -9017,6 +9738,19 @@ class FargateRunnerProviderProps(RunnerProviderProps):
9017
9738
  if vpc is not None:
9018
9739
  self._values["vpc"] = vpc
9019
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
+
9020
9754
  @builtins.property
9021
9755
  def log_retention(
9022
9756
  self,
@@ -9108,6 +9842,24 @@ class FargateRunnerProviderProps(RunnerProviderProps):
9108
9842
  result = self._values.get("ephemeral_storage_gib")
9109
9843
  return typing.cast(typing.Optional[jsii.Number], result)
9110
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
+
9111
9863
  @builtins.property
9112
9864
  def image_builder(self) -> typing.Optional[IRunnerImageBuilder]:
9113
9865
  '''(experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements.
@@ -9361,6 +10113,7 @@ class LambdaRunner(
9361
10113
  id: builtins.str,
9362
10114
  *,
9363
10115
  ephemeral_storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
10116
+ group: typing.Optional[builtins.str] = None,
9364
10117
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
9365
10118
  label: typing.Optional[builtins.str] = None,
9366
10119
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -9370,6 +10123,7 @@ class LambdaRunner(
9370
10123
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
9371
10124
  timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
9372
10125
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
10126
+ default_labels: typing.Optional[builtins.bool] = None,
9373
10127
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
9374
10128
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
9375
10129
  ) -> None:
@@ -9377,6 +10131,7 @@ class LambdaRunner(
9377
10131
  :param scope: -
9378
10132
  :param id: -
9379
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
9380
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()
9381
10136
  :param label: (deprecated) GitHub Actions label used for this provider. Default: undefined
9382
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']
@@ -9386,6 +10141,7 @@ class LambdaRunner(
9386
10141
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
9387
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)
9388
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
9389
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
9390
10146
  :param retry_options:
9391
10147
 
@@ -9397,6 +10153,7 @@ class LambdaRunner(
9397
10153
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
9398
10154
  props = LambdaRunnerProviderProps(
9399
10155
  ephemeral_storage_size=ephemeral_storage_size,
10156
+ group=group,
9400
10157
  image_builder=image_builder,
9401
10158
  label=label,
9402
10159
  labels=labels,
@@ -9406,6 +10163,7 @@ class LambdaRunner(
9406
10163
  subnet_selection=subnet_selection,
9407
10164
  timeout=timeout,
9408
10165
  vpc=vpc,
10166
+ default_labels=default_labels,
9409
10167
  log_retention=log_retention,
9410
10168
  retry_options=retry_options,
9411
10169
  )
@@ -9417,9 +10175,11 @@ class LambdaRunner(
9417
10175
  jsii_type="@cloudsnorkel/cdk-github-runners.LambdaRunnerProviderProps",
9418
10176
  jsii_struct_bases=[RunnerProviderProps],
9419
10177
  name_mapping={
10178
+ "default_labels": "defaultLabels",
9420
10179
  "log_retention": "logRetention",
9421
10180
  "retry_options": "retryOptions",
9422
10181
  "ephemeral_storage_size": "ephemeralStorageSize",
10182
+ "group": "group",
9423
10183
  "image_builder": "imageBuilder",
9424
10184
  "label": "label",
9425
10185
  "labels": "labels",
@@ -9435,9 +10195,11 @@ class LambdaRunnerProviderProps(RunnerProviderProps):
9435
10195
  def __init__(
9436
10196
  self,
9437
10197
  *,
10198
+ default_labels: typing.Optional[builtins.bool] = None,
9438
10199
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
9439
10200
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
9440
10201
  ephemeral_storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
10202
+ group: typing.Optional[builtins.str] = None,
9441
10203
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
9442
10204
  label: typing.Optional[builtins.str] = None,
9443
10205
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -9449,9 +10211,11 @@ class LambdaRunnerProviderProps(RunnerProviderProps):
9449
10211
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
9450
10212
  ) -> None:
9451
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
9452
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
9453
10216
  :param retry_options:
9454
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
9455
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()
9456
10220
  :param label: (deprecated) GitHub Actions label used for this provider. Default: undefined
9457
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']
@@ -9470,9 +10234,11 @@ class LambdaRunnerProviderProps(RunnerProviderProps):
9470
10234
  subnet_selection = _aws_cdk_aws_ec2_ceddda9d.SubnetSelection(**subnet_selection)
9471
10235
  if __debug__:
9472
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"])
9473
10238
  check_type(argname="argument log_retention", value=log_retention, expected_type=type_hints["log_retention"])
9474
10239
  check_type(argname="argument retry_options", value=retry_options, expected_type=type_hints["retry_options"])
9475
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"])
9476
10242
  check_type(argname="argument image_builder", value=image_builder, expected_type=type_hints["image_builder"])
9477
10243
  check_type(argname="argument label", value=label, expected_type=type_hints["label"])
9478
10244
  check_type(argname="argument labels", value=labels, expected_type=type_hints["labels"])
@@ -9483,12 +10249,16 @@ class LambdaRunnerProviderProps(RunnerProviderProps):
9483
10249
  check_type(argname="argument timeout", value=timeout, expected_type=type_hints["timeout"])
9484
10250
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
9485
10251
  self._values: typing.Dict[builtins.str, typing.Any] = {}
10252
+ if default_labels is not None:
10253
+ self._values["default_labels"] = default_labels
9486
10254
  if log_retention is not None:
9487
10255
  self._values["log_retention"] = log_retention
9488
10256
  if retry_options is not None:
9489
10257
  self._values["retry_options"] = retry_options
9490
10258
  if ephemeral_storage_size is not None:
9491
10259
  self._values["ephemeral_storage_size"] = ephemeral_storage_size
10260
+ if group is not None:
10261
+ self._values["group"] = group
9492
10262
  if image_builder is not None:
9493
10263
  self._values["image_builder"] = image_builder
9494
10264
  if label is not None:
@@ -9508,6 +10278,19 @@ class LambdaRunnerProviderProps(RunnerProviderProps):
9508
10278
  if vpc is not None:
9509
10279
  self._values["vpc"] = vpc
9510
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
+
9511
10294
  @builtins.property
9512
10295
  def log_retention(
9513
10296
  self,
@@ -9546,6 +10329,24 @@ class LambdaRunnerProviderProps(RunnerProviderProps):
9546
10329
  result = self._values.get("ephemeral_storage_size")
9547
10330
  return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Size], result)
9548
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
+
9549
10350
  @builtins.property
9550
10351
  def image_builder(self) -> typing.Optional[IRunnerImageBuilder]:
9551
10352
  '''(experimental) Runner image builder used to build Docker images containing GitHub Runner and all requirements.
@@ -9709,6 +10510,7 @@ class RunnerImageBuilder(
9709
10510
  builder_type: typing.Optional[RunnerImageBuilderType] = None,
9710
10511
  code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
9711
10512
  components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
10513
+ docker_setup_commands: typing.Optional[typing.Sequence[builtins.str]] = None,
9712
10514
  log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
9713
10515
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
9714
10516
  os: typing.Optional[Os] = None,
@@ -9717,17 +10519,19 @@ class RunnerImageBuilder(
9717
10519
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
9718
10520
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
9719
10521
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
10522
+ wait_on_deploy: typing.Optional[builtins.bool] = None,
9720
10523
  ) -> None:
9721
10524
  '''
9722
10525
  :param scope: -
9723
10526
  :param id: -
9724
10527
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
9725
10528
  :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
9726
- :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
9727
- :param base_docker_image: (experimental) Base image from which Docker runner images will be built. 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
9728
10531
  :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
9729
10532
  :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
9730
10533
  :param components: (experimental) Components to install on the image. Default: none
10534
+ :param docker_setup_commands: (experimental) Additional commands to run on the build host before starting the Docker runner image build. Use this to execute commands such as ``docker login`` or ``aws ecr get-login-password`` to pull private base images. Default: []
9731
10535
  :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
9732
10536
  :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
9733
10537
  :param os: (experimental) Image OS. Default: OS.LINUX_UBUNTU
@@ -9736,6 +10540,7 @@ class RunnerImageBuilder(
9736
10540
  :param security_groups: (experimental) Security Groups to assign to this instance.
9737
10541
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
9738
10542
  :param vpc: (experimental) VPC to build the image in. Default: no VPC
10543
+ :param wait_on_deploy: (experimental) Wait for image to finish building during deployment. It's usually best to leave this enabled to ensure everything is ready once deployment is done. However, it can be disabled to speed up deployment in case where you have a lot of image components that can take a long time to build. Disabling this option means a finished deployment is not ready to be used. You will have to wait for the image to finish building before the system can be used. Disabling this option may also mean any changes to settings or components can take up to a week (default rebuild interval) to take effect. Default: true
9739
10544
 
9740
10545
  :stability: experimental
9741
10546
  '''
@@ -9751,6 +10556,7 @@ class RunnerImageBuilder(
9751
10556
  builder_type=builder_type,
9752
10557
  code_build_options=code_build_options,
9753
10558
  components=components,
10559
+ docker_setup_commands=docker_setup_commands,
9754
10560
  log_removal_policy=log_removal_policy,
9755
10561
  log_retention=log_retention,
9756
10562
  os=os,
@@ -9759,6 +10565,7 @@ class RunnerImageBuilder(
9759
10565
  security_groups=security_groups,
9760
10566
  subnet_selection=subnet_selection,
9761
10567
  vpc=vpc,
10568
+ wait_on_deploy=wait_on_deploy,
9762
10569
  )
9763
10570
 
9764
10571
  jsii.create(self.__class__, self, [scope, id, props])
@@ -9777,6 +10584,7 @@ class RunnerImageBuilder(
9777
10584
  builder_type: typing.Optional[RunnerImageBuilderType] = None,
9778
10585
  code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
9779
10586
  components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
10587
+ docker_setup_commands: typing.Optional[typing.Sequence[builtins.str]] = None,
9780
10588
  log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
9781
10589
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
9782
10590
  os: typing.Optional[Os] = None,
@@ -9785,6 +10593,7 @@ class RunnerImageBuilder(
9785
10593
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
9786
10594
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
9787
10595
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
10596
+ wait_on_deploy: typing.Optional[builtins.bool] = None,
9788
10597
  ) -> IConfigurableRunnerImageBuilder:
9789
10598
  '''(experimental) Create a new image builder based on the provided properties.
9790
10599
 
@@ -9794,11 +10603,12 @@ class RunnerImageBuilder(
9794
10603
  :param id: -
9795
10604
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
9796
10605
  :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
9797
- :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
9798
- :param base_docker_image: (experimental) Base image from which Docker runner images will be built. 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
9799
10608
  :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
9800
10609
  :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
9801
10610
  :param components: (experimental) Components to install on the image. Default: none
10611
+ :param docker_setup_commands: (experimental) Additional commands to run on the build host before starting the Docker runner image build. Use this to execute commands such as ``docker login`` or ``aws ecr get-login-password`` to pull private base images. Default: []
9802
10612
  :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
9803
10613
  :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
9804
10614
  :param os: (experimental) Image OS. Default: OS.LINUX_UBUNTU
@@ -9807,6 +10617,7 @@ class RunnerImageBuilder(
9807
10617
  :param security_groups: (experimental) Security Groups to assign to this instance.
9808
10618
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
9809
10619
  :param vpc: (experimental) VPC to build the image in. Default: no VPC
10620
+ :param wait_on_deploy: (experimental) Wait for image to finish building during deployment. It's usually best to leave this enabled to ensure everything is ready once deployment is done. However, it can be disabled to speed up deployment in case where you have a lot of image components that can take a long time to build. Disabling this option means a finished deployment is not ready to be used. You will have to wait for the image to finish building before the system can be used. Disabling this option may also mean any changes to settings or components can take up to a week (default rebuild interval) to take effect. Default: true
9810
10621
 
9811
10622
  :stability: experimental
9812
10623
  '''
@@ -9822,6 +10633,7 @@ class RunnerImageBuilder(
9822
10633
  builder_type=builder_type,
9823
10634
  code_build_options=code_build_options,
9824
10635
  components=components,
10636
+ docker_setup_commands=docker_setup_commands,
9825
10637
  log_removal_policy=log_removal_policy,
9826
10638
  log_retention=log_retention,
9827
10639
  os=os,
@@ -9830,6 +10642,7 @@ class RunnerImageBuilder(
9830
10642
  security_groups=security_groups,
9831
10643
  subnet_selection=subnet_selection,
9832
10644
  vpc=vpc,
10645
+ wait_on_deploy=wait_on_deploy,
9833
10646
  )
9834
10647
 
9835
10648
  return typing.cast(IConfigurableRunnerImageBuilder, jsii.sinvoke(cls, "new", [scope, id, props]))
@@ -9925,7 +10738,7 @@ class RunnerImageBuilder(
9925
10738
  if __debug__:
9926
10739
  type_hints = typing.get_type_hints(_typecheckingstub__705c18a1eedaa490aebad511aac32a801519a57162e30be4673a8ab87ca434dc)
9927
10740
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
9928
- jsii.set(self, "components", value)
10741
+ jsii.set(self, "components", value) # pyright: ignore[reportArgumentType]
9929
10742
 
9930
10743
 
9931
10744
  class _RunnerImageBuilderProxy(RunnerImageBuilder):
@@ -9995,6 +10808,7 @@ class CodeBuildRunner(
9995
10808
  *,
9996
10809
  compute_type: typing.Optional[_aws_cdk_aws_codebuild_ceddda9d.ComputeType] = None,
9997
10810
  docker_in_docker: typing.Optional[builtins.bool] = None,
10811
+ group: typing.Optional[builtins.str] = None,
9998
10812
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
9999
10813
  label: typing.Optional[builtins.str] = None,
10000
10814
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -10003,6 +10817,7 @@ class CodeBuildRunner(
10003
10817
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
10004
10818
  timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
10005
10819
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
10820
+ default_labels: typing.Optional[builtins.bool] = None,
10006
10821
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
10007
10822
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
10008
10823
  ) -> None:
@@ -10011,6 +10826,7 @@ class CodeBuildRunner(
10011
10826
  :param id: -
10012
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 }
10013
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
10014
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()
10015
10831
  :param label: (deprecated) GitHub Actions label used for this provider. Default: undefined
10016
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']
@@ -10019,6 +10835,7 @@ class CodeBuildRunner(
10019
10835
  :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
10020
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)
10021
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
10022
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
10023
10840
  :param retry_options:
10024
10841
 
@@ -10031,6 +10848,7 @@ class CodeBuildRunner(
10031
10848
  props = CodeBuildRunnerProviderProps(
10032
10849
  compute_type=compute_type,
10033
10850
  docker_in_docker=docker_in_docker,
10851
+ group=group,
10034
10852
  image_builder=image_builder,
10035
10853
  label=label,
10036
10854
  labels=labels,
@@ -10039,6 +10857,7 @@ class CodeBuildRunner(
10039
10857
  subnet_selection=subnet_selection,
10040
10858
  timeout=timeout,
10041
10859
  vpc=vpc,
10860
+ default_labels=default_labels,
10042
10861
  log_retention=log_retention,
10043
10862
  retry_options=retry_options,
10044
10863
  )
@@ -10063,6 +10882,7 @@ class Ec2Runner(
10063
10882
  id: builtins.str,
10064
10883
  *,
10065
10884
  ami_builder: typing.Optional[IRunnerImageBuilder] = None,
10885
+ group: typing.Optional[builtins.str] = None,
10066
10886
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
10067
10887
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
10068
10888
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -10070,10 +10890,12 @@ class Ec2Runner(
10070
10890
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
10071
10891
  spot: typing.Optional[builtins.bool] = None,
10072
10892
  spot_max_price: typing.Optional[builtins.str] = None,
10893
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
10073
10894
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
10074
10895
  subnet: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.ISubnet] = None,
10075
10896
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
10076
10897
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
10898
+ default_labels: typing.Optional[builtins.bool] = None,
10077
10899
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
10078
10900
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
10079
10901
  ) -> None:
@@ -10081,17 +10903,20 @@ class Ec2Runner(
10081
10903
  :param scope: -
10082
10904
  :param id: -
10083
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
10084
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()
10085
- :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
10086
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']
10087
10910
  :param security_group: (deprecated) Security Group to assign to launched runner instances. Default: a new security group
10088
10911
  :param security_groups: (experimental) Security groups to assign to launched runner instances. Default: a new security group
10089
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
10090
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.
10091
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
10092
10916
  :param subnet: (deprecated) Subnet where the runner instances will be launched. Default: default subnet of account's default VPC
10093
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
10094
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
10095
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
10096
10921
  :param retry_options:
10097
10922
 
@@ -10103,6 +10928,7 @@ class Ec2Runner(
10103
10928
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
10104
10929
  props = Ec2RunnerProviderProps(
10105
10930
  ami_builder=ami_builder,
10931
+ group=group,
10106
10932
  image_builder=image_builder,
10107
10933
  instance_type=instance_type,
10108
10934
  labels=labels,
@@ -10110,10 +10936,12 @@ class Ec2Runner(
10110
10936
  security_groups=security_groups,
10111
10937
  spot=spot,
10112
10938
  spot_max_price=spot_max_price,
10939
+ storage_options=storage_options,
10113
10940
  storage_size=storage_size,
10114
10941
  subnet=subnet,
10115
10942
  subnet_selection=subnet_selection,
10116
10943
  vpc=vpc,
10944
+ default_labels=default_labels,
10117
10945
  log_retention=log_retention,
10118
10946
  retry_options=retry_options,
10119
10947
  )
@@ -10141,6 +10969,7 @@ class FargateRunner(
10141
10969
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
10142
10970
  cpu: typing.Optional[jsii.Number] = None,
10143
10971
  ephemeral_storage_gib: typing.Optional[jsii.Number] = None,
10972
+ group: typing.Optional[builtins.str] = None,
10144
10973
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
10145
10974
  label: typing.Optional[builtins.str] = None,
10146
10975
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -10150,6 +10979,7 @@ class FargateRunner(
10150
10979
  spot: typing.Optional[builtins.bool] = None,
10151
10980
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
10152
10981
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
10982
+ default_labels: typing.Optional[builtins.bool] = None,
10153
10983
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
10154
10984
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
10155
10985
  ) -> None:
@@ -10160,6 +10990,7 @@ class FargateRunner(
10160
10990
  :param cluster: (experimental) Existing Fargate cluster to use. Default: a new cluster
10161
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
10162
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
10163
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()
10164
10995
  :param label: (deprecated) GitHub Actions label used for this provider. Default: undefined
10165
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']
@@ -10169,6 +11000,7 @@ class FargateRunner(
10169
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
10170
11001
  :param subnet_selection: (experimental) Subnets to run the runners in. Default: Fargate default
10171
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
10172
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
10173
11005
  :param retry_options:
10174
11006
 
@@ -10183,6 +11015,7 @@ class FargateRunner(
10183
11015
  cluster=cluster,
10184
11016
  cpu=cpu,
10185
11017
  ephemeral_storage_gib=ephemeral_storage_gib,
11018
+ group=group,
10186
11019
  image_builder=image_builder,
10187
11020
  label=label,
10188
11021
  labels=labels,
@@ -10192,6 +11025,7 @@ class FargateRunner(
10192
11025
  spot=spot,
10193
11026
  subnet_selection=subnet_selection,
10194
11027
  vpc=vpc,
11028
+ default_labels=default_labels,
10195
11029
  log_retention=log_retention,
10196
11030
  retry_options=retry_options,
10197
11031
  )
@@ -10221,6 +11055,7 @@ __all__ = [
10221
11055
  "FargateRunner",
10222
11056
  "FargateRunnerProvider",
10223
11057
  "FargateRunnerProviderProps",
11058
+ "FastLaunchOptions",
10224
11059
  "GitHubRunners",
10225
11060
  "GitHubRunnersProps",
10226
11061
  "IConfigurableRunnerImageBuilder",
@@ -10253,6 +11088,7 @@ __all__ = [
10253
11088
  "RunnerVersion",
10254
11089
  "Secrets",
10255
11090
  "StaticRunnerImage",
11091
+ "StorageOptions",
10256
11092
  "WindowsComponents",
10257
11093
  ]
10258
11094
 
@@ -10306,7 +11142,9 @@ def _typecheckingstub__41cf6bb0c2118d6cb7d082b7e678fba3dae1f5b8812776005eef7b14e
10306
11142
 
10307
11143
  def _typecheckingstub__fe17585d38b67015c3f03db2aefab095f171e0e0900c9a4564679bbc5a29fd07(
10308
11144
  *,
11145
+ fast_launch_options: typing.Optional[typing.Union[FastLaunchOptions, typing.Dict[builtins.str, typing.Any]]] = None,
10309
11146
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
11147
+ storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
10310
11148
  ) -> None:
10311
11149
  """Type checking stubs"""
10312
11150
  pass
@@ -10357,6 +11195,15 @@ def _typecheckingstub__b7b6832b84987dee7e16a1e7bde046b812c75e74a268cb3fbf2685d3f
10357
11195
  """Type checking stubs"""
10358
11196
  pass
10359
11197
 
11198
+ def _typecheckingstub__d2952ae322a0fd40b480084b183be9e7179337af84efb30a496aa331a22fa562(
11199
+ *,
11200
+ enabled: typing.Optional[builtins.bool] = None,
11201
+ max_parallel_launches: typing.Optional[jsii.Number] = None,
11202
+ target_resource_count: typing.Optional[jsii.Number] = None,
11203
+ ) -> None:
11204
+ """Type checking stubs"""
11205
+ pass
11206
+
10360
11207
  def _typecheckingstub__c1a45de07d09ed9f4fd0b9051aeff4571ceda633f49c0b30a5058ad6d72fad18(
10361
11208
  scope: _constructs_77d1e7e8.Construct,
10362
11209
  id: builtins.str,
@@ -10479,6 +11326,7 @@ def _typecheckingstub__637ac3a7237f114ea2a9842f95653a0d13444cd4da7a4dfe9330fdb98
10479
11326
  id: builtins.str,
10480
11327
  *,
10481
11328
  ephemeral_storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
11329
+ group: typing.Optional[builtins.str] = None,
10482
11330
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
10483
11331
  label: typing.Optional[builtins.str] = None,
10484
11332
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -10488,6 +11336,7 @@ def _typecheckingstub__637ac3a7237f114ea2a9842f95653a0d13444cd4da7a4dfe9330fdb98
10488
11336
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
10489
11337
  timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
10490
11338
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
11339
+ default_labels: typing.Optional[builtins.bool] = None,
10491
11340
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
10492
11341
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
10493
11342
  ) -> None:
@@ -10505,6 +11354,7 @@ def _typecheckingstub__ce2bbc7a18f99610673c6eb5e5f04fb45ba63301ff0fbe52524601461
10505
11354
  builder_type: typing.Optional[RunnerImageBuilderType] = None,
10506
11355
  code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
10507
11356
  components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
11357
+ docker_setup_commands: typing.Optional[typing.Sequence[builtins.str]] = None,
10508
11358
  log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
10509
11359
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
10510
11360
  os: typing.Optional[Os] = None,
@@ -10513,6 +11363,7 @@ def _typecheckingstub__ce2bbc7a18f99610673c6eb5e5f04fb45ba63301ff0fbe52524601461
10513
11363
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
10514
11364
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
10515
11365
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
11366
+ wait_on_deploy: typing.Optional[builtins.bool] = None,
10516
11367
  ) -> None:
10517
11368
  """Type checking stubs"""
10518
11369
  pass
@@ -10674,6 +11525,7 @@ def _typecheckingstub__ab96b7f3871624e8430668114e7f5748ba5d253168db5b8f9a13955d0
10674
11525
  builder_type: typing.Optional[RunnerImageBuilderType] = None,
10675
11526
  code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
10676
11527
  components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
11528
+ docker_setup_commands: typing.Optional[typing.Sequence[builtins.str]] = None,
10677
11529
  log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
10678
11530
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
10679
11531
  os: typing.Optional[Os] = None,
@@ -10682,6 +11534,13 @@ def _typecheckingstub__ab96b7f3871624e8430668114e7f5748ba5d253168db5b8f9a13955d0
10682
11534
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
10683
11535
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
10684
11536
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
11537
+ wait_on_deploy: typing.Optional[builtins.bool] = None,
11538
+ ) -> None:
11539
+ """Type checking stubs"""
11540
+ pass
11541
+
11542
+ def _typecheckingstub__604cc9b160ccf839230b5f673dff20a8c9722aa81c88ef3ccadcdfcec778ec1a(
11543
+ vars: typing.Mapping[builtins.str, builtins.str],
10685
11544
  ) -> None:
10686
11545
  """Type checking stubs"""
10687
11546
  pass
@@ -10739,6 +11598,7 @@ def _typecheckingstub__6fe5c2d2437d742085479f02259513b739e15d569c2f5b87bf0244bf4
10739
11598
 
10740
11599
  def _typecheckingstub__faa1323116edff475c54eafc82f7af57dd73527c022a54b6210c5a490a80a1d3(
10741
11600
  *,
11601
+ default_labels: typing.Optional[builtins.bool] = None,
10742
11602
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
10743
11603
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
10744
11604
  ) -> None:
@@ -10801,6 +11661,15 @@ def _typecheckingstub__f48d8ecb3f18c1471b45f7dfd8f15c51227e04697959138092d72a915
10801
11661
  """Type checking stubs"""
10802
11662
  pass
10803
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
+
10804
11673
  def _typecheckingstub__0c68c27f668327e6aeb3b0e5b7e88235ae547046edeb1fa6a808b729a31b7bd2(
10805
11674
  scope: _constructs_77d1e7e8.Construct,
10806
11675
  id: builtins.str,
@@ -10993,6 +11862,7 @@ def _typecheckingstub__bb924a0cf987a9f87f4ad0ebd952c61ebd4e02d7d83501b9600f14157
10993
11862
  *,
10994
11863
  compute_type: typing.Optional[_aws_cdk_aws_codebuild_ceddda9d.ComputeType] = None,
10995
11864
  docker_in_docker: typing.Optional[builtins.bool] = None,
11865
+ group: typing.Optional[builtins.str] = None,
10996
11866
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
10997
11867
  label: typing.Optional[builtins.str] = None,
10998
11868
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11001,6 +11871,7 @@ def _typecheckingstub__bb924a0cf987a9f87f4ad0ebd952c61ebd4e02d7d83501b9600f14157
11001
11871
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11002
11872
  timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
11003
11873
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
11874
+ default_labels: typing.Optional[builtins.bool] = None,
11004
11875
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11005
11876
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11006
11877
  ) -> None:
@@ -11018,6 +11889,7 @@ def _typecheckingstub__5b74a56ca854b011edea7d259b730771e5a994081db1aa0bdbea8b3e2
11018
11889
  builder_type: typing.Optional[RunnerImageBuilderType] = None,
11019
11890
  code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
11020
11891
  components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
11892
+ docker_setup_commands: typing.Optional[typing.Sequence[builtins.str]] = None,
11021
11893
  log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
11022
11894
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11023
11895
  os: typing.Optional[Os] = None,
@@ -11026,6 +11898,7 @@ def _typecheckingstub__5b74a56ca854b011edea7d259b730771e5a994081db1aa0bdbea8b3e2
11026
11898
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
11027
11899
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11028
11900
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
11901
+ wait_on_deploy: typing.Optional[builtins.bool] = None,
11029
11902
  ) -> None:
11030
11903
  """Type checking stubs"""
11031
11904
  pass
@@ -11052,10 +11925,12 @@ def _typecheckingstub__6969b9c3ab349e4eada340b71bb6e985c199a88642a6d68289cc42ad9
11052
11925
 
11053
11926
  def _typecheckingstub__9377dcf4cd4dae74730635bdaf02246acb473843cea2856cf9a64295df964eb6(
11054
11927
  *,
11928
+ default_labels: typing.Optional[builtins.bool] = None,
11055
11929
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11056
11930
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11057
11931
  compute_type: typing.Optional[_aws_cdk_aws_codebuild_ceddda9d.ComputeType] = None,
11058
11932
  docker_in_docker: typing.Optional[builtins.bool] = None,
11933
+ group: typing.Optional[builtins.str] = None,
11059
11934
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11060
11935
  label: typing.Optional[builtins.str] = None,
11061
11936
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11149,6 +12024,7 @@ def _typecheckingstub__fd3f279069067627058d9a5818aab030be5ffd71ce03962b4fd7cdd85
11149
12024
  id: builtins.str,
11150
12025
  *,
11151
12026
  ami_builder: typing.Optional[IRunnerImageBuilder] = None,
12027
+ group: typing.Optional[builtins.str] = None,
11152
12028
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11153
12029
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
11154
12030
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11156,10 +12032,12 @@ def _typecheckingstub__fd3f279069067627058d9a5818aab030be5ffd71ce03962b4fd7cdd85
11156
12032
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
11157
12033
  spot: typing.Optional[builtins.bool] = None,
11158
12034
  spot_max_price: typing.Optional[builtins.str] = None,
12035
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11159
12036
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
11160
12037
  subnet: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.ISubnet] = None,
11161
12038
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11162
12039
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12040
+ default_labels: typing.Optional[builtins.bool] = None,
11163
12041
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11164
12042
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11165
12043
  ) -> None:
@@ -11177,6 +12055,7 @@ def _typecheckingstub__c9910152a829b3b3a0a9e70ec31bd3ae8669b723ebb60627c6d08813b
11177
12055
  builder_type: typing.Optional[RunnerImageBuilderType] = None,
11178
12056
  code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
11179
12057
  components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
12058
+ docker_setup_commands: typing.Optional[typing.Sequence[builtins.str]] = None,
11180
12059
  log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
11181
12060
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11182
12061
  os: typing.Optional[Os] = None,
@@ -11185,6 +12064,7 @@ def _typecheckingstub__c9910152a829b3b3a0a9e70ec31bd3ae8669b723ebb60627c6d08813b
11185
12064
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
11186
12065
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11187
12066
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12067
+ wait_on_deploy: typing.Optional[builtins.bool] = None,
11188
12068
  ) -> None:
11189
12069
  """Type checking stubs"""
11190
12070
  pass
@@ -11211,9 +12091,11 @@ def _typecheckingstub__f493efe2a09a1094bf977e7690b481a2257fb28bdf86de99ba09b0eb0
11211
12091
 
11212
12092
  def _typecheckingstub__b650c4bf7f2a31b514d6f1f9e0c1b4b2cdae8b20b6f209f5b5fc74ef418fc2a3(
11213
12093
  *,
12094
+ default_labels: typing.Optional[builtins.bool] = None,
11214
12095
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11215
12096
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11216
12097
  ami_builder: typing.Optional[IRunnerImageBuilder] = None,
12098
+ group: typing.Optional[builtins.str] = None,
11217
12099
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11218
12100
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
11219
12101
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11221,6 +12103,7 @@ def _typecheckingstub__b650c4bf7f2a31b514d6f1f9e0c1b4b2cdae8b20b6f209f5b5fc74ef4
11221
12103
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
11222
12104
  spot: typing.Optional[builtins.bool] = None,
11223
12105
  spot_max_price: typing.Optional[builtins.str] = None,
12106
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11224
12107
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
11225
12108
  subnet: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.ISubnet] = None,
11226
12109
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -11238,6 +12121,7 @@ def _typecheckingstub__c520325dd0289bf8c6670ecdce77df4b229a0a2681957e61665818d2f
11238
12121
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
11239
12122
  cpu: typing.Optional[jsii.Number] = None,
11240
12123
  docker_in_docker: typing.Optional[builtins.bool] = None,
12124
+ group: typing.Optional[builtins.str] = None,
11241
12125
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11242
12126
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
11243
12127
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11245,12 +12129,16 @@ def _typecheckingstub__c520325dd0289bf8c6670ecdce77df4b229a0a2681957e61665818d2f
11245
12129
  memory_limit_mib: typing.Optional[jsii.Number] = None,
11246
12130
  memory_reservation_mib: typing.Optional[jsii.Number] = None,
11247
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,
11248
12134
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
11249
12135
  spot: typing.Optional[builtins.bool] = None,
11250
12136
  spot_max_price: typing.Optional[builtins.str] = None,
12137
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11251
12138
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
11252
12139
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11253
12140
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12141
+ default_labels: typing.Optional[builtins.bool] = None,
11254
12142
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11255
12143
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11256
12144
  ) -> None:
@@ -11268,6 +12156,7 @@ def _typecheckingstub__7b459d87ca6935e6c04ff03be02ed821eef81dbc792be822f356697f6
11268
12156
  builder_type: typing.Optional[RunnerImageBuilderType] = None,
11269
12157
  code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
11270
12158
  components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
12159
+ docker_setup_commands: typing.Optional[typing.Sequence[builtins.str]] = None,
11271
12160
  log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
11272
12161
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11273
12162
  os: typing.Optional[Os] = None,
@@ -11276,6 +12165,7 @@ def _typecheckingstub__7b459d87ca6935e6c04ff03be02ed821eef81dbc792be822f356697f6
11276
12165
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
11277
12166
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11278
12167
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12168
+ wait_on_deploy: typing.Optional[builtins.bool] = None,
11279
12169
  ) -> None:
11280
12170
  """Type checking stubs"""
11281
12171
  pass
@@ -11302,6 +12192,7 @@ def _typecheckingstub__e7ecb1269ac1102589a8eb3fdd808b1c194dffc5acfa36b649506b72c
11302
12192
 
11303
12193
  def _typecheckingstub__73c1978e12dcea1bd69ce0927a80bd887d7f7d1b6573831942495e9d5966b483(
11304
12194
  *,
12195
+ default_labels: typing.Optional[builtins.bool] = None,
11305
12196
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11306
12197
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11307
12198
  assign_public_ip: typing.Optional[builtins.bool] = None,
@@ -11309,6 +12200,7 @@ def _typecheckingstub__73c1978e12dcea1bd69ce0927a80bd887d7f7d1b6573831942495e9d5
11309
12200
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
11310
12201
  cpu: typing.Optional[jsii.Number] = None,
11311
12202
  docker_in_docker: typing.Optional[builtins.bool] = None,
12203
+ group: typing.Optional[builtins.str] = None,
11312
12204
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11313
12205
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
11314
12206
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11316,9 +12208,12 @@ def _typecheckingstub__73c1978e12dcea1bd69ce0927a80bd887d7f7d1b6573831942495e9d5
11316
12208
  memory_limit_mib: typing.Optional[jsii.Number] = None,
11317
12209
  memory_reservation_mib: typing.Optional[jsii.Number] = None,
11318
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,
11319
12213
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
11320
12214
  spot: typing.Optional[builtins.bool] = None,
11321
12215
  spot_max_price: typing.Optional[builtins.str] = None,
12216
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11322
12217
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
11323
12218
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11324
12219
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
@@ -11334,6 +12229,7 @@ def _typecheckingstub__f7098876c10584a4cc58e16d23fd86ffe1fc50f2b55ca60549136d051
11334
12229
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
11335
12230
  cpu: typing.Optional[jsii.Number] = None,
11336
12231
  ephemeral_storage_gib: typing.Optional[jsii.Number] = None,
12232
+ group: typing.Optional[builtins.str] = None,
11337
12233
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11338
12234
  label: typing.Optional[builtins.str] = None,
11339
12235
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11343,6 +12239,7 @@ def _typecheckingstub__f7098876c10584a4cc58e16d23fd86ffe1fc50f2b55ca60549136d051
11343
12239
  spot: typing.Optional[builtins.bool] = None,
11344
12240
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11345
12241
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12242
+ default_labels: typing.Optional[builtins.bool] = None,
11346
12243
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11347
12244
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11348
12245
  ) -> None:
@@ -11360,6 +12257,7 @@ def _typecheckingstub__9fd4f7f17e5e5c5b64ec7abfe1183d153e9472f7a1e9312e6d4b55f3f
11360
12257
  builder_type: typing.Optional[RunnerImageBuilderType] = None,
11361
12258
  code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
11362
12259
  components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
12260
+ docker_setup_commands: typing.Optional[typing.Sequence[builtins.str]] = None,
11363
12261
  log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
11364
12262
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11365
12263
  os: typing.Optional[Os] = None,
@@ -11368,6 +12266,7 @@ def _typecheckingstub__9fd4f7f17e5e5c5b64ec7abfe1183d153e9472f7a1e9312e6d4b55f3f
11368
12266
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
11369
12267
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11370
12268
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12269
+ wait_on_deploy: typing.Optional[builtins.bool] = None,
11371
12270
  ) -> None:
11372
12271
  """Type checking stubs"""
11373
12272
  pass
@@ -11394,12 +12293,14 @@ def _typecheckingstub__9c62078db683958716a7ad86909a8b9b4dce462def398eb03faf0dc61
11394
12293
 
11395
12294
  def _typecheckingstub__26cdeb87df1adf5c49e0f9c1c061c7138af674da9af221212e1505fc1193583d(
11396
12295
  *,
12296
+ default_labels: typing.Optional[builtins.bool] = None,
11397
12297
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11398
12298
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11399
12299
  assign_public_ip: typing.Optional[builtins.bool] = None,
11400
12300
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
11401
12301
  cpu: typing.Optional[jsii.Number] = None,
11402
12302
  ephemeral_storage_gib: typing.Optional[jsii.Number] = None,
12303
+ group: typing.Optional[builtins.str] = None,
11403
12304
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11404
12305
  label: typing.Optional[builtins.str] = None,
11405
12306
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11430,6 +12331,7 @@ def _typecheckingstub__80e9b84ecba02bdef856d3ee3f48a5e0a5e58ad813554fd529c0abe3a
11430
12331
  id: builtins.str,
11431
12332
  *,
11432
12333
  ephemeral_storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
12334
+ group: typing.Optional[builtins.str] = None,
11433
12335
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11434
12336
  label: typing.Optional[builtins.str] = None,
11435
12337
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11439,6 +12341,7 @@ def _typecheckingstub__80e9b84ecba02bdef856d3ee3f48a5e0a5e58ad813554fd529c0abe3a
11439
12341
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11440
12342
  timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
11441
12343
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12344
+ default_labels: typing.Optional[builtins.bool] = None,
11442
12345
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11443
12346
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11444
12347
  ) -> None:
@@ -11447,9 +12350,11 @@ def _typecheckingstub__80e9b84ecba02bdef856d3ee3f48a5e0a5e58ad813554fd529c0abe3a
11447
12350
 
11448
12351
  def _typecheckingstub__45a4a92b817689da2d55675d278ad5c96699269cc41f3406b7fca6d7a7664861(
11449
12352
  *,
12353
+ default_labels: typing.Optional[builtins.bool] = None,
11450
12354
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11451
12355
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11452
12356
  ephemeral_storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
12357
+ group: typing.Optional[builtins.str] = None,
11453
12358
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11454
12359
  label: typing.Optional[builtins.str] = None,
11455
12360
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11474,6 +12379,7 @@ def _typecheckingstub__963c9a4884bb9d7400672391dfb47486f969a1b8fe5616bba9cd493e8
11474
12379
  builder_type: typing.Optional[RunnerImageBuilderType] = None,
11475
12380
  code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
11476
12381
  components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
12382
+ docker_setup_commands: typing.Optional[typing.Sequence[builtins.str]] = None,
11477
12383
  log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
11478
12384
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11479
12385
  os: typing.Optional[Os] = None,
@@ -11482,6 +12388,7 @@ def _typecheckingstub__963c9a4884bb9d7400672391dfb47486f969a1b8fe5616bba9cd493e8
11482
12388
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
11483
12389
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11484
12390
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12391
+ wait_on_deploy: typing.Optional[builtins.bool] = None,
11485
12392
  ) -> None:
11486
12393
  """Type checking stubs"""
11487
12394
  pass
@@ -11497,6 +12404,7 @@ def _typecheckingstub__c44d5704c54d7fdcf24ad39567c0e9f53f9837163bf8bf3b1b4e652e2
11497
12404
  builder_type: typing.Optional[RunnerImageBuilderType] = None,
11498
12405
  code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
11499
12406
  components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
12407
+ docker_setup_commands: typing.Optional[typing.Sequence[builtins.str]] = None,
11500
12408
  log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
11501
12409
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11502
12410
  os: typing.Optional[Os] = None,
@@ -11505,6 +12413,7 @@ def _typecheckingstub__c44d5704c54d7fdcf24ad39567c0e9f53f9837163bf8bf3b1b4e652e2
11505
12413
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
11506
12414
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11507
12415
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12416
+ wait_on_deploy: typing.Optional[builtins.bool] = None,
11508
12417
  ) -> None:
11509
12418
  """Type checking stubs"""
11510
12419
  pass
@@ -11533,6 +12442,7 @@ def _typecheckingstub__1ab9454b0ecfcd12fc0ab07c0f0f4d7ce646a5a928f5e14092b0a6c42
11533
12442
  *,
11534
12443
  compute_type: typing.Optional[_aws_cdk_aws_codebuild_ceddda9d.ComputeType] = None,
11535
12444
  docker_in_docker: typing.Optional[builtins.bool] = None,
12445
+ group: typing.Optional[builtins.str] = None,
11536
12446
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11537
12447
  label: typing.Optional[builtins.str] = None,
11538
12448
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11541,6 +12451,7 @@ def _typecheckingstub__1ab9454b0ecfcd12fc0ab07c0f0f4d7ce646a5a928f5e14092b0a6c42
11541
12451
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11542
12452
  timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
11543
12453
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12454
+ default_labels: typing.Optional[builtins.bool] = None,
11544
12455
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11545
12456
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11546
12457
  ) -> None:
@@ -11552,6 +12463,7 @@ def _typecheckingstub__a0a6acc584ae2ad3aed3605810cea44858f1a0bc22f62f2df9005b318
11552
12463
  id: builtins.str,
11553
12464
  *,
11554
12465
  ami_builder: typing.Optional[IRunnerImageBuilder] = None,
12466
+ group: typing.Optional[builtins.str] = None,
11555
12467
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11556
12468
  instance_type: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
11557
12469
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11559,10 +12471,12 @@ def _typecheckingstub__a0a6acc584ae2ad3aed3605810cea44858f1a0bc22f62f2df9005b318
11559
12471
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
11560
12472
  spot: typing.Optional[builtins.bool] = None,
11561
12473
  spot_max_price: typing.Optional[builtins.str] = None,
12474
+ storage_options: typing.Optional[typing.Union[StorageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11562
12475
  storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
11563
12476
  subnet: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.ISubnet] = None,
11564
12477
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11565
12478
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12479
+ default_labels: typing.Optional[builtins.bool] = None,
11566
12480
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11567
12481
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11568
12482
  ) -> None:
@@ -11577,6 +12491,7 @@ def _typecheckingstub__e507aa08f983fcd409ec9cf4ba5e0e6312ce72778cbbb2f9b5b016fde
11577
12491
  cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.Cluster] = None,
11578
12492
  cpu: typing.Optional[jsii.Number] = None,
11579
12493
  ephemeral_storage_gib: typing.Optional[jsii.Number] = None,
12494
+ group: typing.Optional[builtins.str] = None,
11580
12495
  image_builder: typing.Optional[IRunnerImageBuilder] = None,
11581
12496
  label: typing.Optional[builtins.str] = None,
11582
12497
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11586,8 +12501,12 @@ def _typecheckingstub__e507aa08f983fcd409ec9cf4ba5e0e6312ce72778cbbb2f9b5b016fde
11586
12501
  spot: typing.Optional[builtins.bool] = None,
11587
12502
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11588
12503
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
12504
+ default_labels: typing.Optional[builtins.bool] = None,
11589
12505
  log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11590
12506
  retry_options: typing.Optional[typing.Union[ProviderRetryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
11591
12507
  ) -> None:
11592
12508
  """Type checking stubs"""
11593
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__'])