cloudsnorkel.cdk-github-runners 0.11.6__py3-none-any.whl → 0.12.1__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.

Potentially problematic release.


This version of cloudsnorkel.cdk-github-runners might be problematic. Click here for more details.

@@ -207,19 +207,13 @@ new GitHubRunners(this, 'runners', {
207
207
  Another way to customize runners is by modifying the image used to spin them up. The image contains the [runner](https://github.com/actions/runner), any required dependencies, and integration code with the provider. You may choose to customize this image by adding more packages, for example.
208
208
 
209
209
  ```python
210
- const myBuilder = CodeBuildRunnerProvider.imageBuilder(this, 'image builder', {
211
- dockerfilePath: FargateRunner.LINUX_X64_DOCKERFILE_PATH,
212
- runnerVersion: RunnerVersion.specific('2.291.0'),
213
- rebuildInterval: Duration.days(14),
214
- });
210
+ const myBuilder = FargateRunnerProvider.imageBuilder(this, 'image builder');
215
211
  myBuilder.addComponent(
216
- RunnerImageComponent.custom({ commands: ['apt install -y nginx xz-utils'] })
212
+ RunnerImageComponent.custom({ commands: ['apt install -y nginx xz-utils'] }),
217
213
  );
218
214
 
219
215
  const myProvider = new FargateRunnerProvider(this, 'fargate runner', {
220
216
  labels: ['customized-fargate'],
221
- vpc: vpc,
222
- securityGroups: [runnerSg],
223
217
  imageBuilder: myBuilder,
224
218
  });
225
219
 
@@ -247,24 +241,20 @@ Windows images can also be customized the same way.
247
241
  const myWindowsBuilder = FargateRunnerProvider.imageBuilder(this, 'Windows image builder', {
248
242
  architecture: Architecture.X86_64,
249
243
  os: Os.WINDOWS,
250
- runnerVersion: RunnerVersion.specific('2.291.0'),
251
- rebuildInterval: Duration.days(14),
252
244
  });
253
245
  myWindowsBuilder.addComponent(
254
- RunnerImageComponent.custom({
255
- name: 'Ninja',
256
- commands: [
257
- 'Invoke-WebRequest -UseBasicParsing -Uri "https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip" -OutFile ninja.zip',
258
- 'Expand-Archive ninja.zip -DestinationPath C:\\actions',
259
- 'del ninja.zip',
260
- ],
261
- })
246
+ RunnerImageComponent.custom({
247
+ name: 'Ninja',
248
+ commands: [
249
+ 'Invoke-WebRequest -UseBasicParsing -Uri "https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip" -OutFile ninja.zip',
250
+ 'Expand-Archive ninja.zip -DestinationPath C:\\actions',
251
+ 'del ninja.zip',
252
+ ],
253
+ }),
262
254
  );
263
255
 
264
256
  const myProvider = new FargateRunnerProvider(this, 'fargate runner', {
265
257
  labels: ['customized-windows-fargate'],
266
- vpc: vpc,
267
- securityGroups: [runnerSg],
268
258
  imageBuilder: myWindowsBuilder,
269
259
  });
270
260
 
@@ -2929,6 +2919,27 @@ class ImageBuilderComponent(
2929
2919
 
2930
2920
  jsii.create(self.__class__, self, [scope, id, props])
2931
2921
 
2922
+ @jsii.member(jsii_name="generateVersion")
2923
+ def _generate_version(
2924
+ self,
2925
+ type: builtins.str,
2926
+ name: builtins.str,
2927
+ data: typing.Any,
2928
+ ) -> builtins.str:
2929
+ '''
2930
+ :param type: -
2931
+ :param name: -
2932
+ :param data: -
2933
+
2934
+ :stability: deprecated
2935
+ '''
2936
+ if __debug__:
2937
+ type_hints = typing.get_type_hints(_typecheckingstub__abecb3decfe8eebf190daa2e93a508111cc10650e6b9fbf65b3a34f3ed07ca24)
2938
+ check_type(argname="argument type", value=type, expected_type=type_hints["type"])
2939
+ check_type(argname="argument name", value=name, expected_type=type_hints["name"])
2940
+ check_type(argname="argument data", value=data, expected_type=type_hints["data"])
2941
+ return typing.cast(builtins.str, jsii.invoke(self, "generateVersion", [type, name, data]))
2942
+
2932
2943
  @jsii.member(jsii_name="grantAssetsRead")
2933
2944
  def grant_assets_read(self, grantee: _aws_cdk_aws_iam_ceddda9d.IGrantable) -> None:
2934
2945
  '''(deprecated) Grants read permissions to the principal on the assets buckets.
@@ -2960,27 +2971,6 @@ class ImageBuilderComponent(
2960
2971
  check_type(argname="argument commands", value=commands, expected_type=type_hints["commands"])
2961
2972
  return typing.cast(typing.List[builtins.str], jsii.invoke(self, "prefixCommandsWithErrorHandling", [platform, commands]))
2962
2973
 
2963
- @jsii.member(jsii_name="version")
2964
- def _version(
2965
- self,
2966
- type: builtins.str,
2967
- name: builtins.str,
2968
- data: typing.Any,
2969
- ) -> builtins.str:
2970
- '''
2971
- :param type: -
2972
- :param name: -
2973
- :param data: -
2974
-
2975
- :stability: deprecated
2976
- '''
2977
- if __debug__:
2978
- type_hints = typing.get_type_hints(_typecheckingstub__e11323aa6f18ef1898e18067dba5908fdeabd333bfc1604f92c4c244adb28f7f)
2979
- check_type(argname="argument type", value=type, expected_type=type_hints["type"])
2980
- check_type(argname="argument name", value=name, expected_type=type_hints["name"])
2981
- check_type(argname="argument data", value=data, expected_type=type_hints["data"])
2982
- return typing.cast(builtins.str, jsii.invoke(self, "version", [type, name, data]))
2983
-
2984
2974
  @builtins.property
2985
2975
  @jsii.member(jsii_name="arn")
2986
2976
  def arn(self) -> builtins.str:
@@ -3363,8 +3353,14 @@ class LambdaRunnerProvider(
3363
3353
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
3364
3354
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
3365
3355
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
3366
- ) -> "RunnerImageBuilder":
3367
- '''(experimental) Create new image builder that builds Lambda specific runner images using Amazon Linux 2.
3356
+ ) -> "IConfigurableRunnerImageBuilder":
3357
+ '''(experimental) Create new image builder that builds Lambda specific runner images.
3358
+
3359
+ You can customize the OS, architecture, VPC, subnet, security groups, etc. by passing in props.
3360
+
3361
+ You can add components to the image builder by calling ``imageBuilder.addComponent()``.
3362
+
3363
+ The default OS is Amazon Linux 2 running on x64 architecture.
3368
3364
 
3369
3365
  Included components:
3370
3366
 
@@ -3376,7 +3372,7 @@ class LambdaRunnerProvider(
3376
3372
  - ``RunnerImageComponent.githubRunner()``
3377
3373
  - ``RunnerImageComponent.lambdaEntrypoint()``
3378
3374
 
3379
- Base Docker image: ``public.ecr.aws/lambda/nodejs:16-x86_64`` or ``public.ecr.aws/lambda/nodejs:16-arm64``
3375
+ Base Docker image: ``public.ecr.aws/lambda/nodejs:20-x86_64`` or ``public.ecr.aws/lambda/nodejs:20-arm64``
3380
3376
 
3381
3377
  :param scope: -
3382
3378
  :param id: -
@@ -3420,7 +3416,7 @@ class LambdaRunnerProvider(
3420
3416
  vpc=vpc,
3421
3417
  )
3422
3418
 
3423
- return typing.cast("RunnerImageBuilder", jsii.sinvoke(cls, "imageBuilder", [scope, id, props]))
3419
+ return typing.cast("IConfigurableRunnerImageBuilder", jsii.sinvoke(cls, "imageBuilder", [scope, id, props]))
3424
3420
 
3425
3421
  @jsii.member(jsii_name="getStepFunctionTask")
3426
3422
  def get_step_function_task(
@@ -3971,6 +3967,15 @@ class Os(metaclass=jsii.JSIIMeta, jsii_type="@cloudsnorkel/cdk-github-runners.Os
3971
3967
  '''
3972
3968
  return typing.cast("Os", jsii.sget(cls, "LINUX_AMAZON_2"))
3973
3969
 
3970
+ @jsii.python.classproperty
3971
+ @jsii.member(jsii_name="LINUX_AMAZON_2023")
3972
+ def LINUX_AMAZON_2023(cls) -> "Os":
3973
+ '''(experimental) Amazon Linux 2023.
3974
+
3975
+ :stability: experimental
3976
+ '''
3977
+ return typing.cast("Os", jsii.sget(cls, "LINUX_AMAZON_2023"))
3978
+
3974
3979
  @jsii.python.classproperty
3975
3980
  @jsii.member(jsii_name="LINUX_UBUNTU")
3976
3981
  def LINUX_UBUNTU(cls) -> "Os":
@@ -4396,25 +4401,30 @@ class RunnerImageAsset:
4396
4401
  )
4397
4402
 
4398
4403
 
4399
- @jsii.implements(_aws_cdk_aws_ec2_ceddda9d.IConnectable, _aws_cdk_aws_iam_ceddda9d.IGrantable, IRunnerImageBuilder)
4400
- class RunnerImageBuilder(
4401
- _constructs_77d1e7e8.Construct,
4402
- metaclass=jsii.JSIIAbstractClass,
4403
- jsii_type="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder",
4404
- ):
4405
- '''(experimental) GitHub Runner image builder. Builds a Docker image or AMI with GitHub Runner and other requirements installed.
4406
-
4407
- Images can be customized before passed into the provider by adding or removing components to be installed.
4408
-
4409
- Images are rebuilt every week by default to ensure that the latest security patches are applied.
4410
-
4411
- :stability: experimental
4412
- '''
4413
-
4404
+ @jsii.data_type(
4405
+ jsii_type="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps",
4406
+ jsii_struct_bases=[],
4407
+ name_mapping={
4408
+ "architecture": "architecture",
4409
+ "aws_image_builder_options": "awsImageBuilderOptions",
4410
+ "base_ami": "baseAmi",
4411
+ "base_docker_image": "baseDockerImage",
4412
+ "builder_type": "builderType",
4413
+ "code_build_options": "codeBuildOptions",
4414
+ "components": "components",
4415
+ "log_removal_policy": "logRemovalPolicy",
4416
+ "log_retention": "logRetention",
4417
+ "os": "os",
4418
+ "rebuild_interval": "rebuildInterval",
4419
+ "runner_version": "runnerVersion",
4420
+ "security_groups": "securityGroups",
4421
+ "subnet_selection": "subnetSelection",
4422
+ "vpc": "vpc",
4423
+ },
4424
+ )
4425
+ class RunnerImageBuilderProps:
4414
4426
  def __init__(
4415
4427
  self,
4416
- scope: _constructs_77d1e7e8.Construct,
4417
- id: builtins.str,
4418
4428
  *,
4419
4429
  architecture: typing.Optional[Architecture] = None,
4420
4430
  aws_image_builder_options: typing.Optional[typing.Union[AwsImageBuilderRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4433,8 +4443,6 @@ class RunnerImageBuilder(
4433
4443
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
4434
4444
  ) -> None:
4435
4445
  '''
4436
- :param scope: -
4437
- :param id: -
4438
4446
  :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
4439
4447
  :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
4440
4448
  :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
@@ -4453,553 +4461,255 @@ class RunnerImageBuilder(
4453
4461
 
4454
4462
  :stability: experimental
4455
4463
  '''
4464
+ if isinstance(aws_image_builder_options, dict):
4465
+ aws_image_builder_options = AwsImageBuilderRunnerImageBuilderProps(**aws_image_builder_options)
4466
+ if isinstance(code_build_options, dict):
4467
+ code_build_options = CodeBuildRunnerImageBuilderProps(**code_build_options)
4468
+ if isinstance(subnet_selection, dict):
4469
+ subnet_selection = _aws_cdk_aws_ec2_ceddda9d.SubnetSelection(**subnet_selection)
4456
4470
  if __debug__:
4457
- type_hints = typing.get_type_hints(_typecheckingstub__963c9a4884bb9d7400672391dfb47486f969a1b8fe5616bba9cd493e8a71484b)
4458
- check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
4459
- check_type(argname="argument id", value=id, expected_type=type_hints["id"])
4460
- props = RunnerImageBuilderProps(
4461
- architecture=architecture,
4462
- aws_image_builder_options=aws_image_builder_options,
4463
- base_ami=base_ami,
4464
- base_docker_image=base_docker_image,
4465
- builder_type=builder_type,
4466
- code_build_options=code_build_options,
4467
- components=components,
4468
- log_removal_policy=log_removal_policy,
4469
- log_retention=log_retention,
4470
- os=os,
4471
- rebuild_interval=rebuild_interval,
4472
- runner_version=runner_version,
4473
- security_groups=security_groups,
4474
- subnet_selection=subnet_selection,
4475
- vpc=vpc,
4476
- )
4471
+ type_hints = typing.get_type_hints(_typecheckingstub__ab96b7f3871624e8430668114e7f5748ba5d253168db5b8f9a13955d0a82e43d)
4472
+ check_type(argname="argument architecture", value=architecture, expected_type=type_hints["architecture"])
4473
+ check_type(argname="argument aws_image_builder_options", value=aws_image_builder_options, expected_type=type_hints["aws_image_builder_options"])
4474
+ check_type(argname="argument base_ami", value=base_ami, expected_type=type_hints["base_ami"])
4475
+ check_type(argname="argument base_docker_image", value=base_docker_image, expected_type=type_hints["base_docker_image"])
4476
+ check_type(argname="argument builder_type", value=builder_type, expected_type=type_hints["builder_type"])
4477
+ check_type(argname="argument code_build_options", value=code_build_options, expected_type=type_hints["code_build_options"])
4478
+ check_type(argname="argument components", value=components, expected_type=type_hints["components"])
4479
+ check_type(argname="argument log_removal_policy", value=log_removal_policy, expected_type=type_hints["log_removal_policy"])
4480
+ check_type(argname="argument log_retention", value=log_retention, expected_type=type_hints["log_retention"])
4481
+ check_type(argname="argument os", value=os, expected_type=type_hints["os"])
4482
+ check_type(argname="argument rebuild_interval", value=rebuild_interval, expected_type=type_hints["rebuild_interval"])
4483
+ check_type(argname="argument runner_version", value=runner_version, expected_type=type_hints["runner_version"])
4484
+ check_type(argname="argument security_groups", value=security_groups, expected_type=type_hints["security_groups"])
4485
+ check_type(argname="argument subnet_selection", value=subnet_selection, expected_type=type_hints["subnet_selection"])
4486
+ check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
4487
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
4488
+ if architecture is not None:
4489
+ self._values["architecture"] = architecture
4490
+ if aws_image_builder_options is not None:
4491
+ self._values["aws_image_builder_options"] = aws_image_builder_options
4492
+ if base_ami is not None:
4493
+ self._values["base_ami"] = base_ami
4494
+ if base_docker_image is not None:
4495
+ self._values["base_docker_image"] = base_docker_image
4496
+ if builder_type is not None:
4497
+ self._values["builder_type"] = builder_type
4498
+ if code_build_options is not None:
4499
+ self._values["code_build_options"] = code_build_options
4500
+ if components is not None:
4501
+ self._values["components"] = components
4502
+ if log_removal_policy is not None:
4503
+ self._values["log_removal_policy"] = log_removal_policy
4504
+ if log_retention is not None:
4505
+ self._values["log_retention"] = log_retention
4506
+ if os is not None:
4507
+ self._values["os"] = os
4508
+ if rebuild_interval is not None:
4509
+ self._values["rebuild_interval"] = rebuild_interval
4510
+ if runner_version is not None:
4511
+ self._values["runner_version"] = runner_version
4512
+ if security_groups is not None:
4513
+ self._values["security_groups"] = security_groups
4514
+ if subnet_selection is not None:
4515
+ self._values["subnet_selection"] = subnet_selection
4516
+ if vpc is not None:
4517
+ self._values["vpc"] = vpc
4477
4518
 
4478
- jsii.create(self.__class__, self, [scope, id, props])
4519
+ @builtins.property
4520
+ def architecture(self) -> typing.Optional[Architecture]:
4521
+ '''(experimental) Image architecture.
4479
4522
 
4480
- @jsii.member(jsii_name="new")
4481
- @builtins.classmethod
4482
- def new(
4483
- cls,
4484
- scope: _constructs_77d1e7e8.Construct,
4485
- id: builtins.str,
4486
- *,
4487
- architecture: typing.Optional[Architecture] = None,
4488
- aws_image_builder_options: typing.Optional[typing.Union[AwsImageBuilderRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
4489
- base_ami: typing.Optional[builtins.str] = None,
4490
- base_docker_image: typing.Optional[builtins.str] = None,
4491
- builder_type: typing.Optional["RunnerImageBuilderType"] = None,
4492
- code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
4493
- components: typing.Optional[typing.Sequence["RunnerImageComponent"]] = None,
4494
- log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
4495
- log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
4496
- os: typing.Optional[Os] = None,
4497
- rebuild_interval: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4498
- runner_version: typing.Optional["RunnerVersion"] = None,
4499
- security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
4500
- subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
4501
- vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
4502
- ) -> "RunnerImageBuilder":
4503
- '''(experimental) Create a new image builder based on the provided properties.
4523
+ :default: Architecture.X86_64
4504
4524
 
4505
- The implementation will differ based on the OS, architecture, and requested builder type.
4525
+ :stability: experimental
4526
+ '''
4527
+ result = self._values.get("architecture")
4528
+ return typing.cast(typing.Optional[Architecture], result)
4506
4529
 
4507
- :param scope: -
4508
- :param id: -
4509
- :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
4510
- :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
4511
- :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
4512
- :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
4513
- :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
4514
- :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
4515
- :param components: (experimental) Components to install on the image. Default: none
4516
- :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
4517
- :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
4518
- :param os: (experimental) Image OS. Default: OS.LINUX_UBUNTU
4519
- :param rebuild_interval: (experimental) Schedule the image to be rebuilt every given interval. Useful for keeping the image up-do-date with the latest GitHub runner version and latest OS updates. Set to zero to disable. Default: Duration.days(7)
4520
- :param runner_version: (experimental) Version of GitHub Runners to install. Default: latest version available
4521
- :param security_groups: (experimental) Security Groups to assign to this instance.
4522
- :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
4523
- :param vpc: (experimental) VPC to build the image in. Default: no VPC
4530
+ @builtins.property
4531
+ def aws_image_builder_options(
4532
+ self,
4533
+ ) -> typing.Optional[AwsImageBuilderRunnerImageBuilderProps]:
4534
+ '''(experimental) Options specific to AWS Image Builder.
4535
+
4536
+ Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
4524
4537
 
4525
4538
  :stability: experimental
4526
4539
  '''
4527
- if __debug__:
4528
- type_hints = typing.get_type_hints(_typecheckingstub__c44d5704c54d7fdcf24ad39567c0e9f53f9837163bf8bf3b1b4e652e27c9ec75)
4529
- check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
4530
- check_type(argname="argument id", value=id, expected_type=type_hints["id"])
4531
- props = RunnerImageBuilderProps(
4532
- architecture=architecture,
4533
- aws_image_builder_options=aws_image_builder_options,
4534
- base_ami=base_ami,
4535
- base_docker_image=base_docker_image,
4536
- builder_type=builder_type,
4537
- code_build_options=code_build_options,
4538
- components=components,
4539
- log_removal_policy=log_removal_policy,
4540
- log_retention=log_retention,
4541
- os=os,
4542
- rebuild_interval=rebuild_interval,
4543
- runner_version=runner_version,
4544
- security_groups=security_groups,
4545
- subnet_selection=subnet_selection,
4546
- vpc=vpc,
4547
- )
4548
-
4549
- return typing.cast("RunnerImageBuilder", jsii.sinvoke(cls, "new", [scope, id, props]))
4540
+ result = self._values.get("aws_image_builder_options")
4541
+ return typing.cast(typing.Optional[AwsImageBuilderRunnerImageBuilderProps], result)
4550
4542
 
4551
- @jsii.member(jsii_name="addComponent")
4552
- def add_component(self, component: "RunnerImageComponent") -> None:
4553
- '''(experimental) Add a component to the image builder.
4543
+ @builtins.property
4544
+ def base_ami(self) -> typing.Optional[builtins.str]:
4545
+ '''(experimental) Base AMI from which runner AMIs will be built.
4554
4546
 
4555
- The component will be added to the end of the list of components.
4547
+ 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.
4556
4548
 
4557
- :param component: component to add.
4549
+ :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
4558
4550
 
4559
4551
  :stability: experimental
4560
4552
  '''
4561
- if __debug__:
4562
- type_hints = typing.get_type_hints(_typecheckingstub__9dec4d5fbab87fa223a0eb0a144ad5bd91f9cdd54d3337c971ce6435c76dc049)
4563
- check_type(argname="argument component", value=component, expected_type=type_hints["component"])
4564
- return typing.cast(None, jsii.invoke(self, "addComponent", [component]))
4565
-
4566
- @jsii.member(jsii_name="bindAmi")
4567
- @abc.abstractmethod
4568
- def bind_ami(self) -> RunnerAmi:
4569
- '''(experimental) Build and return an AMI with GitHub Runner installed in it.
4553
+ result = self._values.get("base_ami")
4554
+ return typing.cast(typing.Optional[builtins.str], result)
4570
4555
 
4571
- Anything that ends up with a launch template pointing to an AMI that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing AMI and nothing else.
4556
+ @builtins.property
4557
+ def base_docker_image(self) -> typing.Optional[builtins.str]:
4558
+ '''(experimental) Base image from which Docker runner images will be built.
4572
4559
 
4573
- The AMI can be further updated over time manually or using a schedule as long as it is always written to the same launch template.
4560
+ :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
4574
4561
 
4575
4562
  :stability: experimental
4576
4563
  '''
4577
- ...
4564
+ result = self._values.get("base_docker_image")
4565
+ return typing.cast(typing.Optional[builtins.str], result)
4578
4566
 
4579
- @jsii.member(jsii_name="bindDockerImage")
4580
- @abc.abstractmethod
4581
- def bind_docker_image(self) -> RunnerImage:
4582
- '''(experimental) Build and return a Docker image with GitHub Runner installed in it.
4567
+ @builtins.property
4568
+ def builder_type(self) -> typing.Optional["RunnerImageBuilderType"]:
4569
+ '''
4570
+ :default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
4583
4571
 
4584
- Anything that ends up with an ECR repository containing a Docker image that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing image and nothing else.
4572
+ :stability: experimental
4573
+ '''
4574
+ result = self._values.get("builder_type")
4575
+ return typing.cast(typing.Optional["RunnerImageBuilderType"], result)
4585
4576
 
4586
- It's important that the specified image tag be available at the time the repository is available. Providers usually assume the image is ready and will fail if it's not.
4577
+ @builtins.property
4578
+ def code_build_options(self) -> typing.Optional[CodeBuildRunnerImageBuilderProps]:
4579
+ '''(experimental) Options specific to CodeBuild image builder.
4587
4580
 
4588
- The image can be further updated over time manually or using a schedule as long as it is always written to the same tag.
4581
+ Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
4589
4582
 
4590
4583
  :stability: experimental
4591
4584
  '''
4592
- ...
4593
-
4594
- @jsii.member(jsii_name="removeComponent")
4595
- def remove_component(self, component: "RunnerImageComponent") -> None:
4596
- '''(experimental) Remove a component from the image builder.
4585
+ result = self._values.get("code_build_options")
4586
+ return typing.cast(typing.Optional[CodeBuildRunnerImageBuilderProps], result)
4597
4587
 
4598
- Removal is done by component name. Multiple components with the same name will all be removed.
4588
+ @builtins.property
4589
+ def components(self) -> typing.Optional[typing.List["RunnerImageComponent"]]:
4590
+ '''(experimental) Components to install on the image.
4599
4591
 
4600
- :param component: component to remove.
4592
+ :default: none
4601
4593
 
4602
4594
  :stability: experimental
4603
4595
  '''
4604
- if __debug__:
4605
- type_hints = typing.get_type_hints(_typecheckingstub__1c4318b2834e7865918b5308b85c0fd80f22d29a067d68d4ee8537a6c0c88b3b)
4606
- check_type(argname="argument component", value=component, expected_type=type_hints["component"])
4607
- return typing.cast(None, jsii.invoke(self, "removeComponent", [component]))
4596
+ result = self._values.get("components")
4597
+ return typing.cast(typing.Optional[typing.List["RunnerImageComponent"]], result)
4608
4598
 
4609
4599
  @builtins.property
4610
- @jsii.member(jsii_name="connections")
4611
- @abc.abstractmethod
4612
- def connections(self) -> _aws_cdk_aws_ec2_ceddda9d.Connections:
4613
- '''(experimental) The network connections associated with this resource.
4600
+ def log_removal_policy(self) -> typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy]:
4601
+ '''(experimental) Removal policy for logs of image builds.
4602
+
4603
+ 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.
4604
+
4605
+ We try to not leave anything behind when removed. But sometimes a log staying behind is useful.
4606
+
4607
+ :default: RemovalPolicy.DESTROY
4614
4608
 
4615
4609
  :stability: experimental
4616
4610
  '''
4617
- ...
4611
+ result = self._values.get("log_removal_policy")
4612
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy], result)
4618
4613
 
4619
4614
  @builtins.property
4620
- @jsii.member(jsii_name="grantPrincipal")
4621
- @abc.abstractmethod
4622
- def grant_principal(self) -> _aws_cdk_aws_iam_ceddda9d.IPrincipal:
4623
- '''(experimental) The principal to grant permissions to.
4615
+ def log_retention(
4616
+ self,
4617
+ ) -> typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays]:
4618
+ '''(experimental) The number of days log events are kept in CloudWatch Logs.
4619
+
4620
+ When updating
4621
+ this property, unsetting it doesn't remove the log retention policy. To
4622
+ remove the retention policy, set the value to ``INFINITE``.
4623
+
4624
+ :default: logs.RetentionDays.ONE_MONTH
4624
4625
 
4625
4626
  :stability: experimental
4626
4627
  '''
4627
- ...
4628
+ result = self._values.get("log_retention")
4629
+ return typing.cast(typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays], result)
4628
4630
 
4629
4631
  @builtins.property
4630
- @jsii.member(jsii_name="components")
4631
- def _components(self) -> typing.List["RunnerImageComponent"]:
4632
- '''
4632
+ def os(self) -> typing.Optional[Os]:
4633
+ '''(experimental) Image OS.
4634
+
4635
+ :default: OS.LINUX_UBUNTU
4636
+
4633
4637
  :stability: experimental
4634
4638
  '''
4635
- return typing.cast(typing.List["RunnerImageComponent"], jsii.get(self, "components"))
4636
-
4637
- @_components.setter
4638
- def _components(self, value: typing.List["RunnerImageComponent"]) -> None:
4639
- if __debug__:
4640
- type_hints = typing.get_type_hints(_typecheckingstub__705c18a1eedaa490aebad511aac32a801519a57162e30be4673a8ab87ca434dc)
4641
- check_type(argname="argument value", value=value, expected_type=type_hints["value"])
4642
- jsii.set(self, "components", value)
4639
+ result = self._values.get("os")
4640
+ return typing.cast(typing.Optional[Os], result)
4643
4641
 
4642
+ @builtins.property
4643
+ def rebuild_interval(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
4644
+ '''(experimental) Schedule the image to be rebuilt every given interval.
4644
4645
 
4645
- class _RunnerImageBuilderProxy(RunnerImageBuilder):
4646
- @jsii.member(jsii_name="bindAmi")
4647
- def bind_ami(self) -> RunnerAmi:
4648
- '''(experimental) Build and return an AMI with GitHub Runner installed in it.
4646
+ Useful for keeping the image up-do-date with the latest GitHub runner version and latest OS updates.
4649
4647
 
4650
- Anything that ends up with a launch template pointing to an AMI that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing AMI and nothing else.
4648
+ Set to zero to disable.
4651
4649
 
4652
- The AMI can be further updated over time manually or using a schedule as long as it is always written to the same launch template.
4650
+ :default: Duration.days(7)
4653
4651
 
4654
4652
  :stability: experimental
4655
4653
  '''
4656
- return typing.cast(RunnerAmi, jsii.invoke(self, "bindAmi", []))
4654
+ result = self._values.get("rebuild_interval")
4655
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
4657
4656
 
4658
- @jsii.member(jsii_name="bindDockerImage")
4659
- def bind_docker_image(self) -> RunnerImage:
4660
- '''(experimental) Build and return a Docker image with GitHub Runner installed in it.
4657
+ @builtins.property
4658
+ def runner_version(self) -> typing.Optional["RunnerVersion"]:
4659
+ '''(experimental) Version of GitHub Runners to install.
4661
4660
 
4662
- Anything that ends up with an ECR repository containing a Docker image that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing image and nothing else.
4661
+ :default: latest version available
4663
4662
 
4664
- It's important that the specified image tag be available at the time the repository is available. Providers usually assume the image is ready and will fail if it's not.
4663
+ :stability: experimental
4664
+ '''
4665
+ result = self._values.get("runner_version")
4666
+ return typing.cast(typing.Optional["RunnerVersion"], result)
4665
4667
 
4666
- The image can be further updated over time manually or using a schedule as long as it is always written to the same tag.
4668
+ @builtins.property
4669
+ def security_groups(
4670
+ self,
4671
+ ) -> typing.Optional[typing.List[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]]:
4672
+ '''(experimental) Security Groups to assign to this instance.
4667
4673
 
4668
4674
  :stability: experimental
4669
4675
  '''
4670
- return typing.cast(RunnerImage, jsii.invoke(self, "bindDockerImage", []))
4676
+ result = self._values.get("security_groups")
4677
+ return typing.cast(typing.Optional[typing.List[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]], result)
4671
4678
 
4672
4679
  @builtins.property
4673
- @jsii.member(jsii_name="connections")
4674
- def connections(self) -> _aws_cdk_aws_ec2_ceddda9d.Connections:
4675
- '''(experimental) The network connections associated with this resource.
4680
+ def subnet_selection(
4681
+ self,
4682
+ ) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection]:
4683
+ '''(experimental) Where to place the network interfaces within the VPC.
4684
+
4685
+ :default: no subnet
4676
4686
 
4677
4687
  :stability: experimental
4678
4688
  '''
4679
- return typing.cast(_aws_cdk_aws_ec2_ceddda9d.Connections, jsii.get(self, "connections"))
4689
+ result = self._values.get("subnet_selection")
4690
+ return typing.cast(typing.Optional[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection], result)
4680
4691
 
4681
4692
  @builtins.property
4682
- @jsii.member(jsii_name="grantPrincipal")
4683
- def grant_principal(self) -> _aws_cdk_aws_iam_ceddda9d.IPrincipal:
4684
- '''(experimental) The principal to grant permissions to.
4693
+ def vpc(self) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc]:
4694
+ '''(experimental) VPC to build the image in.
4695
+
4696
+ :default: no VPC
4685
4697
 
4686
4698
  :stability: experimental
4687
4699
  '''
4688
- return typing.cast(_aws_cdk_aws_iam_ceddda9d.IPrincipal, jsii.get(self, "grantPrincipal"))
4700
+ result = self._values.get("vpc")
4701
+ return typing.cast(typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc], result)
4689
4702
 
4690
- # Adding a "__jsii_proxy_class__(): typing.Type" function to the abstract class
4691
- typing.cast(typing.Any, RunnerImageBuilder).__jsii_proxy_class__ = lambda : _RunnerImageBuilderProxy
4703
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
4704
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
4692
4705
 
4706
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
4707
+ return not (rhs == self)
4693
4708
 
4694
- @jsii.data_type(
4695
- jsii_type="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderProps",
4696
- jsii_struct_bases=[],
4697
- name_mapping={
4698
- "architecture": "architecture",
4699
- "aws_image_builder_options": "awsImageBuilderOptions",
4700
- "base_ami": "baseAmi",
4701
- "base_docker_image": "baseDockerImage",
4702
- "builder_type": "builderType",
4703
- "code_build_options": "codeBuildOptions",
4704
- "components": "components",
4705
- "log_removal_policy": "logRemovalPolicy",
4706
- "log_retention": "logRetention",
4707
- "os": "os",
4708
- "rebuild_interval": "rebuildInterval",
4709
- "runner_version": "runnerVersion",
4710
- "security_groups": "securityGroups",
4711
- "subnet_selection": "subnetSelection",
4712
- "vpc": "vpc",
4713
- },
4714
- )
4715
- class RunnerImageBuilderProps:
4716
- def __init__(
4717
- self,
4718
- *,
4719
- architecture: typing.Optional[Architecture] = None,
4720
- aws_image_builder_options: typing.Optional[typing.Union[AwsImageBuilderRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
4721
- base_ami: typing.Optional[builtins.str] = None,
4722
- base_docker_image: typing.Optional[builtins.str] = None,
4723
- builder_type: typing.Optional["RunnerImageBuilderType"] = None,
4724
- code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
4725
- components: typing.Optional[typing.Sequence["RunnerImageComponent"]] = None,
4726
- log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
4727
- log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
4728
- os: typing.Optional[Os] = None,
4729
- rebuild_interval: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4730
- runner_version: typing.Optional["RunnerVersion"] = None,
4731
- security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
4732
- subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
4733
- vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
4734
- ) -> None:
4735
- '''
4736
- :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
4737
- :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
4738
- :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
4739
- :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
4740
- :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
4741
- :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
4742
- :param components: (experimental) Components to install on the image. Default: none
4743
- :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
4744
- :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
4745
- :param os: (experimental) Image OS. Default: OS.LINUX_UBUNTU
4746
- :param rebuild_interval: (experimental) Schedule the image to be rebuilt every given interval. Useful for keeping the image up-do-date with the latest GitHub runner version and latest OS updates. Set to zero to disable. Default: Duration.days(7)
4747
- :param runner_version: (experimental) Version of GitHub Runners to install. Default: latest version available
4748
- :param security_groups: (experimental) Security Groups to assign to this instance.
4749
- :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
4750
- :param vpc: (experimental) VPC to build the image in. Default: no VPC
4751
-
4752
- :stability: experimental
4753
- '''
4754
- if isinstance(aws_image_builder_options, dict):
4755
- aws_image_builder_options = AwsImageBuilderRunnerImageBuilderProps(**aws_image_builder_options)
4756
- if isinstance(code_build_options, dict):
4757
- code_build_options = CodeBuildRunnerImageBuilderProps(**code_build_options)
4758
- if isinstance(subnet_selection, dict):
4759
- subnet_selection = _aws_cdk_aws_ec2_ceddda9d.SubnetSelection(**subnet_selection)
4760
- if __debug__:
4761
- type_hints = typing.get_type_hints(_typecheckingstub__ab96b7f3871624e8430668114e7f5748ba5d253168db5b8f9a13955d0a82e43d)
4762
- check_type(argname="argument architecture", value=architecture, expected_type=type_hints["architecture"])
4763
- check_type(argname="argument aws_image_builder_options", value=aws_image_builder_options, expected_type=type_hints["aws_image_builder_options"])
4764
- check_type(argname="argument base_ami", value=base_ami, expected_type=type_hints["base_ami"])
4765
- check_type(argname="argument base_docker_image", value=base_docker_image, expected_type=type_hints["base_docker_image"])
4766
- check_type(argname="argument builder_type", value=builder_type, expected_type=type_hints["builder_type"])
4767
- check_type(argname="argument code_build_options", value=code_build_options, expected_type=type_hints["code_build_options"])
4768
- check_type(argname="argument components", value=components, expected_type=type_hints["components"])
4769
- check_type(argname="argument log_removal_policy", value=log_removal_policy, expected_type=type_hints["log_removal_policy"])
4770
- check_type(argname="argument log_retention", value=log_retention, expected_type=type_hints["log_retention"])
4771
- check_type(argname="argument os", value=os, expected_type=type_hints["os"])
4772
- check_type(argname="argument rebuild_interval", value=rebuild_interval, expected_type=type_hints["rebuild_interval"])
4773
- check_type(argname="argument runner_version", value=runner_version, expected_type=type_hints["runner_version"])
4774
- check_type(argname="argument security_groups", value=security_groups, expected_type=type_hints["security_groups"])
4775
- check_type(argname="argument subnet_selection", value=subnet_selection, expected_type=type_hints["subnet_selection"])
4776
- check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
4777
- self._values: typing.Dict[builtins.str, typing.Any] = {}
4778
- if architecture is not None:
4779
- self._values["architecture"] = architecture
4780
- if aws_image_builder_options is not None:
4781
- self._values["aws_image_builder_options"] = aws_image_builder_options
4782
- if base_ami is not None:
4783
- self._values["base_ami"] = base_ami
4784
- if base_docker_image is not None:
4785
- self._values["base_docker_image"] = base_docker_image
4786
- if builder_type is not None:
4787
- self._values["builder_type"] = builder_type
4788
- if code_build_options is not None:
4789
- self._values["code_build_options"] = code_build_options
4790
- if components is not None:
4791
- self._values["components"] = components
4792
- if log_removal_policy is not None:
4793
- self._values["log_removal_policy"] = log_removal_policy
4794
- if log_retention is not None:
4795
- self._values["log_retention"] = log_retention
4796
- if os is not None:
4797
- self._values["os"] = os
4798
- if rebuild_interval is not None:
4799
- self._values["rebuild_interval"] = rebuild_interval
4800
- if runner_version is not None:
4801
- self._values["runner_version"] = runner_version
4802
- if security_groups is not None:
4803
- self._values["security_groups"] = security_groups
4804
- if subnet_selection is not None:
4805
- self._values["subnet_selection"] = subnet_selection
4806
- if vpc is not None:
4807
- self._values["vpc"] = vpc
4808
-
4809
- @builtins.property
4810
- def architecture(self) -> typing.Optional[Architecture]:
4811
- '''(experimental) Image architecture.
4812
-
4813
- :default: Architecture.X86_64
4814
-
4815
- :stability: experimental
4816
- '''
4817
- result = self._values.get("architecture")
4818
- return typing.cast(typing.Optional[Architecture], result)
4819
-
4820
- @builtins.property
4821
- def aws_image_builder_options(
4822
- self,
4823
- ) -> typing.Optional[AwsImageBuilderRunnerImageBuilderProps]:
4824
- '''(experimental) Options specific to AWS Image Builder.
4825
-
4826
- Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
4827
-
4828
- :stability: experimental
4829
- '''
4830
- result = self._values.get("aws_image_builder_options")
4831
- return typing.cast(typing.Optional[AwsImageBuilderRunnerImageBuilderProps], result)
4832
-
4833
- @builtins.property
4834
- def base_ami(self) -> typing.Optional[builtins.str]:
4835
- '''(experimental) Base AMI from which runner AMIs will be built.
4836
-
4837
- 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.
4838
-
4839
- :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
4840
-
4841
- :stability: experimental
4842
- '''
4843
- result = self._values.get("base_ami")
4844
- return typing.cast(typing.Optional[builtins.str], result)
4845
-
4846
- @builtins.property
4847
- def base_docker_image(self) -> typing.Optional[builtins.str]:
4848
- '''(experimental) Base image from which Docker runner images will be built.
4849
-
4850
- :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
4851
-
4852
- :stability: experimental
4853
- '''
4854
- result = self._values.get("base_docker_image")
4855
- return typing.cast(typing.Optional[builtins.str], result)
4856
-
4857
- @builtins.property
4858
- def builder_type(self) -> typing.Optional["RunnerImageBuilderType"]:
4859
- '''
4860
- :default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
4861
-
4862
- :stability: experimental
4863
- '''
4864
- result = self._values.get("builder_type")
4865
- return typing.cast(typing.Optional["RunnerImageBuilderType"], result)
4866
-
4867
- @builtins.property
4868
- def code_build_options(self) -> typing.Optional[CodeBuildRunnerImageBuilderProps]:
4869
- '''(experimental) Options specific to CodeBuild image builder.
4870
-
4871
- Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
4872
-
4873
- :stability: experimental
4874
- '''
4875
- result = self._values.get("code_build_options")
4876
- return typing.cast(typing.Optional[CodeBuildRunnerImageBuilderProps], result)
4877
-
4878
- @builtins.property
4879
- def components(self) -> typing.Optional[typing.List["RunnerImageComponent"]]:
4880
- '''(experimental) Components to install on the image.
4881
-
4882
- :default: none
4883
-
4884
- :stability: experimental
4885
- '''
4886
- result = self._values.get("components")
4887
- return typing.cast(typing.Optional[typing.List["RunnerImageComponent"]], result)
4888
-
4889
- @builtins.property
4890
- def log_removal_policy(self) -> typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy]:
4891
- '''(experimental) Removal policy for logs of image builds.
4892
-
4893
- 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.
4894
-
4895
- We try to not leave anything behind when removed. But sometimes a log staying behind is useful.
4896
-
4897
- :default: RemovalPolicy.DESTROY
4898
-
4899
- :stability: experimental
4900
- '''
4901
- result = self._values.get("log_removal_policy")
4902
- return typing.cast(typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy], result)
4903
-
4904
- @builtins.property
4905
- def log_retention(
4906
- self,
4907
- ) -> typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays]:
4908
- '''(experimental) The number of days log events are kept in CloudWatch Logs.
4909
-
4910
- When updating
4911
- this property, unsetting it doesn't remove the log retention policy. To
4912
- remove the retention policy, set the value to ``INFINITE``.
4913
-
4914
- :default: logs.RetentionDays.ONE_MONTH
4915
-
4916
- :stability: experimental
4917
- '''
4918
- result = self._values.get("log_retention")
4919
- return typing.cast(typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays], result)
4920
-
4921
- @builtins.property
4922
- def os(self) -> typing.Optional[Os]:
4923
- '''(experimental) Image OS.
4924
-
4925
- :default: OS.LINUX_UBUNTU
4926
-
4927
- :stability: experimental
4928
- '''
4929
- result = self._values.get("os")
4930
- return typing.cast(typing.Optional[Os], result)
4931
-
4932
- @builtins.property
4933
- def rebuild_interval(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
4934
- '''(experimental) Schedule the image to be rebuilt every given interval.
4935
-
4936
- Useful for keeping the image up-do-date with the latest GitHub runner version and latest OS updates.
4937
-
4938
- Set to zero to disable.
4939
-
4940
- :default: Duration.days(7)
4941
-
4942
- :stability: experimental
4943
- '''
4944
- result = self._values.get("rebuild_interval")
4945
- return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
4946
-
4947
- @builtins.property
4948
- def runner_version(self) -> typing.Optional["RunnerVersion"]:
4949
- '''(experimental) Version of GitHub Runners to install.
4950
-
4951
- :default: latest version available
4952
-
4953
- :stability: experimental
4954
- '''
4955
- result = self._values.get("runner_version")
4956
- return typing.cast(typing.Optional["RunnerVersion"], result)
4957
-
4958
- @builtins.property
4959
- def security_groups(
4960
- self,
4961
- ) -> typing.Optional[typing.List[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]]:
4962
- '''(experimental) Security Groups to assign to this instance.
4963
-
4964
- :stability: experimental
4965
- '''
4966
- result = self._values.get("security_groups")
4967
- return typing.cast(typing.Optional[typing.List[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]], result)
4968
-
4969
- @builtins.property
4970
- def subnet_selection(
4971
- self,
4972
- ) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection]:
4973
- '''(experimental) Where to place the network interfaces within the VPC.
4974
-
4975
- :default: no subnet
4976
-
4977
- :stability: experimental
4978
- '''
4979
- result = self._values.get("subnet_selection")
4980
- return typing.cast(typing.Optional[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection], result)
4981
-
4982
- @builtins.property
4983
- def vpc(self) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc]:
4984
- '''(experimental) VPC to build the image in.
4985
-
4986
- :default: no VPC
4987
-
4988
- :stability: experimental
4989
- '''
4990
- result = self._values.get("vpc")
4991
- return typing.cast(typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc], result)
4992
-
4993
- def __eq__(self, rhs: typing.Any) -> builtins.bool:
4994
- return isinstance(rhs, self.__class__) and rhs._values == self._values
4995
-
4996
- def __ne__(self, rhs: typing.Any) -> builtins.bool:
4997
- return not (rhs == self)
4998
-
4999
- def __repr__(self) -> str:
5000
- return "RunnerImageBuilderProps(%s)" % ", ".join(
5001
- k + "=" + repr(v) for k, v in self._values.items()
5002
- )
4709
+ def __repr__(self) -> str:
4710
+ return "RunnerImageBuilderProps(%s)" % ", ".join(
4711
+ k + "=" + repr(v) for k, v in self._values.items()
4712
+ )
5003
4713
 
5004
4714
 
5005
4715
  @jsii.enum(jsii_type="@cloudsnorkel/cdk-github-runners.RunnerImageBuilderType")
@@ -5071,7 +4781,7 @@ class RunnerImageComponent(
5071
4781
  :param assets: (experimental) Assets to copy into the built image.
5072
4782
  :param commands: (experimental) Commands to run in the built image.
5073
4783
  :param docker_commands: (experimental) Docker commands to run in the built image. For example: ``['ENV foo=bar', 'RUN echo $foo']`` These commands are ignored when building AMIs.
5074
- :param name: (experimental) Component name used for (1) image build logging and (2) identifier for {@link ImageRunnerBuilder.removeComponent }. Name must only contain alphanumeric characters and dashes.
4784
+ :param name: (experimental) Component name used for (1) image build logging and (2) identifier for {@link IConfigurableRunnerImageBuilder.removeComponent }. Name must only contain alphanumeric characters and dashes.
5075
4785
 
5076
4786
  :stability: experimental
5077
4787
  '''
@@ -5272,7 +4982,7 @@ class RunnerImageComponent(
5272
4982
  def name(self) -> builtins.str:
5273
4983
  '''(experimental) Component name.
5274
4984
 
5275
- Used to identify component in image build logs, and for {@link RunnerImageBuilder.removeComponent }
4985
+ Used to identify component in image build logs, and for {@link IConfigurableRunnerImageBuilder.removeComponent }
5276
4986
 
5277
4987
  :stability: experimental
5278
4988
  '''
@@ -5306,7 +5016,7 @@ class _RunnerImageComponentProxy(RunnerImageComponent):
5306
5016
  def name(self) -> builtins.str:
5307
5017
  '''(experimental) Component name.
5308
5018
 
5309
- Used to identify component in image build logs, and for {@link RunnerImageBuilder.removeComponent }
5019
+ Used to identify component in image build logs, and for {@link IConfigurableRunnerImageBuilder.removeComponent }
5310
5020
 
5311
5021
  :stability: experimental
5312
5022
  '''
@@ -5339,7 +5049,7 @@ class RunnerImageComponentCustomProps:
5339
5049
  :param assets: (experimental) Assets to copy into the built image.
5340
5050
  :param commands: (experimental) Commands to run in the built image.
5341
5051
  :param docker_commands: (experimental) Docker commands to run in the built image. For example: ``['ENV foo=bar', 'RUN echo $foo']`` These commands are ignored when building AMIs.
5342
- :param name: (experimental) Component name used for (1) image build logging and (2) identifier for {@link ImageRunnerBuilder.removeComponent }. Name must only contain alphanumeric characters and dashes.
5052
+ :param name: (experimental) Component name used for (1) image build logging and (2) identifier for {@link IConfigurableRunnerImageBuilder.removeComponent }. Name must only contain alphanumeric characters and dashes.
5343
5053
 
5344
5054
  :stability: experimental
5345
5055
  '''
@@ -5392,7 +5102,7 @@ class RunnerImageComponentCustomProps:
5392
5102
 
5393
5103
  @builtins.property
5394
5104
  def name(self) -> typing.Optional[builtins.str]:
5395
- '''(experimental) Component name used for (1) image build logging and (2) identifier for {@link ImageRunnerBuilder.removeComponent }.
5105
+ '''(experimental) Component name used for (1) image build logging and (2) identifier for {@link IConfigurableRunnerImageBuilder.removeComponent }.
5396
5106
 
5397
5107
  Name must only contain alphanumeric characters and dashes.
5398
5108
 
@@ -6608,8 +6318,14 @@ class CodeBuildRunnerProvider(
6608
6318
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
6609
6319
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
6610
6320
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
6611
- ) -> RunnerImageBuilder:
6612
- '''(experimental) Create new image builder that builds CodeBuild specific runner images using Ubuntu.
6321
+ ) -> "IConfigurableRunnerImageBuilder":
6322
+ '''(experimental) Create new image builder that builds CodeBuild specific runner images.
6323
+
6324
+ You can customize the OS, architecture, VPC, subnet, security groups, etc. by passing in props.
6325
+
6326
+ You can add components to the image builder by calling ``imageBuilder.addComponent()``.
6327
+
6328
+ The default OS is Ubuntu running on x64 architecture.
6613
6329
 
6614
6330
  Included components:
6615
6331
 
@@ -6663,7 +6379,7 @@ class CodeBuildRunnerProvider(
6663
6379
  vpc=vpc,
6664
6380
  )
6665
6381
 
6666
- return typing.cast(RunnerImageBuilder, jsii.sinvoke(cls, "imageBuilder", [scope, id, props]))
6382
+ return typing.cast("IConfigurableRunnerImageBuilder", jsii.sinvoke(cls, "imageBuilder", [scope, id, props]))
6667
6383
 
6668
6384
  @jsii.member(jsii_name="getStepFunctionTask")
6669
6385
  def get_step_function_task(
@@ -7546,8 +7262,14 @@ class Ec2RunnerProvider(
7546
7262
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
7547
7263
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
7548
7264
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
7549
- ) -> RunnerImageBuilder:
7550
- '''(experimental) Create new image builder that builds EC2 specific runner images using Ubuntu.
7265
+ ) -> "IConfigurableRunnerImageBuilder":
7266
+ '''(experimental) Create new image builder that builds EC2 specific runner images.
7267
+
7268
+ You can customize the OS, architecture, VPC, subnet, security groups, etc. by passing in props.
7269
+
7270
+ You can add components to the image builder by calling ``imageBuilder.addComponent()``.
7271
+
7272
+ The default OS is Ubuntu running on x64 architecture.
7551
7273
 
7552
7274
  Included components:
7553
7275
 
@@ -7601,7 +7323,7 @@ class Ec2RunnerProvider(
7601
7323
  vpc=vpc,
7602
7324
  )
7603
7325
 
7604
- return typing.cast(RunnerImageBuilder, jsii.sinvoke(cls, "imageBuilder", [scope, id, props]))
7326
+ return typing.cast("IConfigurableRunnerImageBuilder", jsii.sinvoke(cls, "imageBuilder", [scope, id, props]))
7605
7327
 
7606
7328
  @jsii.member(jsii_name="getStepFunctionTask")
7607
7329
  def get_step_function_task(
@@ -8164,8 +7886,14 @@ class EcsRunnerProvider(
8164
7886
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
8165
7887
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
8166
7888
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
8167
- ) -> RunnerImageBuilder:
8168
- '''(experimental) Create new image builder that builds ECS specific runner images using Ubuntu.
7889
+ ) -> "IConfigurableRunnerImageBuilder":
7890
+ '''(experimental) Create new image builder that builds ECS specific runner images.
7891
+
7892
+ You can customize the OS, architecture, VPC, subnet, security groups, etc. by passing in props.
7893
+
7894
+ You can add components to the image builder by calling ``imageBuilder.addComponent()``.
7895
+
7896
+ The default OS is Ubuntu running on x64 architecture.
8169
7897
 
8170
7898
  Included components:
8171
7899
 
@@ -8219,7 +7947,7 @@ class EcsRunnerProvider(
8219
7947
  vpc=vpc,
8220
7948
  )
8221
7949
 
8222
- return typing.cast(RunnerImageBuilder, jsii.sinvoke(cls, "imageBuilder", [scope, id, props]))
7950
+ return typing.cast("IConfigurableRunnerImageBuilder", jsii.sinvoke(cls, "imageBuilder", [scope, id, props]))
8223
7951
 
8224
7952
  @jsii.member(jsii_name="getStepFunctionTask")
8225
7953
  def get_step_function_task(
@@ -8872,8 +8600,14 @@ class FargateRunnerProvider(
8872
8600
  security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
8873
8601
  subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
8874
8602
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
8875
- ) -> RunnerImageBuilder:
8876
- '''(experimental) Create new image builder that builds Fargate specific runner images using Ubuntu.
8603
+ ) -> "IConfigurableRunnerImageBuilder":
8604
+ '''(experimental) Create new image builder that builds Fargate specific runner images.
8605
+
8606
+ You can customize the OS, architecture, VPC, subnet, security groups, etc. by passing in props.
8607
+
8608
+ You can add components to the image builder by calling ``imageBuilder.addComponent()``.
8609
+
8610
+ The default OS is Ubuntu running on x64 architecture.
8877
8611
 
8878
8612
  Included components:
8879
8613
 
@@ -8926,7 +8660,7 @@ class FargateRunnerProvider(
8926
8660
  vpc=vpc,
8927
8661
  )
8928
8662
 
8929
- return typing.cast(RunnerImageBuilder, jsii.sinvoke(cls, "imageBuilder", [scope, id, props]))
8663
+ return typing.cast("IConfigurableRunnerImageBuilder", jsii.sinvoke(cls, "imageBuilder", [scope, id, props]))
8930
8664
 
8931
8665
  @jsii.member(jsii_name="getStepFunctionTask")
8932
8666
  def get_step_function_task(
@@ -9526,24 +9260,117 @@ class FargateRunnerProviderProps(RunnerProviderProps):
9526
9260
  )
9527
9261
 
9528
9262
 
9529
- class LambdaRunner(
9530
- LambdaRunnerProvider,
9531
- metaclass=jsii.JSIIMeta,
9532
- jsii_type="@cloudsnorkel/cdk-github-runners.LambdaRunner",
9263
+ @jsii.interface(
9264
+ jsii_type="@cloudsnorkel/cdk-github-runners.IConfigurableRunnerImageBuilder"
9265
+ )
9266
+ class IConfigurableRunnerImageBuilder(
9267
+ IRunnerImageBuilder,
9268
+ _aws_cdk_aws_ec2_ceddda9d.IConnectable,
9269
+ _aws_cdk_aws_iam_ceddda9d.IGrantable,
9270
+ typing_extensions.Protocol,
9533
9271
  ):
9534
- '''
9535
- :deprecated: use {@link LambdaRunnerProvider }
9272
+ '''(experimental) Interface for constructs that build an image that can be used in {@link IRunnerProvider }.
9536
9273
 
9537
- :stability: deprecated
9274
+ The image can be configured by adding or removing components. The image builder can be configured by adding grants or allowing connections.
9275
+
9276
+ An image can be a Docker image or AMI.
9277
+
9278
+ :stability: experimental
9538
9279
  '''
9539
9280
 
9540
- def __init__(
9541
- self,
9542
- scope: _constructs_77d1e7e8.Construct,
9543
- id: builtins.str,
9544
- *,
9545
- ephemeral_storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
9546
- image_builder: typing.Optional[IRunnerImageBuilder] = None,
9281
+ @jsii.member(jsii_name="addComponent")
9282
+ def add_component(self, component: RunnerImageComponent) -> None:
9283
+ '''(experimental) Add a component to the image builder.
9284
+
9285
+ The component will be added to the end of the list of components.
9286
+
9287
+ :param component: component to add.
9288
+
9289
+ :stability: experimental
9290
+ '''
9291
+ ...
9292
+
9293
+ @jsii.member(jsii_name="removeComponent")
9294
+ def remove_component(self, component: RunnerImageComponent) -> None:
9295
+ '''(experimental) Remove a component from the image builder.
9296
+
9297
+ Removal is done by component name. Multiple components with the same name will all be removed.
9298
+
9299
+ :param component: component to remove.
9300
+
9301
+ :stability: experimental
9302
+ '''
9303
+ ...
9304
+
9305
+
9306
+ class _IConfigurableRunnerImageBuilderProxy(
9307
+ jsii.proxy_for(IRunnerImageBuilder), # type: ignore[misc]
9308
+ jsii.proxy_for(_aws_cdk_aws_ec2_ceddda9d.IConnectable), # type: ignore[misc]
9309
+ jsii.proxy_for(_aws_cdk_aws_iam_ceddda9d.IGrantable), # type: ignore[misc]
9310
+ ):
9311
+ '''(experimental) Interface for constructs that build an image that can be used in {@link IRunnerProvider }.
9312
+
9313
+ The image can be configured by adding or removing components. The image builder can be configured by adding grants or allowing connections.
9314
+
9315
+ An image can be a Docker image or AMI.
9316
+
9317
+ :stability: experimental
9318
+ '''
9319
+
9320
+ __jsii_type__: typing.ClassVar[str] = "@cloudsnorkel/cdk-github-runners.IConfigurableRunnerImageBuilder"
9321
+
9322
+ @jsii.member(jsii_name="addComponent")
9323
+ def add_component(self, component: RunnerImageComponent) -> None:
9324
+ '''(experimental) Add a component to the image builder.
9325
+
9326
+ The component will be added to the end of the list of components.
9327
+
9328
+ :param component: component to add.
9329
+
9330
+ :stability: experimental
9331
+ '''
9332
+ if __debug__:
9333
+ type_hints = typing.get_type_hints(_typecheckingstub__dc4625ad41fc3631b6e9812ae4ab86d19fc28eb849f5a5bf3a3ed7c4ebbeb066)
9334
+ check_type(argname="argument component", value=component, expected_type=type_hints["component"])
9335
+ return typing.cast(None, jsii.invoke(self, "addComponent", [component]))
9336
+
9337
+ @jsii.member(jsii_name="removeComponent")
9338
+ def remove_component(self, component: RunnerImageComponent) -> None:
9339
+ '''(experimental) Remove a component from the image builder.
9340
+
9341
+ Removal is done by component name. Multiple components with the same name will all be removed.
9342
+
9343
+ :param component: component to remove.
9344
+
9345
+ :stability: experimental
9346
+ '''
9347
+ if __debug__:
9348
+ type_hints = typing.get_type_hints(_typecheckingstub__3aa11e0e95269ba6ec5fded5dd768fb588157de9643a5fce8b09fc9b4e2a18c0)
9349
+ check_type(argname="argument component", value=component, expected_type=type_hints["component"])
9350
+ return typing.cast(None, jsii.invoke(self, "removeComponent", [component]))
9351
+
9352
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
9353
+ typing.cast(typing.Any, IConfigurableRunnerImageBuilder).__jsii_proxy_class__ = lambda : _IConfigurableRunnerImageBuilderProxy
9354
+
9355
+
9356
+ class LambdaRunner(
9357
+ LambdaRunnerProvider,
9358
+ metaclass=jsii.JSIIMeta,
9359
+ jsii_type="@cloudsnorkel/cdk-github-runners.LambdaRunner",
9360
+ ):
9361
+ '''
9362
+ :deprecated: use {@link LambdaRunnerProvider }
9363
+
9364
+ :stability: deprecated
9365
+ '''
9366
+
9367
+ def __init__(
9368
+ self,
9369
+ scope: _constructs_77d1e7e8.Construct,
9370
+ id: builtins.str,
9371
+ *,
9372
+ ephemeral_storage_size: typing.Optional[_aws_cdk_ceddda9d.Size] = None,
9373
+ image_builder: typing.Optional[IRunnerImageBuilder] = None,
9547
9374
  label: typing.Optional[builtins.str] = None,
9548
9375
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
9549
9376
  memory_size: typing.Optional[jsii.Number] = None,
@@ -9768,100 +9595,395 @@ class LambdaRunnerProviderProps(RunnerProviderProps):
9768
9595
 
9769
9596
  :stability: experimental
9770
9597
  '''
9771
- result = self._values.get("labels")
9772
- return typing.cast(typing.Optional[typing.List[builtins.str]], result)
9598
+ result = self._values.get("labels")
9599
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
9600
+
9601
+ @builtins.property
9602
+ def memory_size(self) -> typing.Optional[jsii.Number]:
9603
+ '''(experimental) The amount of memory, in MB, that is allocated to your Lambda function.
9604
+
9605
+ Lambda uses this value to proportionally allocate the amount of CPU
9606
+ power. For more information, see Resource Model in the AWS Lambda
9607
+ Developer Guide.
9608
+
9609
+ :default: 2048
9610
+
9611
+ :stability: experimental
9612
+ '''
9613
+ result = self._values.get("memory_size")
9614
+ return typing.cast(typing.Optional[jsii.Number], result)
9615
+
9616
+ @builtins.property
9617
+ def security_group(
9618
+ self,
9619
+ ) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]:
9620
+ '''(deprecated) Security group to assign to this instance.
9621
+
9622
+ :default: public lambda with no security group
9623
+
9624
+ :deprecated: use {@link securityGroups }
9625
+
9626
+ :stability: deprecated
9627
+ '''
9628
+ result = self._values.get("security_group")
9629
+ return typing.cast(typing.Optional[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup], result)
9630
+
9631
+ @builtins.property
9632
+ def security_groups(
9633
+ self,
9634
+ ) -> typing.Optional[typing.List[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]]:
9635
+ '''(experimental) Security groups to assign to this instance.
9636
+
9637
+ :default: public lambda with no security group
9638
+
9639
+ :stability: experimental
9640
+ '''
9641
+ result = self._values.get("security_groups")
9642
+ return typing.cast(typing.Optional[typing.List[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]], result)
9643
+
9644
+ @builtins.property
9645
+ def subnet_selection(
9646
+ self,
9647
+ ) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection]:
9648
+ '''(experimental) Where to place the network interfaces within the VPC.
9649
+
9650
+ :default: no subnet
9651
+
9652
+ :stability: experimental
9653
+ '''
9654
+ result = self._values.get("subnet_selection")
9655
+ return typing.cast(typing.Optional[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection], result)
9656
+
9657
+ @builtins.property
9658
+ def timeout(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
9659
+ '''(experimental) The function execution time (in seconds) after which Lambda terminates the function.
9660
+
9661
+ Because the execution time affects cost, set this value
9662
+ based on the function's expected execution time.
9663
+
9664
+ :default: Duration.minutes(15)
9665
+
9666
+ :stability: experimental
9667
+ '''
9668
+ result = self._values.get("timeout")
9669
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
9670
+
9671
+ @builtins.property
9672
+ def vpc(self) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc]:
9673
+ '''(experimental) VPC to launch the runners in.
9674
+
9675
+ :default: no VPC
9676
+
9677
+ :stability: experimental
9678
+ '''
9679
+ result = self._values.get("vpc")
9680
+ return typing.cast(typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc], result)
9681
+
9682
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
9683
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
9684
+
9685
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
9686
+ return not (rhs == self)
9687
+
9688
+ def __repr__(self) -> str:
9689
+ return "LambdaRunnerProviderProps(%s)" % ", ".join(
9690
+ k + "=" + repr(v) for k, v in self._values.items()
9691
+ )
9692
+
9693
+
9694
+ @jsii.implements(IConfigurableRunnerImageBuilder)
9695
+ class RunnerImageBuilder(
9696
+ _constructs_77d1e7e8.Construct,
9697
+ metaclass=jsii.JSIIAbstractClass,
9698
+ jsii_type="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder",
9699
+ ):
9700
+ '''(experimental) GitHub Runner image builder. Builds a Docker image or AMI with GitHub Runner and other requirements installed.
9701
+
9702
+ Images can be customized before passed into the provider by adding or removing components to be installed.
9703
+
9704
+ Images are rebuilt every week by default to ensure that the latest security patches are applied.
9705
+
9706
+ :stability: experimental
9707
+ '''
9708
+
9709
+ def __init__(
9710
+ self,
9711
+ scope: _constructs_77d1e7e8.Construct,
9712
+ id: builtins.str,
9713
+ *,
9714
+ architecture: typing.Optional[Architecture] = None,
9715
+ aws_image_builder_options: typing.Optional[typing.Union[AwsImageBuilderRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
9716
+ base_ami: typing.Optional[builtins.str] = None,
9717
+ base_docker_image: typing.Optional[builtins.str] = None,
9718
+ builder_type: typing.Optional[RunnerImageBuilderType] = None,
9719
+ code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
9720
+ components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
9721
+ log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
9722
+ log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
9723
+ os: typing.Optional[Os] = None,
9724
+ rebuild_interval: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
9725
+ runner_version: typing.Optional[RunnerVersion] = None,
9726
+ security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
9727
+ subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
9728
+ vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
9729
+ ) -> None:
9730
+ '''
9731
+ :param scope: -
9732
+ :param id: -
9733
+ :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
9734
+ :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
9735
+ :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
9736
+ :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
9737
+ :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
9738
+ :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
9739
+ :param components: (experimental) Components to install on the image. Default: none
9740
+ :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
9741
+ :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
9742
+ :param os: (experimental) Image OS. Default: OS.LINUX_UBUNTU
9743
+ :param rebuild_interval: (experimental) Schedule the image to be rebuilt every given interval. Useful for keeping the image up-do-date with the latest GitHub runner version and latest OS updates. Set to zero to disable. Default: Duration.days(7)
9744
+ :param runner_version: (experimental) Version of GitHub Runners to install. Default: latest version available
9745
+ :param security_groups: (experimental) Security Groups to assign to this instance.
9746
+ :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
9747
+ :param vpc: (experimental) VPC to build the image in. Default: no VPC
9748
+
9749
+ :stability: experimental
9750
+ '''
9751
+ if __debug__:
9752
+ type_hints = typing.get_type_hints(_typecheckingstub__963c9a4884bb9d7400672391dfb47486f969a1b8fe5616bba9cd493e8a71484b)
9753
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
9754
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
9755
+ props = RunnerImageBuilderProps(
9756
+ architecture=architecture,
9757
+ aws_image_builder_options=aws_image_builder_options,
9758
+ base_ami=base_ami,
9759
+ base_docker_image=base_docker_image,
9760
+ builder_type=builder_type,
9761
+ code_build_options=code_build_options,
9762
+ components=components,
9763
+ log_removal_policy=log_removal_policy,
9764
+ log_retention=log_retention,
9765
+ os=os,
9766
+ rebuild_interval=rebuild_interval,
9767
+ runner_version=runner_version,
9768
+ security_groups=security_groups,
9769
+ subnet_selection=subnet_selection,
9770
+ vpc=vpc,
9771
+ )
9772
+
9773
+ jsii.create(self.__class__, self, [scope, id, props])
9774
+
9775
+ @jsii.member(jsii_name="new")
9776
+ @builtins.classmethod
9777
+ def new(
9778
+ cls,
9779
+ scope: _constructs_77d1e7e8.Construct,
9780
+ id: builtins.str,
9781
+ *,
9782
+ architecture: typing.Optional[Architecture] = None,
9783
+ aws_image_builder_options: typing.Optional[typing.Union[AwsImageBuilderRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
9784
+ base_ami: typing.Optional[builtins.str] = None,
9785
+ base_docker_image: typing.Optional[builtins.str] = None,
9786
+ builder_type: typing.Optional[RunnerImageBuilderType] = None,
9787
+ code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
9788
+ components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
9789
+ log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
9790
+ log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
9791
+ os: typing.Optional[Os] = None,
9792
+ rebuild_interval: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
9793
+ runner_version: typing.Optional[RunnerVersion] = None,
9794
+ security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
9795
+ subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
9796
+ vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
9797
+ ) -> IConfigurableRunnerImageBuilder:
9798
+ '''(experimental) Create a new image builder based on the provided properties.
9799
+
9800
+ The implementation will differ based on the OS, architecture, and requested builder type.
9801
+
9802
+ :param scope: -
9803
+ :param id: -
9804
+ :param architecture: (experimental) Image architecture. Default: Architecture.X86_64
9805
+ :param aws_image_builder_options: (experimental) Options specific to AWS Image Builder. Only used when builderType is RunnerImageBuilderType.AWS_IMAGE_BUILDER.
9806
+ :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
9807
+ :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
9808
+ :param builder_type: Default: CodeBuild for Linux Docker image, AWS Image Builder for Windows Docker image and any AMI
9809
+ :param code_build_options: (experimental) Options specific to CodeBuild image builder. Only used when builderType is RunnerImageBuilderType.CODE_BUILD.
9810
+ :param components: (experimental) Components to install on the image. Default: none
9811
+ :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
9812
+ :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
9813
+ :param os: (experimental) Image OS. Default: OS.LINUX_UBUNTU
9814
+ :param rebuild_interval: (experimental) Schedule the image to be rebuilt every given interval. Useful for keeping the image up-do-date with the latest GitHub runner version and latest OS updates. Set to zero to disable. Default: Duration.days(7)
9815
+ :param runner_version: (experimental) Version of GitHub Runners to install. Default: latest version available
9816
+ :param security_groups: (experimental) Security Groups to assign to this instance.
9817
+ :param subnet_selection: (experimental) Where to place the network interfaces within the VPC. Default: no subnet
9818
+ :param vpc: (experimental) VPC to build the image in. Default: no VPC
9819
+
9820
+ :stability: experimental
9821
+ '''
9822
+ if __debug__:
9823
+ type_hints = typing.get_type_hints(_typecheckingstub__c44d5704c54d7fdcf24ad39567c0e9f53f9837163bf8bf3b1b4e652e27c9ec75)
9824
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
9825
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
9826
+ props = RunnerImageBuilderProps(
9827
+ architecture=architecture,
9828
+ aws_image_builder_options=aws_image_builder_options,
9829
+ base_ami=base_ami,
9830
+ base_docker_image=base_docker_image,
9831
+ builder_type=builder_type,
9832
+ code_build_options=code_build_options,
9833
+ components=components,
9834
+ log_removal_policy=log_removal_policy,
9835
+ log_retention=log_retention,
9836
+ os=os,
9837
+ rebuild_interval=rebuild_interval,
9838
+ runner_version=runner_version,
9839
+ security_groups=security_groups,
9840
+ subnet_selection=subnet_selection,
9841
+ vpc=vpc,
9842
+ )
9843
+
9844
+ return typing.cast(IConfigurableRunnerImageBuilder, jsii.sinvoke(cls, "new", [scope, id, props]))
9845
+
9846
+ @jsii.member(jsii_name="addComponent")
9847
+ def add_component(self, component: RunnerImageComponent) -> None:
9848
+ '''(experimental) Add a component to the image builder.
9849
+
9850
+ The component will be added to the end of the list of components.
9851
+
9852
+ :param component: -
9853
+
9854
+ :stability: experimental
9855
+ '''
9856
+ if __debug__:
9857
+ type_hints = typing.get_type_hints(_typecheckingstub__9dec4d5fbab87fa223a0eb0a144ad5bd91f9cdd54d3337c971ce6435c76dc049)
9858
+ check_type(argname="argument component", value=component, expected_type=type_hints["component"])
9859
+ return typing.cast(None, jsii.invoke(self, "addComponent", [component]))
9860
+
9861
+ @jsii.member(jsii_name="bindAmi")
9862
+ @abc.abstractmethod
9863
+ def bind_ami(self) -> RunnerAmi:
9864
+ '''(experimental) Build and return an AMI with GitHub Runner installed in it.
9865
+
9866
+ Anything that ends up with a launch template pointing to an AMI that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing AMI and nothing else.
9867
+
9868
+ The AMI can be further updated over time manually or using a schedule as long as it is always written to the same launch template.
9869
+
9870
+ :stability: experimental
9871
+ '''
9872
+ ...
9873
+
9874
+ @jsii.member(jsii_name="bindDockerImage")
9875
+ @abc.abstractmethod
9876
+ def bind_docker_image(self) -> RunnerImage:
9877
+ '''(experimental) Build and return a Docker image with GitHub Runner installed in it.
9878
+
9879
+ Anything that ends up with an ECR repository containing a Docker image that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing image and nothing else.
9880
+
9881
+ It's important that the specified image tag be available at the time the repository is available. Providers usually assume the image is ready and will fail if it's not.
9882
+
9883
+ The image can be further updated over time manually or using a schedule as long as it is always written to the same tag.
9884
+
9885
+ :stability: experimental
9886
+ '''
9887
+ ...
9888
+
9889
+ @jsii.member(jsii_name="removeComponent")
9890
+ def remove_component(self, component: RunnerImageComponent) -> None:
9891
+ '''(experimental) Remove a component from the image builder.
9892
+
9893
+ Removal is done by component name. Multiple components with the same name will all be removed.
9894
+
9895
+ :param component: -
9896
+
9897
+ :stability: experimental
9898
+ '''
9899
+ if __debug__:
9900
+ type_hints = typing.get_type_hints(_typecheckingstub__1c4318b2834e7865918b5308b85c0fd80f22d29a067d68d4ee8537a6c0c88b3b)
9901
+ check_type(argname="argument component", value=component, expected_type=type_hints["component"])
9902
+ return typing.cast(None, jsii.invoke(self, "removeComponent", [component]))
9903
+
9904
+ @builtins.property
9905
+ @jsii.member(jsii_name="connections")
9906
+ @abc.abstractmethod
9907
+ def connections(self) -> _aws_cdk_aws_ec2_ceddda9d.Connections:
9908
+ '''(experimental) The network connections associated with this resource.
9909
+
9910
+ :stability: experimental
9911
+ '''
9912
+ ...
9773
9913
 
9774
9914
  @builtins.property
9775
- def memory_size(self) -> typing.Optional[jsii.Number]:
9776
- '''(experimental) The amount of memory, in MB, that is allocated to your Lambda function.
9777
-
9778
- Lambda uses this value to proportionally allocate the amount of CPU
9779
- power. For more information, see Resource Model in the AWS Lambda
9780
- Developer Guide.
9781
-
9782
- :default: 2048
9915
+ @jsii.member(jsii_name="grantPrincipal")
9916
+ @abc.abstractmethod
9917
+ def grant_principal(self) -> _aws_cdk_aws_iam_ceddda9d.IPrincipal:
9918
+ '''(experimental) The principal to grant permissions to.
9783
9919
 
9784
9920
  :stability: experimental
9785
9921
  '''
9786
- result = self._values.get("memory_size")
9787
- return typing.cast(typing.Optional[jsii.Number], result)
9922
+ ...
9788
9923
 
9789
9924
  @builtins.property
9790
- def security_group(
9791
- self,
9792
- ) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]:
9793
- '''(deprecated) Security group to assign to this instance.
9925
+ @jsii.member(jsii_name="components")
9926
+ def _components(self) -> typing.List[RunnerImageComponent]:
9927
+ '''
9928
+ :stability: experimental
9929
+ '''
9930
+ return typing.cast(typing.List[RunnerImageComponent], jsii.get(self, "components"))
9794
9931
 
9795
- :default: public lambda with no security group
9932
+ @_components.setter
9933
+ def _components(self, value: typing.List[RunnerImageComponent]) -> None:
9934
+ if __debug__:
9935
+ type_hints = typing.get_type_hints(_typecheckingstub__705c18a1eedaa490aebad511aac32a801519a57162e30be4673a8ab87ca434dc)
9936
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
9937
+ jsii.set(self, "components", value)
9796
9938
 
9797
- :deprecated: use {@link securityGroups }
9798
9939
 
9799
- :stability: deprecated
9800
- '''
9801
- result = self._values.get("security_group")
9802
- return typing.cast(typing.Optional[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup], result)
9940
+ class _RunnerImageBuilderProxy(RunnerImageBuilder):
9941
+ @jsii.member(jsii_name="bindAmi")
9942
+ def bind_ami(self) -> RunnerAmi:
9943
+ '''(experimental) Build and return an AMI with GitHub Runner installed in it.
9803
9944
 
9804
- @builtins.property
9805
- def security_groups(
9806
- self,
9807
- ) -> typing.Optional[typing.List[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]]:
9808
- '''(experimental) Security groups to assign to this instance.
9945
+ Anything that ends up with a launch template pointing to an AMI that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing AMI and nothing else.
9809
9946
 
9810
- :default: public lambda with no security group
9947
+ The AMI can be further updated over time manually or using a schedule as long as it is always written to the same launch template.
9811
9948
 
9812
9949
  :stability: experimental
9813
9950
  '''
9814
- result = self._values.get("security_groups")
9815
- return typing.cast(typing.Optional[typing.List[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]], result)
9951
+ return typing.cast(RunnerAmi, jsii.invoke(self, "bindAmi", []))
9816
9952
 
9817
- @builtins.property
9818
- def subnet_selection(
9819
- self,
9820
- ) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection]:
9821
- '''(experimental) Where to place the network interfaces within the VPC.
9953
+ @jsii.member(jsii_name="bindDockerImage")
9954
+ def bind_docker_image(self) -> RunnerImage:
9955
+ '''(experimental) Build and return a Docker image with GitHub Runner installed in it.
9822
9956
 
9823
- :default: no subnet
9957
+ Anything that ends up with an ECR repository containing a Docker image that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing image and nothing else.
9958
+
9959
+ It's important that the specified image tag be available at the time the repository is available. Providers usually assume the image is ready and will fail if it's not.
9960
+
9961
+ The image can be further updated over time manually or using a schedule as long as it is always written to the same tag.
9824
9962
 
9825
9963
  :stability: experimental
9826
9964
  '''
9827
- result = self._values.get("subnet_selection")
9828
- return typing.cast(typing.Optional[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection], result)
9965
+ return typing.cast(RunnerImage, jsii.invoke(self, "bindDockerImage", []))
9829
9966
 
9830
9967
  @builtins.property
9831
- def timeout(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
9832
- '''(experimental) The function execution time (in seconds) after which Lambda terminates the function.
9833
-
9834
- Because the execution time affects cost, set this value
9835
- based on the function's expected execution time.
9836
-
9837
- :default: Duration.minutes(15)
9968
+ @jsii.member(jsii_name="connections")
9969
+ def connections(self) -> _aws_cdk_aws_ec2_ceddda9d.Connections:
9970
+ '''(experimental) The network connections associated with this resource.
9838
9971
 
9839
9972
  :stability: experimental
9840
9973
  '''
9841
- result = self._values.get("timeout")
9842
- return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
9974
+ return typing.cast(_aws_cdk_aws_ec2_ceddda9d.Connections, jsii.get(self, "connections"))
9843
9975
 
9844
9976
  @builtins.property
9845
- def vpc(self) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc]:
9846
- '''(experimental) VPC to launch the runners in.
9847
-
9848
- :default: no VPC
9977
+ @jsii.member(jsii_name="grantPrincipal")
9978
+ def grant_principal(self) -> _aws_cdk_aws_iam_ceddda9d.IPrincipal:
9979
+ '''(experimental) The principal to grant permissions to.
9849
9980
 
9850
9981
  :stability: experimental
9851
9982
  '''
9852
- result = self._values.get("vpc")
9853
- return typing.cast(typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc], result)
9854
-
9855
- def __eq__(self, rhs: typing.Any) -> builtins.bool:
9856
- return isinstance(rhs, self.__class__) and rhs._values == self._values
9857
-
9858
- def __ne__(self, rhs: typing.Any) -> builtins.bool:
9859
- return not (rhs == self)
9983
+ return typing.cast(_aws_cdk_aws_iam_ceddda9d.IPrincipal, jsii.get(self, "grantPrincipal"))
9860
9984
 
9861
- def __repr__(self) -> str:
9862
- return "LambdaRunnerProviderProps(%s)" % ", ".join(
9863
- k + "=" + repr(v) for k, v in self._values.items()
9864
- )
9985
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the abstract class
9986
+ typing.cast(typing.Any, RunnerImageBuilder).__jsii_proxy_class__ = lambda : _RunnerImageBuilderProxy
9865
9987
 
9866
9988
 
9867
9989
  class CodeBuildRunner(
@@ -10110,6 +10232,7 @@ __all__ = [
10110
10232
  "FargateRunnerProviderProps",
10111
10233
  "GitHubRunners",
10112
10234
  "GitHubRunnersProps",
10235
+ "IConfigurableRunnerImageBuilder",
10113
10236
  "IRunnerAmiStatus",
10114
10237
  "IRunnerImageBuilder",
10115
10238
  "IRunnerImageStatus",
@@ -10319,6 +10442,14 @@ def _typecheckingstub__363ebaab8a0bcbaea3d32a9c7e3cb241f08cf49d6eea02ba40eaaef9a
10319
10442
  """Type checking stubs"""
10320
10443
  pass
10321
10444
 
10445
+ def _typecheckingstub__abecb3decfe8eebf190daa2e93a508111cc10650e6b9fbf65b3a34f3ed07ca24(
10446
+ type: builtins.str,
10447
+ name: builtins.str,
10448
+ data: typing.Any,
10449
+ ) -> None:
10450
+ """Type checking stubs"""
10451
+ pass
10452
+
10322
10453
  def _typecheckingstub__a450535474a302df6d17ac0b627edd05f72f54c900f36380517d39fc0a3b15e4(
10323
10454
  grantee: _aws_cdk_aws_iam_ceddda9d.IGrantable,
10324
10455
  ) -> None:
@@ -10332,14 +10463,6 @@ def _typecheckingstub__bae848cd8ee55808c4c98a6e69173dc05ae5472e3b1443ee6fbc64e32
10332
10463
  """Type checking stubs"""
10333
10464
  pass
10334
10465
 
10335
- def _typecheckingstub__e11323aa6f18ef1898e18067dba5908fdeabd333bfc1604f92c4c244adb28f7f(
10336
- type: builtins.str,
10337
- name: builtins.str,
10338
- data: typing.Any,
10339
- ) -> None:
10340
- """Type checking stubs"""
10341
- pass
10342
-
10343
10466
  def _typecheckingstub__b86439e194b36e470271c572c251444f98c4b86a68fa7e63cf41ae1fa9628d4a(
10344
10467
  *,
10345
10468
  commands: typing.Sequence[builtins.str],
@@ -10551,70 +10674,6 @@ def _typecheckingstub__21bedad36e17a5840ddb719458c9e0eb15a89e493efa80af28f6031d1
10551
10674
  """Type checking stubs"""
10552
10675
  pass
10553
10676
 
10554
- def _typecheckingstub__963c9a4884bb9d7400672391dfb47486f969a1b8fe5616bba9cd493e8a71484b(
10555
- scope: _constructs_77d1e7e8.Construct,
10556
- id: builtins.str,
10557
- *,
10558
- architecture: typing.Optional[Architecture] = None,
10559
- aws_image_builder_options: typing.Optional[typing.Union[AwsImageBuilderRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
10560
- base_ami: typing.Optional[builtins.str] = None,
10561
- base_docker_image: typing.Optional[builtins.str] = None,
10562
- builder_type: typing.Optional[RunnerImageBuilderType] = None,
10563
- code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
10564
- components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
10565
- log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
10566
- log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
10567
- os: typing.Optional[Os] = None,
10568
- rebuild_interval: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
10569
- runner_version: typing.Optional[RunnerVersion] = None,
10570
- security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
10571
- subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
10572
- vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
10573
- ) -> None:
10574
- """Type checking stubs"""
10575
- pass
10576
-
10577
- def _typecheckingstub__c44d5704c54d7fdcf24ad39567c0e9f53f9837163bf8bf3b1b4e652e27c9ec75(
10578
- scope: _constructs_77d1e7e8.Construct,
10579
- id: builtins.str,
10580
- *,
10581
- architecture: typing.Optional[Architecture] = None,
10582
- aws_image_builder_options: typing.Optional[typing.Union[AwsImageBuilderRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
10583
- base_ami: typing.Optional[builtins.str] = None,
10584
- base_docker_image: typing.Optional[builtins.str] = None,
10585
- builder_type: typing.Optional[RunnerImageBuilderType] = None,
10586
- code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
10587
- components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
10588
- log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
10589
- log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
10590
- os: typing.Optional[Os] = None,
10591
- rebuild_interval: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
10592
- runner_version: typing.Optional[RunnerVersion] = None,
10593
- security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
10594
- subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
10595
- vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
10596
- ) -> None:
10597
- """Type checking stubs"""
10598
- pass
10599
-
10600
- def _typecheckingstub__9dec4d5fbab87fa223a0eb0a144ad5bd91f9cdd54d3337c971ce6435c76dc049(
10601
- component: RunnerImageComponent,
10602
- ) -> None:
10603
- """Type checking stubs"""
10604
- pass
10605
-
10606
- def _typecheckingstub__1c4318b2834e7865918b5308b85c0fd80f22d29a067d68d4ee8537a6c0c88b3b(
10607
- component: RunnerImageComponent,
10608
- ) -> None:
10609
- """Type checking stubs"""
10610
- pass
10611
-
10612
- def _typecheckingstub__705c18a1eedaa490aebad511aac32a801519a57162e30be4673a8ab87ca434dc(
10613
- value: typing.List[RunnerImageComponent],
10614
- ) -> None:
10615
- """Type checking stubs"""
10616
- pass
10617
-
10618
10677
  def _typecheckingstub__ab96b7f3871624e8430668114e7f5748ba5d253168db5b8f9a13955d0a82e43d(
10619
10678
  *,
10620
10679
  architecture: typing.Optional[Architecture] = None,
@@ -11363,6 +11422,18 @@ def _typecheckingstub__26cdeb87df1adf5c49e0f9c1c061c7138af674da9af221212e1505fc1
11363
11422
  """Type checking stubs"""
11364
11423
  pass
11365
11424
 
11425
+ def _typecheckingstub__dc4625ad41fc3631b6e9812ae4ab86d19fc28eb849f5a5bf3a3ed7c4ebbeb066(
11426
+ component: RunnerImageComponent,
11427
+ ) -> None:
11428
+ """Type checking stubs"""
11429
+ pass
11430
+
11431
+ def _typecheckingstub__3aa11e0e95269ba6ec5fded5dd768fb588157de9643a5fce8b09fc9b4e2a18c0(
11432
+ component: RunnerImageComponent,
11433
+ ) -> None:
11434
+ """Type checking stubs"""
11435
+ pass
11436
+
11366
11437
  def _typecheckingstub__80e9b84ecba02bdef856d3ee3f48a5e0a5e58ad813554fd529c0abe3af88217d(
11367
11438
  scope: _constructs_77d1e7e8.Construct,
11368
11439
  id: builtins.str,
@@ -11401,6 +11472,70 @@ def _typecheckingstub__45a4a92b817689da2d55675d278ad5c96699269cc41f3406b7fca6d7a
11401
11472
  """Type checking stubs"""
11402
11473
  pass
11403
11474
 
11475
+ def _typecheckingstub__963c9a4884bb9d7400672391dfb47486f969a1b8fe5616bba9cd493e8a71484b(
11476
+ scope: _constructs_77d1e7e8.Construct,
11477
+ id: builtins.str,
11478
+ *,
11479
+ architecture: typing.Optional[Architecture] = None,
11480
+ aws_image_builder_options: typing.Optional[typing.Union[AwsImageBuilderRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
11481
+ base_ami: typing.Optional[builtins.str] = None,
11482
+ base_docker_image: typing.Optional[builtins.str] = None,
11483
+ builder_type: typing.Optional[RunnerImageBuilderType] = None,
11484
+ code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
11485
+ components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
11486
+ log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
11487
+ log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11488
+ os: typing.Optional[Os] = None,
11489
+ rebuild_interval: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
11490
+ runner_version: typing.Optional[RunnerVersion] = None,
11491
+ security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
11492
+ subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11493
+ vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
11494
+ ) -> None:
11495
+ """Type checking stubs"""
11496
+ pass
11497
+
11498
+ def _typecheckingstub__c44d5704c54d7fdcf24ad39567c0e9f53f9837163bf8bf3b1b4e652e27c9ec75(
11499
+ scope: _constructs_77d1e7e8.Construct,
11500
+ id: builtins.str,
11501
+ *,
11502
+ architecture: typing.Optional[Architecture] = None,
11503
+ aws_image_builder_options: typing.Optional[typing.Union[AwsImageBuilderRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
11504
+ base_ami: typing.Optional[builtins.str] = None,
11505
+ base_docker_image: typing.Optional[builtins.str] = None,
11506
+ builder_type: typing.Optional[RunnerImageBuilderType] = None,
11507
+ code_build_options: typing.Optional[typing.Union[CodeBuildRunnerImageBuilderProps, typing.Dict[builtins.str, typing.Any]]] = None,
11508
+ components: typing.Optional[typing.Sequence[RunnerImageComponent]] = None,
11509
+ log_removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
11510
+ log_retention: typing.Optional[_aws_cdk_aws_logs_ceddda9d.RetentionDays] = None,
11511
+ os: typing.Optional[Os] = None,
11512
+ rebuild_interval: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
11513
+ runner_version: typing.Optional[RunnerVersion] = None,
11514
+ security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
11515
+ subnet_selection: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
11516
+ vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
11517
+ ) -> None:
11518
+ """Type checking stubs"""
11519
+ pass
11520
+
11521
+ def _typecheckingstub__9dec4d5fbab87fa223a0eb0a144ad5bd91f9cdd54d3337c971ce6435c76dc049(
11522
+ component: RunnerImageComponent,
11523
+ ) -> None:
11524
+ """Type checking stubs"""
11525
+ pass
11526
+
11527
+ def _typecheckingstub__1c4318b2834e7865918b5308b85c0fd80f22d29a067d68d4ee8537a6c0c88b3b(
11528
+ component: RunnerImageComponent,
11529
+ ) -> None:
11530
+ """Type checking stubs"""
11531
+ pass
11532
+
11533
+ def _typecheckingstub__705c18a1eedaa490aebad511aac32a801519a57162e30be4673a8ab87ca434dc(
11534
+ value: typing.List[RunnerImageComponent],
11535
+ ) -> None:
11536
+ """Type checking stubs"""
11537
+ pass
11538
+
11404
11539
  def _typecheckingstub__1ab9454b0ecfcd12fc0ab07c0f0f4d7ce646a5a928f5e14092b0a6c42a4c3b79(
11405
11540
  scope: _constructs_77d1e7e8.Construct,
11406
11541
  id: builtins.str,