@cloudsnorkel/cdk-github-runners 0.11.6 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/.gitattributes +1 -2
  2. package/.jsii +394 -186
  3. package/API.md +167 -27
  4. package/README.md +10 -20
  5. package/assets/delete-failed-runner.lambda/index.js +5 -3713
  6. package/assets/idle-runner-repear.lambda/index.js +5 -3713
  7. package/assets/image-builders/aws-image-builder/delete-ami.lambda/index.js +3 -22
  8. package/assets/image-builders/aws-image-builder/versioner.lambda/index.js +2 -2
  9. package/assets/{providers → image-builders}/build-image.lambda/index.js +2 -14
  10. package/assets/setup.lambda/index.js +3 -3711
  11. package/assets/status.lambda/index.js +5 -3713
  12. package/assets/token-retriever.lambda/index.js +5 -3713
  13. package/assets/webhook-handler.lambda/index.js +5 -3713
  14. package/lib/access.js +1 -1
  15. package/lib/image-builders/api.d.ts +2 -2
  16. package/lib/image-builders/api.js +6 -6
  17. package/lib/image-builders/aws-image-builder/ami.d.ts +1 -0
  18. package/lib/image-builders/aws-image-builder/ami.js +9 -9
  19. package/lib/image-builders/aws-image-builder/builder.d.ts +1 -2
  20. package/lib/image-builders/aws-image-builder/builder.js +128 -74
  21. package/lib/image-builders/aws-image-builder/common.d.ts +1 -1
  22. package/lib/image-builders/aws-image-builder/common.js +2 -2
  23. package/lib/image-builders/aws-image-builder/container.d.ts +2 -1
  24. package/lib/image-builders/aws-image-builder/container.js +14 -14
  25. package/lib/image-builders/aws-image-builder/delete-ami.lambda.d.ts +1 -8
  26. package/lib/image-builders/aws-image-builder/delete-ami.lambda.js +5 -27
  27. package/lib/image-builders/aws-image-builder/deprecated/ami.js +1 -1
  28. package/lib/image-builders/aws-image-builder/deprecated/container.js +4 -3
  29. package/lib/image-builders/aws-image-builder/deprecated/linux-components.js +1 -1
  30. package/lib/image-builders/aws-image-builder/deprecated/windows-components.js +1 -1
  31. package/lib/{providers → image-builders}/build-image-function.d.ts +1 -1
  32. package/lib/image-builders/build-image-function.js +23 -0
  33. package/lib/image-builders/build-image.lambda.js +80 -0
  34. package/lib/image-builders/codebuild-deprecated.js +4 -3
  35. package/lib/image-builders/codebuild.js +4 -7
  36. package/lib/image-builders/common.d.ts +18 -9
  37. package/lib/image-builders/common.js +1 -11
  38. package/lib/image-builders/components.d.ts +2 -2
  39. package/lib/image-builders/components.js +2 -2
  40. package/lib/image-builders/static.js +1 -1
  41. package/lib/providers/codebuild.d.ts +9 -3
  42. package/lib/providers/codebuild.js +10 -4
  43. package/lib/providers/common.js +3 -3
  44. package/lib/providers/ec2.d.ts +9 -3
  45. package/lib/providers/ec2.js +10 -4
  46. package/lib/providers/ecs.d.ts +9 -3
  47. package/lib/providers/ecs.js +9 -3
  48. package/lib/providers/fargate.d.ts +9 -3
  49. package/lib/providers/fargate.js +10 -4
  50. package/lib/providers/lambda.d.ts +9 -3
  51. package/lib/providers/lambda.js +10 -4
  52. package/lib/runner.js +3 -3
  53. package/lib/secrets.js +1 -1
  54. package/package.json +22 -26
  55. package/assets/image-builders/aws-image-builder/reaper.lambda/index.js +0 -165
  56. package/lib/image-builders/aws-image-builder/reaper-function.d.ts +0 -13
  57. package/lib/image-builders/aws-image-builder/reaper-function.js +0 -23
  58. package/lib/image-builders/aws-image-builder/reaper.lambda.d.ts +0 -9
  59. package/lib/image-builders/aws-image-builder/reaper.lambda.js +0 -151
  60. package/lib/providers/build-image-function.js +0 -23
  61. package/lib/providers/build-image.lambda.js +0 -92
  62. /package/lib/{providers → image-builders}/build-image.lambda.d.ts +0 -0
package/.jsii CHANGED
@@ -7,7 +7,7 @@
7
7
  ]
8
8
  },
9
9
  "dependencies": {
10
- "aws-cdk-lib": "^2.77.0",
10
+ "aws-cdk-lib": "^2.110.0",
11
11
  "constructs": "^10.0.5"
12
12
  },
13
13
  "dependencyClosure": {
@@ -63,29 +63,29 @@
63
63
  }
64
64
  }
65
65
  },
66
- "@aws-cdk/asset-node-proxy-agent-v5": {
66
+ "@aws-cdk/asset-node-proxy-agent-v6": {
67
67
  "targets": {
68
68
  "dotnet": {
69
- "namespace": "Amazon.CDK.Asset.NodeProxyAgentV5",
70
- "packageId": "Amazon.CDK.Asset.NodeProxyAgentV5"
69
+ "namespace": "Amazon.CDK.Asset.NodeProxyAgentV6",
70
+ "packageId": "Amazon.CDK.Asset.NodeProxyAgentV6"
71
71
  },
72
72
  "go": {
73
73
  "moduleName": "github.com/cdklabs/awscdk-asset-node-proxy-agent-go",
74
- "packageName": "nodeproxyagentv5"
74
+ "packageName": "nodeproxyagentv6"
75
75
  },
76
76
  "java": {
77
77
  "maven": {
78
- "artifactId": "cdk-asset-node-proxy-agent-v5",
78
+ "artifactId": "cdk-asset-node-proxy-agent-v6",
79
79
  "groupId": "software.amazon.awscdk"
80
80
  },
81
- "package": "software.amazon.awscdk.cdk.asset.node.proxy.agent.v5"
81
+ "package": "software.amazon.awscdk.cdk.asset.node.proxy.agent.v6"
82
82
  },
83
83
  "js": {
84
- "npm": "@aws-cdk/asset-node-proxy-agent-v5"
84
+ "npm": "@aws-cdk/asset-node-proxy-agent-v6"
85
85
  },
86
86
  "python": {
87
- "distName": "aws-cdk.asset-node-proxy-agent-v5",
88
- "module": "aws_cdk.asset_node_proxy_agent_v5"
87
+ "distName": "aws-cdk.asset-node-proxy-agent-v6",
88
+ "module": "aws_cdk.asset_node_proxy_agent_v6"
89
89
  }
90
90
  }
91
91
  },
@@ -442,6 +442,19 @@
442
442
  }
443
443
  }
444
444
  },
445
+ "aws-cdk-lib.aws_backupgateway": {
446
+ "targets": {
447
+ "dotnet": {
448
+ "package": "Amazon.CDK.AWS.BackupGateway"
449
+ },
450
+ "java": {
451
+ "package": "services.backupgateway"
452
+ },
453
+ "python": {
454
+ "module": "aws_cdk.aws_backupgateway"
455
+ }
456
+ }
457
+ },
445
458
  "aws-cdk-lib.aws_batch": {
446
459
  "targets": {
447
460
  "dotnet": {
@@ -533,6 +546,19 @@
533
546
  }
534
547
  }
535
548
  },
549
+ "aws-cdk-lib.aws_cleanrooms": {
550
+ "targets": {
551
+ "dotnet": {
552
+ "package": "Amazon.CDK.AWS.CleanRooms"
553
+ },
554
+ "java": {
555
+ "package": "services.cleanrooms"
556
+ },
557
+ "python": {
558
+ "module": "aws_cdk.aws_cleanrooms"
559
+ }
560
+ }
561
+ },
536
562
  "aws-cdk-lib.aws_cloud9": {
537
563
  "targets": {
538
564
  "dotnet": {
@@ -1262,6 +1288,19 @@
1262
1288
  }
1263
1289
  }
1264
1290
  },
1291
+ "aws-cdk-lib.aws_entityresolution": {
1292
+ "targets": {
1293
+ "dotnet": {
1294
+ "package": "Amazon.CDK.AWS.EntityResolution"
1295
+ },
1296
+ "java": {
1297
+ "package": "services.entityresolution"
1298
+ },
1299
+ "python": {
1300
+ "module": "aws_cdk.aws_entityresolution"
1301
+ }
1302
+ }
1303
+ },
1265
1304
  "aws-cdk-lib.aws_events": {
1266
1305
  "targets": {
1267
1306
  "dotnet": {
@@ -1509,6 +1548,19 @@
1509
1548
  }
1510
1549
  }
1511
1550
  },
1551
+ "aws-cdk-lib.aws_healthimaging": {
1552
+ "targets": {
1553
+ "dotnet": {
1554
+ "package": "Amazon.CDK.AWS.HealthImaging"
1555
+ },
1556
+ "java": {
1557
+ "package": "services.healthimaging"
1558
+ },
1559
+ "python": {
1560
+ "module": "aws_cdk.aws_healthimaging"
1561
+ }
1562
+ }
1563
+ },
1512
1564
  "aws-cdk-lib.aws_healthlake": {
1513
1565
  "targets": {
1514
1566
  "dotnet": {
@@ -2159,6 +2211,19 @@
2159
2211
  }
2160
2212
  }
2161
2213
  },
2214
+ "aws-cdk-lib.aws_mediapackagev2": {
2215
+ "targets": {
2216
+ "dotnet": {
2217
+ "package": "Amazon.CDK.AWS.MediaPackageV2"
2218
+ },
2219
+ "java": {
2220
+ "package": "services.mediapackagev2"
2221
+ },
2222
+ "python": {
2223
+ "module": "aws_cdk.aws_mediapackagev2"
2224
+ }
2225
+ }
2226
+ },
2162
2227
  "aws-cdk-lib.aws_mediastore": {
2163
2228
  "targets": {
2164
2229
  "dotnet": {
@@ -2367,6 +2432,19 @@
2367
2432
  }
2368
2433
  }
2369
2434
  },
2435
+ "aws-cdk-lib.aws_osis": {
2436
+ "targets": {
2437
+ "dotnet": {
2438
+ "package": "Amazon.CDK.AWS.OSIS"
2439
+ },
2440
+ "java": {
2441
+ "package": "services.osis"
2442
+ },
2443
+ "python": {
2444
+ "module": "aws_cdk.aws_osis"
2445
+ }
2446
+ }
2447
+ },
2370
2448
  "aws-cdk-lib.aws_panorama": {
2371
2449
  "targets": {
2372
2450
  "dotnet": {
@@ -2380,6 +2458,19 @@
2380
2458
  }
2381
2459
  }
2382
2460
  },
2461
+ "aws-cdk-lib.aws_pcaconnectorad": {
2462
+ "targets": {
2463
+ "dotnet": {
2464
+ "package": "Amazon.CDK.AWS.PCAConnectorAD"
2465
+ },
2466
+ "java": {
2467
+ "package": "services.pcaconnectorad"
2468
+ },
2469
+ "python": {
2470
+ "module": "aws_cdk.aws_pcaconnectorad"
2471
+ }
2472
+ }
2473
+ },
2383
2474
  "aws-cdk-lib.aws_personalize": {
2384
2475
  "targets": {
2385
2476
  "dotnet": {
@@ -2432,6 +2523,19 @@
2432
2523
  }
2433
2524
  }
2434
2525
  },
2526
+ "aws-cdk-lib.aws_proton": {
2527
+ "targets": {
2528
+ "dotnet": {
2529
+ "package": "Amazon.CDK.AWS.Proton"
2530
+ },
2531
+ "java": {
2532
+ "package": "services.proton"
2533
+ },
2534
+ "python": {
2535
+ "module": "aws_cdk.aws_proton"
2536
+ }
2537
+ }
2538
+ },
2435
2539
  "aws-cdk-lib.aws_qldb": {
2436
2540
  "targets": {
2437
2541
  "dotnet": {
@@ -2913,6 +3017,19 @@
2913
3017
  }
2914
3018
  }
2915
3019
  },
3020
+ "aws-cdk-lib.aws_shield": {
3021
+ "targets": {
3022
+ "dotnet": {
3023
+ "package": "Amazon.CDK.AWS.Shield"
3024
+ },
3025
+ "java": {
3026
+ "package": "services.shield"
3027
+ },
3028
+ "python": {
3029
+ "module": "aws_cdk.aws_shield"
3030
+ }
3031
+ }
3032
+ },
2916
3033
  "aws-cdk-lib.aws_signer": {
2917
3034
  "targets": {
2918
3035
  "dotnet": {
@@ -3121,6 +3238,19 @@
3121
3238
  }
3122
3239
  }
3123
3240
  },
3241
+ "aws-cdk-lib.aws_verifiedpermissions": {
3242
+ "targets": {
3243
+ "dotnet": {
3244
+ "package": "Amazon.CDK.AWS.VerifiedPermissions"
3245
+ },
3246
+ "java": {
3247
+ "package": "services.verifiedpermissions"
3248
+ },
3249
+ "python": {
3250
+ "module": "aws_cdk.aws_verifiedpermissions"
3251
+ }
3252
+ }
3253
+ },
3124
3254
  "aws-cdk-lib.aws_voiceid": {
3125
3255
  "targets": {
3126
3256
  "dotnet": {
@@ -3212,6 +3342,19 @@
3212
3342
  }
3213
3343
  }
3214
3344
  },
3345
+ "aws-cdk-lib.aws_workspacesweb": {
3346
+ "targets": {
3347
+ "dotnet": {
3348
+ "package": "Amazon.CDK.AWS.WorkSpacesWeb"
3349
+ },
3350
+ "java": {
3351
+ "package": "services.workspacesweb"
3352
+ },
3353
+ "python": {
3354
+ "module": "aws_cdk.aws_workspacesweb"
3355
+ }
3356
+ }
3357
+ },
3215
3358
  "aws-cdk-lib.aws_xray": {
3216
3359
  "targets": {
3217
3360
  "dotnet": {
@@ -3437,7 +3580,7 @@
3437
3580
  },
3438
3581
  "name": "@cloudsnorkel/cdk-github-runners",
3439
3582
  "readme": {
3440
- "markdown": "# GitHub Self-Hosted Runners CDK Constructs\n\n[![NPM](https://img.shields.io/npm/v/@cloudsnorkel/cdk-github-runners?label=npm&logo=npm)][7]\n[![PyPI](https://img.shields.io/pypi/v/cloudsnorkel.cdk-github-runners?label=pypi&logo=pypi)][6]\n[![Maven Central](https://img.shields.io/maven-central/v/com.cloudsnorkel/cdk.github.runners.svg?label=Maven%20Central&logo=apachemaven)][8]\n[![Go](https://img.shields.io/github/v/tag/CloudSnorkel/cdk-github-runners?color=red&label=go&logo=go)][11]\n[![Nuget](https://img.shields.io/nuget/v/CloudSnorkel.Cdk.Github.Runners?color=red&&logo=nuget)][12]\n[![Release](https://github.com/CloudSnorkel/cdk-github-runners/actions/workflows/release.yml/badge.svg)](https://github.com/CloudSnorkel/cdk-github-runners/actions/workflows/release.yml)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/CloudSnorkel/cdk-github-runners/blob/main/LICENSE)\n\nUse this CDK construct to create ephemeral [self-hosted GitHub runners][1] on-demand inside your AWS account.\n\n* Easy to configure GitHub integration with a web-based interface\n* Customizable runners with decent defaults\n* Multiple runner configurations controlled by labels\n* Everything fully hosted in your account\n* Automatically updated build environment with latest runner version\n\nSelf-hosted runners in AWS are useful when:\n\n* You need easy access to internal resources in your actions\n* You want to pre-install some software for your actions\n* You want to provide some basic AWS API access (but [aws-actions/configure-aws-credentials][2] has more security controls)\n* You are using GitHub Enterprise Server\n\nEphemeral (or on-demand) runners are the [recommended way by GitHub][14] for auto-scaling, and they make sure all jobs run with a clean image. Runners are started on-demand. You don't pay unless a job is running.\n\n## API\n\nThe best way to browse API documentation is on [Constructs Hub][13]. It is available in all supported programming languages.\n\n## Providers\n\nA runner provider creates compute resources on-demand and uses [actions/runner][5] to start a runner.\n\n| | EC2 | CodeBuild | Fargate | ECS | Lambda |\n|------------------|-------------------|----------------------------|----------------|----------------|---------------|\n| **Time limit** | Unlimited | 8 hours | Unlimited | Unlimited | 15 minutes |\n| **vCPUs** | Unlimited | 2, 4, 8, or 72 | 0.25 to 4 | Unlimited | 1 to 6 |\n| **RAM** | Unlimited | 3gb, 7gb, 15gb, or 145gb | 512mb to 30gb | Unlimited | 128mb to 10gb |\n| **Storage** | Unlimited | 50gb to 824gb | 20gb to 200gb | Unlimited | Up to 10gb |\n| **Architecture** | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 |\n| **sudo** | ✔ | ✔ | ✔ | ✔ | ❌ |\n| **Docker** | ✔ | ✔ (Linux only) | ❌ | ✔ | ❌ |\n| **Spot pricing** | ✔ | ❌ | ✔ | ✔ | ❌ |\n| **OS** | Linux, Windows | Linux, Windows | Linux, Windows | Linux, Windows | Linux |\n\nThe best provider to use mostly depends on your current infrastructure. When in doubt, CodeBuild is always a good choice. Execution history and logs are easy to view, and it has no restrictive limits unless you need to run for more than 8 hours.\n\n* EC2 is useful when you want runners to have complete access to the host\n* ECS is useful when you want to control the infrastructure, like leaving the runner host running for faster startups\n* Lambda is useful for short jobs that can work within time, size and readonly system constraints\n\nYou can also create your own provider by implementing `IRunnerProvider`.\n\n## Installation\n\n1. Install and use the appropriate package\n <details><summary>Python</summary>\n\n ### Install\n Available on [PyPI][6].\n ```bash\n pip install cloudsnorkel.cdk-github-runners\n ```\n ### Use\n ```python\n from cloudsnorkel.cdk_github_runners import GitHubRunners\n\n GitHubRunners(self, \"runners\")\n ```\n </details>\n <details><summary>TypeScript or JavaScript</summary>\n\n ### Install\n Available on [npm][7].\n ```bash\n npm i @cloudsnorkel/cdk-github-runners\n ```\n ### Use\n ```typescript\n import { GitHubRunners } from '@cloudsnorkel/cdk-github-runners';\n\n new GitHubRunners(this, \"runners\");\n ```\n </details>\n <details><summary>Java</summary>\n\n ### Install\n Available on [Maven][8].\n ```xml\n <dependency>\n <groupId>com.cloudsnorkel</groupId>\n <artifactId>cdk.github.runners</artifactId>\n </dependency>\n ```\n ### Use\n ```java\n import com.cloudsnorkel.cdk.github.runners.GitHubRunners;\n\n GitHubRunners.Builder.create(this, \"runners\").build();\n ```\n </details>\n <details><summary>Go</summary>\n\n ### Install\n Available on [GitHub][11].\n ```bash\n go get github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners\n ```\n ### Use\n ```go\n import \"github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners\"\n\n NewGitHubRunners(this, jsii.String(\"runners\"))\n ```\n </details>\n <details><summary>.NET</summary>\n\n ### Install\n Available on [Nuget][12].\n ```bash\n dotnet add package CloudSnorkel.Cdk.Github.Runners\n ```\n ### Use\n ```csharp\n using CloudSnorkel;\n\n new GitHubRunners(this, \"runners\");\n ```\n </details>\n2. Use `GitHubRunners` construct in your code (starting with default arguments is fine)\n3. Deploy your stack\n4. Look for the status command output similar to `aws --region us-east-1 lambda invoke --function-name status-XYZ123 status.json`\n ```\n ✅ github-runners-test\n\n ✨ Deployment time: 260.01s\n\n Outputs:\n github-runners-test.runnersstatuscommand4A30F0F5 = aws --region us-east-1 lambda invoke --function-name github-runners-test-runnersstatus1A5771C0-mvttg8oPQnQS status.json\n ```\n5. Execute the status command (you may need to specify `--profile` too) and open the resulting `status.json` file\n6. Open the URL in `github.setup.url` from `status.json` or [manually setup GitHub](SETUP_GITHUB.md) integration as an app or with personal access token\n7. Run status command again to confirm `github.auth.status` and `github.webhook.status` are OK\n8. Trigger a GitHub action that has a `self-hosted` label with `runs-on: [self-hosted, linux, codebuild]` or similar\n9. If the action is not successful, see [troubleshooting](#Troubleshooting)\n\n[![Demo](demo-thumbnail.jpg)](https://youtu.be/wlyv_3V8lIw)\n\n## Customizing\n\nThe default providers configured by `GitHubRunners` are useful for testing but probably not too much for actual production work. They run in the default VPC or no VPC and have no added IAM permissions. You would usually want to configure the providers yourself.\n\nFor example:\n\n```typescript\nlet vpc: ec2.Vpc;\nlet runnerSg: ec2.SecurityGroup;\nlet dbSg: ec2.SecurityGroup;\nlet bucket: s3.Bucket;\n\n// create a custom CodeBuild provider\nconst myProvider = new CodeBuildRunnerProvider(this, 'codebuild runner', {\n labels: ['my-codebuild'],\n vpc: vpc,\n securityGroups: [runnerSg],\n});\n// grant some permissions to the provider\nbucket.grantReadWrite(myProvider);\ndbSg.connections.allowFrom(runnerSg, ec2.Port.tcp(3306), 'allow runners to connect to MySQL database');\n\n// create the runner infrastructure\nnew GitHubRunners(this, 'runners', {\n providers: [myProvider],\n});\n```\n\nAnother way to customize runners is by modifying the image used to spin them up. The image contains the [runner][5], any required dependencies, and integration code with the provider. You may choose to customize this image by adding more packages, for example.\n\n```typescript\nconst myBuilder = CodeBuildRunnerProvider.imageBuilder(this, 'image builder', {\n dockerfilePath: FargateRunner.LINUX_X64_DOCKERFILE_PATH,\n runnerVersion: RunnerVersion.specific('2.291.0'),\n rebuildInterval: Duration.days(14),\n});\nmyBuilder.addComponent(\n RunnerImageComponent.custom({ commands: ['apt install -y nginx xz-utils'] })\n);\n\nconst myProvider = new FargateRunnerProvider(this, 'fargate runner', {\n labels: ['customized-fargate'],\n vpc: vpc,\n securityGroups: [runnerSg],\n imageBuilder: myBuilder,\n});\n\n// create the runner infrastructure\nnew GitHubRunners(this, 'runners', {\n providers: [myProvider],\n});\n```\n\nYour workflow will then look like:\n\n```yaml\nname: self-hosted example\non: push\njobs:\n self-hosted:\n runs-on: [self-hosted, customized-fargate]\n steps:\n - run: echo hello world\n```\n\nWindows images can also be customized the same way.\n\n```typescript\nconst myWindowsBuilder = FargateRunnerProvider.imageBuilder(this, 'Windows image builder', {\n architecture: Architecture.X86_64,\n os: Os.WINDOWS,\n runnerVersion: RunnerVersion.specific('2.291.0'),\n rebuildInterval: Duration.days(14),\n});\nmyWindowsBuilder.addComponent(\n RunnerImageComponent.custom({\n name: 'Ninja',\n commands: [\n 'Invoke-WebRequest -UseBasicParsing -Uri \"https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip\" -OutFile ninja.zip',\n 'Expand-Archive ninja.zip -DestinationPath C:\\\\actions',\n 'del ninja.zip',\n ],\n })\n);\n\nconst myProvider = new FargateRunnerProvider(this, 'fargate runner', {\n labels: ['customized-windows-fargate'],\n vpc: vpc,\n securityGroups: [runnerSg],\n imageBuilder: myWindowsBuilder,\n});\n\nnew GitHubRunners(this, 'runners', {\n providers: [myProvider],\n});\n```\n\nThe runner OS and architecture is determined by the image it is set to use. For example, to create a Fargate runner provider for ARM64 set the `architecture` property for the image builder to `Architecture.ARM64` in the image builder properties.\n\n```typescript\nnew GitHubRunners(this, 'runners', {\n providers: [\n new FargateRunnerProvider(this, 'fargate runner', {\n labels: ['arm64', 'fargate'],\n imageBuilder: FargateRunnerProvider.imageBuilder(this, 'image builder', {\n architecture: Architecture.ARM64,\n os: Os.LINUX_UBUNTU,\n }),\n }),\n ],\n});\n```\n\n## Architecture\n\n![Architecture diagram](architecture.svg)\n\n## Troubleshooting\n\nRunners are started in response to a webhook coming in from GitHub. If there are any issues starting the runner like missing capacity or transient API issues, the provider will keep retrying for 24 hours. Configuration issue related errors like pointing to a missing AMI will not be retried. GitHub itself will cancel the job if it can't find a runner for 24 hours. If your jobs don't start, follow the steps below to examine all parts of this workflow.\n\n1. Always start with the status function, make sure no errors are reported, and confirm all status codes are OK\n2. Make sure `runs-on` in the workflow matches the expected labels set in the runner provider\n3. Diagnose relevant executions of the orchestrator step function by visiting the URL in `troubleshooting.stepFunctionUrl` from `status.json`\n 1. If the execution failed, check your runner provider configuration for errors\n 2. If the execution is still running for a long time, check the execution events to see why runner starting is being retried\n 3. If there are no relevant executions, move to the next step\n4. Confirm the webhook Lambda was called by visiting the URL in `troubleshooting.webhookHandlerUrl` from `status.json`\n 1. If it's not called or logs errors, confirm the webhook settings on the GitHub side\n 2. If you see too many errors, make sure you're only sending `workflow_job` events\n5. When using GitHub app, make sure there are active installations in `github.auth.app.installations`\n\nAll logs are saved in CloudWatch.\n* Log group names can be found in `status.json` for each provider, image builder, and other parts of the system\n* Some useful Logs Insights queries can be enabled with `GitHubRunners.createLogsInsightsQueries()`\n\nTo get `status.json`, check out the CloudFormation stack output for a command that generates it. The command looks like:\n\n```\naws --region us-east-1 lambda invoke --function-name status-XYZ123 status.json\n```\n\n## Monitoring\n\nThere are two important ways to monitor your runners:\n\n1. Make sure runners don't fail to start. When that happens, jobs may sit and wait. Use `GitHubRunners.metricFailed()` to get a metric for the number of failed runner starts. You should use this metric to trigger an alarm.\n2. Make sure runner images don't fail to build. Failed runner image builds mean you will get stuck with out-of-date software on your runners. It may lead to security vulnerabilities, or it may lead to slower runner start-ups as the runner software itself needs to be updated. Use `GitHubRunners.failedImageBuildsTopic()` to get SNS topic that gets notified of failed runner image builds. You should subscribe to this topic.\n\nOther useful metrics to track:\n\n1. Use `GitHubRunners.metricJobCompleted()` to get a metric for the number of completed jobs broken down by labels and job success.\n2. Use `GitHubRunners.metricTime()` to get a metric for the total time a runner is running. This includes the overhead of starting the runner.\n\n## Other Options\n\n1. [philips-labs/terraform-aws-github-runner][3] if you're using Terraform\n2. [actions/actions-runner-controller][4] if you're using Kubernetes\n\n\n[1]: https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners\n[2]: https://github.com/marketplace/actions/configure-aws-credentials-for-github-actions\n[3]: https://github.com/philips-labs/terraform-aws-github-runner\n[4]: https://github.com/actions/actions-runner-controller\n[5]: https://github.com/actions/runner\n[6]: https://pypi.org/project/cloudsnorkel.cdk-github-runners\n[7]: https://www.npmjs.com/package/@cloudsnorkel/cdk-github-runners\n[8]: https://central.sonatype.com/artifact/com.cloudsnorkel/cdk.github.runners/\n[9]: https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps\n[10]: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token\n[11]: https://pkg.go.dev/github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners\n[12]: https://www.nuget.org/packages/CloudSnorkel.Cdk.Github.Runners/\n[13]: https://constructs.dev/packages/@cloudsnorkel/cdk-github-runners/\n[14]: https://docs.github.com/en/actions/hosting-your-own-runners/autoscaling-with-self-hosted-runners#using-ephemeral-runners-for-autoscaling\n"
3583
+ "markdown": "# GitHub Self-Hosted Runners CDK Constructs\n\n[![NPM](https://img.shields.io/npm/v/@cloudsnorkel/cdk-github-runners?label=npm&logo=npm)][7]\n[![PyPI](https://img.shields.io/pypi/v/cloudsnorkel.cdk-github-runners?label=pypi&logo=pypi)][6]\n[![Maven Central](https://img.shields.io/maven-central/v/com.cloudsnorkel/cdk.github.runners.svg?label=Maven%20Central&logo=apachemaven)][8]\n[![Go](https://img.shields.io/github/v/tag/CloudSnorkel/cdk-github-runners?color=red&label=go&logo=go)][11]\n[![Nuget](https://img.shields.io/nuget/v/CloudSnorkel.Cdk.Github.Runners?color=red&&logo=nuget)][12]\n[![Release](https://github.com/CloudSnorkel/cdk-github-runners/actions/workflows/release.yml/badge.svg)](https://github.com/CloudSnorkel/cdk-github-runners/actions/workflows/release.yml)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/CloudSnorkel/cdk-github-runners/blob/main/LICENSE)\n\nUse this CDK construct to create ephemeral [self-hosted GitHub runners][1] on-demand inside your AWS account.\n\n* Easy to configure GitHub integration with a web-based interface\n* Customizable runners with decent defaults\n* Multiple runner configurations controlled by labels\n* Everything fully hosted in your account\n* Automatically updated build environment with latest runner version\n\nSelf-hosted runners in AWS are useful when:\n\n* You need easy access to internal resources in your actions\n* You want to pre-install some software for your actions\n* You want to provide some basic AWS API access (but [aws-actions/configure-aws-credentials][2] has more security controls)\n* You are using GitHub Enterprise Server\n\nEphemeral (or on-demand) runners are the [recommended way by GitHub][14] for auto-scaling, and they make sure all jobs run with a clean image. Runners are started on-demand. You don't pay unless a job is running.\n\n## API\n\nThe best way to browse API documentation is on [Constructs Hub][13]. It is available in all supported programming languages.\n\n## Providers\n\nA runner provider creates compute resources on-demand and uses [actions/runner][5] to start a runner.\n\n| | EC2 | CodeBuild | Fargate | ECS | Lambda |\n|------------------|-------------------|----------------------------|----------------|----------------|---------------|\n| **Time limit** | Unlimited | 8 hours | Unlimited | Unlimited | 15 minutes |\n| **vCPUs** | Unlimited | 2, 4, 8, or 72 | 0.25 to 4 | Unlimited | 1 to 6 |\n| **RAM** | Unlimited | 3gb, 7gb, 15gb, or 145gb | 512mb to 30gb | Unlimited | 128mb to 10gb |\n| **Storage** | Unlimited | 50gb to 824gb | 20gb to 200gb | Unlimited | Up to 10gb |\n| **Architecture** | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 |\n| **sudo** | ✔ | ✔ | ✔ | ✔ | ❌ |\n| **Docker** | ✔ | ✔ (Linux only) | ❌ | ✔ | ❌ |\n| **Spot pricing** | ✔ | ❌ | ✔ | ✔ | ❌ |\n| **OS** | Linux, Windows | Linux, Windows | Linux, Windows | Linux, Windows | Linux |\n\nThe best provider to use mostly depends on your current infrastructure. When in doubt, CodeBuild is always a good choice. Execution history and logs are easy to view, and it has no restrictive limits unless you need to run for more than 8 hours.\n\n* EC2 is useful when you want runners to have complete access to the host\n* ECS is useful when you want to control the infrastructure, like leaving the runner host running for faster startups\n* Lambda is useful for short jobs that can work within time, size and readonly system constraints\n\nYou can also create your own provider by implementing `IRunnerProvider`.\n\n## Installation\n\n1. Install and use the appropriate package\n <details><summary>Python</summary>\n\n ### Install\n Available on [PyPI][6].\n ```bash\n pip install cloudsnorkel.cdk-github-runners\n ```\n ### Use\n ```python\n from cloudsnorkel.cdk_github_runners import GitHubRunners\n\n GitHubRunners(self, \"runners\")\n ```\n </details>\n <details><summary>TypeScript or JavaScript</summary>\n\n ### Install\n Available on [npm][7].\n ```bash\n npm i @cloudsnorkel/cdk-github-runners\n ```\n ### Use\n ```typescript\n import { GitHubRunners } from '@cloudsnorkel/cdk-github-runners';\n\n new GitHubRunners(this, \"runners\");\n ```\n </details>\n <details><summary>Java</summary>\n\n ### Install\n Available on [Maven][8].\n ```xml\n <dependency>\n <groupId>com.cloudsnorkel</groupId>\n <artifactId>cdk.github.runners</artifactId>\n </dependency>\n ```\n ### Use\n ```java\n import com.cloudsnorkel.cdk.github.runners.GitHubRunners;\n\n GitHubRunners.Builder.create(this, \"runners\").build();\n ```\n </details>\n <details><summary>Go</summary>\n\n ### Install\n Available on [GitHub][11].\n ```bash\n go get github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners\n ```\n ### Use\n ```go\n import \"github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners\"\n\n NewGitHubRunners(this, jsii.String(\"runners\"))\n ```\n </details>\n <details><summary>.NET</summary>\n\n ### Install\n Available on [Nuget][12].\n ```bash\n dotnet add package CloudSnorkel.Cdk.Github.Runners\n ```\n ### Use\n ```csharp\n using CloudSnorkel;\n\n new GitHubRunners(this, \"runners\");\n ```\n </details>\n2. Use `GitHubRunners` construct in your code (starting with default arguments is fine)\n3. Deploy your stack\n4. Look for the status command output similar to `aws --region us-east-1 lambda invoke --function-name status-XYZ123 status.json`\n ```\n ✅ github-runners-test\n\n ✨ Deployment time: 260.01s\n\n Outputs:\n github-runners-test.runnersstatuscommand4A30F0F5 = aws --region us-east-1 lambda invoke --function-name github-runners-test-runnersstatus1A5771C0-mvttg8oPQnQS status.json\n ```\n5. Execute the status command (you may need to specify `--profile` too) and open the resulting `status.json` file\n6. Open the URL in `github.setup.url` from `status.json` or [manually setup GitHub](SETUP_GITHUB.md) integration as an app or with personal access token\n7. Run status command again to confirm `github.auth.status` and `github.webhook.status` are OK\n8. Trigger a GitHub action that has a `self-hosted` label with `runs-on: [self-hosted, linux, codebuild]` or similar\n9. If the action is not successful, see [troubleshooting](#Troubleshooting)\n\n[![Demo](demo-thumbnail.jpg)](https://youtu.be/wlyv_3V8lIw)\n\n## Customizing\n\nThe default providers configured by `GitHubRunners` are useful for testing but probably not too much for actual production work. They run in the default VPC or no VPC and have no added IAM permissions. You would usually want to configure the providers yourself.\n\nFor example:\n\n```typescript\nlet vpc: ec2.Vpc;\nlet runnerSg: ec2.SecurityGroup;\nlet dbSg: ec2.SecurityGroup;\nlet bucket: s3.Bucket;\n\n// create a custom CodeBuild provider\nconst myProvider = new CodeBuildRunnerProvider(this, 'codebuild runner', {\n labels: ['my-codebuild'],\n vpc: vpc,\n securityGroups: [runnerSg],\n});\n// grant some permissions to the provider\nbucket.grantReadWrite(myProvider);\ndbSg.connections.allowFrom(runnerSg, ec2.Port.tcp(3306), 'allow runners to connect to MySQL database');\n\n// create the runner infrastructure\nnew GitHubRunners(this, 'runners', {\n providers: [myProvider],\n});\n```\n\nAnother way to customize runners is by modifying the image used to spin them up. The image contains the [runner][5], any required dependencies, and integration code with the provider. You may choose to customize this image by adding more packages, for example.\n\n```typescript\nconst myBuilder = FargateRunnerProvider.imageBuilder(this, 'image builder');\nmyBuilder.addComponent(\n RunnerImageComponent.custom({ commands: ['apt install -y nginx xz-utils'] }),\n);\n\nconst myProvider = new FargateRunnerProvider(this, 'fargate runner', {\n labels: ['customized-fargate'],\n imageBuilder: myBuilder,\n});\n\n// create the runner infrastructure\nnew GitHubRunners(this, 'runners', {\n providers: [myProvider],\n});\n```\n\nYour workflow will then look like:\n\n```yaml\nname: self-hosted example\non: push\njobs:\n self-hosted:\n runs-on: [self-hosted, customized-fargate]\n steps:\n - run: echo hello world\n```\n\nWindows images can also be customized the same way.\n\n```typescript\nconst myWindowsBuilder = FargateRunnerProvider.imageBuilder(this, 'Windows image builder', {\n architecture: Architecture.X86_64,\n os: Os.WINDOWS,\n});\nmyWindowsBuilder.addComponent(\n RunnerImageComponent.custom({\n name: 'Ninja',\n commands: [\n 'Invoke-WebRequest -UseBasicParsing -Uri \"https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip\" -OutFile ninja.zip',\n 'Expand-Archive ninja.zip -DestinationPath C:\\\\actions',\n 'del ninja.zip',\n ],\n }),\n);\n\nconst myProvider = new FargateRunnerProvider(this, 'fargate runner', {\n labels: ['customized-windows-fargate'],\n imageBuilder: myWindowsBuilder,\n});\n\nnew GitHubRunners(this, 'runners', {\n providers: [myProvider],\n});\n```\n\nThe runner OS and architecture is determined by the image it is set to use. For example, to create a Fargate runner provider for ARM64 set the `architecture` property for the image builder to `Architecture.ARM64` in the image builder properties.\n\n```typescript\nnew GitHubRunners(this, 'runners', {\n providers: [\n new FargateRunnerProvider(this, 'fargate runner', {\n labels: ['arm64', 'fargate'],\n imageBuilder: FargateRunnerProvider.imageBuilder(this, 'image builder', {\n architecture: Architecture.ARM64,\n os: Os.LINUX_UBUNTU,\n }),\n }),\n ],\n});\n```\n\n## Architecture\n\n![Architecture diagram](architecture.svg)\n\n## Troubleshooting\n\nRunners are started in response to a webhook coming in from GitHub. If there are any issues starting the runner like missing capacity or transient API issues, the provider will keep retrying for 24 hours. Configuration issue related errors like pointing to a missing AMI will not be retried. GitHub itself will cancel the job if it can't find a runner for 24 hours. If your jobs don't start, follow the steps below to examine all parts of this workflow.\n\n1. Always start with the status function, make sure no errors are reported, and confirm all status codes are OK\n2. Make sure `runs-on` in the workflow matches the expected labels set in the runner provider\n3. Diagnose relevant executions of the orchestrator step function by visiting the URL in `troubleshooting.stepFunctionUrl` from `status.json`\n 1. If the execution failed, check your runner provider configuration for errors\n 2. If the execution is still running for a long time, check the execution events to see why runner starting is being retried\n 3. If there are no relevant executions, move to the next step\n4. Confirm the webhook Lambda was called by visiting the URL in `troubleshooting.webhookHandlerUrl` from `status.json`\n 1. If it's not called or logs errors, confirm the webhook settings on the GitHub side\n 2. If you see too many errors, make sure you're only sending `workflow_job` events\n5. When using GitHub app, make sure there are active installations in `github.auth.app.installations`\n\nAll logs are saved in CloudWatch.\n* Log group names can be found in `status.json` for each provider, image builder, and other parts of the system\n* Some useful Logs Insights queries can be enabled with `GitHubRunners.createLogsInsightsQueries()`\n\nTo get `status.json`, check out the CloudFormation stack output for a command that generates it. The command looks like:\n\n```\naws --region us-east-1 lambda invoke --function-name status-XYZ123 status.json\n```\n\n## Monitoring\n\nThere are two important ways to monitor your runners:\n\n1. Make sure runners don't fail to start. When that happens, jobs may sit and wait. Use `GitHubRunners.metricFailed()` to get a metric for the number of failed runner starts. You should use this metric to trigger an alarm.\n2. Make sure runner images don't fail to build. Failed runner image builds mean you will get stuck with out-of-date software on your runners. It may lead to security vulnerabilities, or it may lead to slower runner start-ups as the runner software itself needs to be updated. Use `GitHubRunners.failedImageBuildsTopic()` to get SNS topic that gets notified of failed runner image builds. You should subscribe to this topic.\n\nOther useful metrics to track:\n\n1. Use `GitHubRunners.metricJobCompleted()` to get a metric for the number of completed jobs broken down by labels and job success.\n2. Use `GitHubRunners.metricTime()` to get a metric for the total time a runner is running. This includes the overhead of starting the runner.\n\n## Other Options\n\n1. [philips-labs/terraform-aws-github-runner][3] if you're using Terraform\n2. [actions/actions-runner-controller][4] if you're using Kubernetes\n\n\n[1]: https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners\n[2]: https://github.com/marketplace/actions/configure-aws-credentials-for-github-actions\n[3]: https://github.com/philips-labs/terraform-aws-github-runner\n[4]: https://github.com/actions/actions-runner-controller\n[5]: https://github.com/actions/runner\n[6]: https://pypi.org/project/cloudsnorkel.cdk-github-runners\n[7]: https://www.npmjs.com/package/@cloudsnorkel/cdk-github-runners\n[8]: https://central.sonatype.com/artifact/com.cloudsnorkel/cdk.github.runners/\n[9]: https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps\n[10]: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token\n[11]: https://pkg.go.dev/github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners\n[12]: https://www.nuget.org/packages/CloudSnorkel.Cdk.Github.Runners/\n[13]: https://constructs.dev/packages/@cloudsnorkel/cdk-github-runners/\n[14]: https://docs.github.com/en/actions/hosting-your-own-runners/autoscaling-with-self-hosted-runners#using-ephemeral-runners-for-autoscaling\n"
3441
3584
  },
3442
3585
  "repository": {
3443
3586
  "type": "git",
@@ -4392,7 +4535,7 @@
4392
4535
  "kind": "interface",
4393
4536
  "locationInModule": {
4394
4537
  "filename": "src/image-builders/aws-image-builder/builder.ts",
4395
- "line": 33
4538
+ "line": 31
4396
4539
  },
4397
4540
  "name": "AwsImageBuilderRunnerImageBuilderProps",
4398
4541
  "properties": [
@@ -4406,7 +4549,7 @@
4406
4549
  "immutable": true,
4407
4550
  "locationInModule": {
4408
4551
  "filename": "src/image-builders/aws-image-builder/builder.ts",
4409
- "line": 39
4552
+ "line": 37
4410
4553
  },
4411
4554
  "name": "instanceType",
4412
4555
  "optional": true,
@@ -4473,7 +4616,7 @@
4473
4616
  },
4474
4617
  "locationInModule": {
4475
4618
  "filename": "src/image-builders/codebuild-deprecated.ts",
4476
- "line": 288
4619
+ "line": 289
4477
4620
  },
4478
4621
  "name": "addExtraCertificates",
4479
4622
  "parameters": [
@@ -4495,7 +4638,7 @@
4495
4638
  },
4496
4639
  "locationInModule": {
4497
4640
  "filename": "src/image-builders/codebuild-deprecated.ts",
4498
- "line": 222
4641
+ "line": 223
4499
4642
  },
4500
4643
  "name": "addFiles",
4501
4644
  "parameters": [
@@ -4526,7 +4669,7 @@
4526
4669
  },
4527
4670
  "locationInModule": {
4528
4671
  "filename": "src/image-builders/codebuild-deprecated.ts",
4529
- "line": 274
4672
+ "line": 275
4530
4673
  },
4531
4674
  "name": "addPolicyStatement",
4532
4675
  "parameters": [
@@ -4548,7 +4691,7 @@
4548
4691
  },
4549
4692
  "locationInModule": {
4550
4693
  "filename": "src/image-builders/codebuild-deprecated.ts",
4551
- "line": 249
4694
+ "line": 250
4552
4695
  },
4553
4696
  "name": "addPostBuildCommand",
4554
4697
  "parameters": [
@@ -4570,7 +4713,7 @@
4570
4713
  },
4571
4714
  "locationInModule": {
4572
4715
  "filename": "src/image-builders/codebuild-deprecated.ts",
4573
- "line": 237
4716
+ "line": 238
4574
4717
  },
4575
4718
  "name": "addPreBuildCommand",
4576
4719
  "parameters": [
@@ -4593,7 +4736,7 @@
4593
4736
  },
4594
4737
  "locationInModule": {
4595
4738
  "filename": "src/image-builders/codebuild-deprecated.ts",
4596
- "line": 529
4739
+ "line": 530
4597
4740
  },
4598
4741
  "name": "bindAmi",
4599
4742
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder",
@@ -4610,7 +4753,7 @@
4610
4753
  },
4611
4754
  "locationInModule": {
4612
4755
  "filename": "src/image-builders/codebuild-deprecated.ts",
4613
- "line": 298
4756
+ "line": 299
4614
4757
  },
4615
4758
  "name": "bindDockerImage",
4616
4759
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder",
@@ -4628,7 +4771,7 @@
4628
4771
  },
4629
4772
  "locationInModule": {
4630
4773
  "filename": "src/image-builders/codebuild-deprecated.ts",
4631
- "line": 262
4774
+ "line": 263
4632
4775
  },
4633
4776
  "name": "setBuildArg",
4634
4777
  "parameters": [
@@ -4662,7 +4805,7 @@
4662
4805
  "immutable": true,
4663
4806
  "locationInModule": {
4664
4807
  "filename": "src/image-builders/codebuild-deprecated.ts",
4665
- "line": 523
4808
+ "line": 524
4666
4809
  },
4667
4810
  "name": "connections",
4668
4811
  "type": {
@@ -4957,7 +5100,7 @@
4957
5100
  },
4958
5101
  "locationInModule": {
4959
5102
  "filename": "src/providers/codebuild.ts",
4960
- "line": 220
5103
+ "line": 226
4961
5104
  },
4962
5105
  "parameters": [
4963
5106
  {
@@ -4984,7 +5127,7 @@
4984
5127
  "kind": "class",
4985
5128
  "locationInModule": {
4986
5129
  "filename": "src/providers/codebuild.ts",
4987
- "line": 426
5130
+ "line": 432
4988
5131
  },
4989
5132
  "name": "CodeBuildRunner",
4990
5133
  "symbolId": "src/providers/codebuild:CodeBuildRunner"
@@ -5078,7 +5221,7 @@
5078
5221
  },
5079
5222
  "locationInModule": {
5080
5223
  "filename": "src/providers/codebuild.ts",
5081
- "line": 220
5224
+ "line": 226
5082
5225
  },
5083
5226
  "parameters": [
5084
5227
  {
@@ -5113,13 +5256,13 @@
5113
5256
  "methods": [
5114
5257
  {
5115
5258
  "docs": {
5116
- "remarks": "Included components:\n * `RunnerImageComponent.requiredPackages()`\n * `RunnerImageComponent.runnerUser()`\n * `RunnerImageComponent.git()`\n * `RunnerImageComponent.githubCli()`\n * `RunnerImageComponent.awsCli()`\n * `RunnerImageComponent.docker()`\n * `RunnerImageComponent.githubRunner()`",
5259
+ "remarks": "You can customize the OS, architecture, VPC, subnet, security groups, etc. by passing in props.\n\nYou can add components to the image builder by calling `imageBuilder.addComponent()`.\n\nThe default OS is Ubuntu running on x64 architecture.\n\nIncluded components:\n * `RunnerImageComponent.requiredPackages()`\n * `RunnerImageComponent.runnerUser()`\n * `RunnerImageComponent.git()`\n * `RunnerImageComponent.githubCli()`\n * `RunnerImageComponent.awsCli()`\n * `RunnerImageComponent.docker()`\n * `RunnerImageComponent.githubRunner()`",
5117
5260
  "stability": "experimental",
5118
- "summary": "Create new image builder that builds CodeBuild specific runner images using Ubuntu."
5261
+ "summary": "Create new image builder that builds CodeBuild specific runner images."
5119
5262
  },
5120
5263
  "locationInModule": {
5121
5264
  "filename": "src/providers/codebuild.ts",
5122
- "line": 167
5265
+ "line": 173
5123
5266
  },
5124
5267
  "name": "imageBuilder",
5125
5268
  "parameters": [
@@ -5145,7 +5288,7 @@
5145
5288
  ],
5146
5289
  "returns": {
5147
5290
  "type": {
5148
- "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImageBuilder"
5291
+ "fqn": "@cloudsnorkel/cdk-github-runners.IConfigurableRunnerImageBuilder"
5149
5292
  }
5150
5293
  },
5151
5294
  "static": true
@@ -5158,7 +5301,7 @@
5158
5301
  },
5159
5302
  "locationInModule": {
5160
5303
  "filename": "src/providers/codebuild.ts",
5161
- "line": 353
5304
+ "line": 359
5162
5305
  },
5163
5306
  "name": "getStepFunctionTask",
5164
5307
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -5187,7 +5330,7 @@
5187
5330
  },
5188
5331
  "locationInModule": {
5189
5332
  "filename": "src/providers/codebuild.ts",
5190
- "line": 394
5333
+ "line": 400
5191
5334
  },
5192
5335
  "name": "grantStateMachine",
5193
5336
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -5256,7 +5399,7 @@
5256
5399
  },
5257
5400
  "locationInModule": {
5258
5401
  "filename": "src/providers/codebuild.ts",
5259
- "line": 397
5402
+ "line": 403
5260
5403
  },
5261
5404
  "name": "status",
5262
5405
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -5323,7 +5466,7 @@
5323
5466
  "immutable": true,
5324
5467
  "locationInModule": {
5325
5468
  "filename": "src/providers/codebuild.ts",
5326
- "line": 418
5469
+ "line": 424
5327
5470
  },
5328
5471
  "name": "connections",
5329
5472
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -5339,7 +5482,7 @@
5339
5482
  "immutable": true,
5340
5483
  "locationInModule": {
5341
5484
  "filename": "src/providers/codebuild.ts",
5342
- "line": 197
5485
+ "line": 203
5343
5486
  },
5344
5487
  "name": "grantPrincipal",
5345
5488
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -5356,7 +5499,7 @@
5356
5499
  "immutable": true,
5357
5500
  "locationInModule": {
5358
5501
  "filename": "src/providers/codebuild.ts",
5359
- "line": 202
5502
+ "line": 208
5360
5503
  },
5361
5504
  "name": "image",
5362
5505
  "type": {
@@ -5371,7 +5514,7 @@
5371
5514
  "immutable": true,
5372
5515
  "locationInModule": {
5373
5516
  "filename": "src/providers/codebuild.ts",
5374
- "line": 192
5517
+ "line": 198
5375
5518
  },
5376
5519
  "name": "labels",
5377
5520
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -5393,7 +5536,7 @@
5393
5536
  "immutable": true,
5394
5537
  "locationInModule": {
5395
5538
  "filename": "src/providers/codebuild.ts",
5396
- "line": 209
5539
+ "line": 215
5397
5540
  },
5398
5541
  "name": "logGroup",
5399
5542
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -5409,7 +5552,7 @@
5409
5552
  "immutable": true,
5410
5553
  "locationInModule": {
5411
5554
  "filename": "src/providers/codebuild.ts",
5412
- "line": 187
5555
+ "line": 193
5413
5556
  },
5414
5557
  "name": "project",
5415
5558
  "type": {
@@ -5424,7 +5567,7 @@
5424
5567
  "immutable": true,
5425
5568
  "locationInModule": {
5426
5569
  "filename": "src/providers/codebuild.ts",
5427
- "line": 211
5570
+ "line": 217
5428
5571
  },
5429
5572
  "name": "retryableErrors",
5430
5573
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -5713,7 +5856,7 @@
5713
5856
  },
5714
5857
  "locationInModule": {
5715
5858
  "filename": "src/image-builders/aws-image-builder/deprecated/container.ts",
5716
- "line": 218
5859
+ "line": 219
5717
5860
  },
5718
5861
  "name": "addComponent",
5719
5862
  "parameters": [
@@ -5733,7 +5876,7 @@
5733
5876
  },
5734
5877
  "locationInModule": {
5735
5878
  "filename": "src/image-builders/aws-image-builder/deprecated/container.ts",
5736
- "line": 235
5879
+ "line": 236
5737
5880
  },
5738
5881
  "name": "addExtraCertificates",
5739
5882
  "parameters": [
@@ -5756,7 +5899,7 @@
5756
5899
  },
5757
5900
  "locationInModule": {
5758
5901
  "filename": "src/image-builders/aws-image-builder/deprecated/container.ts",
5759
- "line": 340
5902
+ "line": 341
5760
5903
  },
5761
5904
  "name": "bindAmi",
5762
5905
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder",
@@ -5773,7 +5916,7 @@
5773
5916
  },
5774
5917
  "locationInModule": {
5775
5918
  "filename": "src/image-builders/aws-image-builder/deprecated/container.ts",
5776
- "line": 248
5919
+ "line": 249
5777
5920
  },
5778
5921
  "name": "bindDockerImage",
5779
5922
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder",
@@ -5944,7 +6087,7 @@
5944
6087
  },
5945
6088
  "locationInModule": {
5946
6089
  "filename": "src/image-builders/aws-image-builder/deprecated/container.ts",
5947
- "line": 204
6090
+ "line": 205
5948
6091
  },
5949
6092
  "name": "prependComponent",
5950
6093
  "parameters": [
@@ -6343,7 +6486,7 @@
6343
6486
  },
6344
6487
  "locationInModule": {
6345
6488
  "filename": "src/providers/ec2.ts",
6346
- "line": 340
6489
+ "line": 346
6347
6490
  },
6348
6491
  "parameters": [
6349
6492
  {
@@ -6370,7 +6513,7 @@
6370
6513
  "kind": "class",
6371
6514
  "locationInModule": {
6372
6515
  "filename": "src/providers/ec2.ts",
6373
- "line": 553
6516
+ "line": 559
6374
6517
  },
6375
6518
  "name": "Ec2Runner",
6376
6519
  "symbolId": "src/providers/ec2:Ec2Runner"
@@ -6390,7 +6533,7 @@
6390
6533
  },
6391
6534
  "locationInModule": {
6392
6535
  "filename": "src/providers/ec2.ts",
6393
- "line": 340
6536
+ "line": 346
6394
6537
  },
6395
6538
  "parameters": [
6396
6539
  {
@@ -6425,13 +6568,13 @@
6425
6568
  "methods": [
6426
6569
  {
6427
6570
  "docs": {
6428
- "remarks": "Included components:\n * `RunnerImageComponent.requiredPackages()`\n * `RunnerImageComponent.runnerUser()`\n * `RunnerImageComponent.git()`\n * `RunnerImageComponent.githubCli()`\n * `RunnerImageComponent.awsCli()`\n * `RunnerImageComponent.docker()`\n * `RunnerImageComponent.githubRunner()`",
6571
+ "remarks": "You can customize the OS, architecture, VPC, subnet, security groups, etc. by passing in props.\n\nYou can add components to the image builder by calling `imageBuilder.addComponent()`.\n\nThe default OS is Ubuntu running on x64 architecture.\n\nIncluded components:\n * `RunnerImageComponent.requiredPackages()`\n * `RunnerImageComponent.runnerUser()`\n * `RunnerImageComponent.git()`\n * `RunnerImageComponent.githubCli()`\n * `RunnerImageComponent.awsCli()`\n * `RunnerImageComponent.docker()`\n * `RunnerImageComponent.githubRunner()`",
6429
6572
  "stability": "experimental",
6430
- "summary": "Create new image builder that builds EC2 specific runner images using Ubuntu."
6573
+ "summary": "Create new image builder that builds EC2 specific runner images."
6431
6574
  },
6432
6575
  "locationInModule": {
6433
6576
  "filename": "src/providers/ec2.ts",
6434
- "line": 289
6577
+ "line": 295
6435
6578
  },
6436
6579
  "name": "imageBuilder",
6437
6580
  "parameters": [
@@ -6457,7 +6600,7 @@
6457
6600
  ],
6458
6601
  "returns": {
6459
6602
  "type": {
6460
- "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImageBuilder"
6603
+ "fqn": "@cloudsnorkel/cdk-github-runners.IConfigurableRunnerImageBuilder"
6461
6604
  }
6462
6605
  },
6463
6606
  "static": true
@@ -6470,7 +6613,7 @@
6470
6613
  },
6471
6614
  "locationInModule": {
6472
6615
  "filename": "src/providers/ec2.ts",
6473
- "line": 395
6616
+ "line": 401
6474
6617
  },
6475
6618
  "name": "getStepFunctionTask",
6476
6619
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -6499,7 +6642,7 @@
6499
6642
  },
6500
6643
  "locationInModule": {
6501
6644
  "filename": "src/providers/ec2.ts",
6502
- "line": 493
6645
+ "line": 499
6503
6646
  },
6504
6647
  "name": "grantStateMachine",
6505
6648
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -6568,7 +6711,7 @@
6568
6711
  },
6569
6712
  "locationInModule": {
6570
6713
  "filename": "src/providers/ec2.ts",
6571
- "line": 523
6714
+ "line": 529
6572
6715
  },
6573
6716
  "name": "status",
6574
6717
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -6597,7 +6740,7 @@
6597
6740
  "immutable": true,
6598
6741
  "locationInModule": {
6599
6742
  "filename": "src/providers/ec2.ts",
6600
- "line": 545
6743
+ "line": 551
6601
6744
  },
6602
6745
  "name": "connections",
6603
6746
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -6613,7 +6756,7 @@
6613
6756
  "immutable": true,
6614
6757
  "locationInModule": {
6615
6758
  "filename": "src/providers/ec2.ts",
6616
- "line": 315
6759
+ "line": 321
6617
6760
  },
6618
6761
  "name": "grantPrincipal",
6619
6762
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -6629,7 +6772,7 @@
6629
6772
  "immutable": true,
6630
6773
  "locationInModule": {
6631
6774
  "filename": "src/providers/ec2.ts",
6632
- "line": 310
6775
+ "line": 316
6633
6776
  },
6634
6777
  "name": "labels",
6635
6778
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -6651,7 +6794,7 @@
6651
6794
  "immutable": true,
6652
6795
  "locationInModule": {
6653
6796
  "filename": "src/providers/ec2.ts",
6654
- "line": 322
6797
+ "line": 328
6655
6798
  },
6656
6799
  "name": "logGroup",
6657
6800
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -6667,7 +6810,7 @@
6667
6810
  "immutable": true,
6668
6811
  "locationInModule": {
6669
6812
  "filename": "src/providers/ec2.ts",
6670
- "line": 324
6813
+ "line": 330
6671
6814
  },
6672
6815
  "name": "retryableErrors",
6673
6816
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -6951,7 +7094,7 @@
6951
7094
  },
6952
7095
  "locationInModule": {
6953
7096
  "filename": "src/providers/ecs.ts",
6954
- "line": 321
7097
+ "line": 327
6955
7098
  },
6956
7099
  "parameters": [
6957
7100
  {
@@ -6986,13 +7129,13 @@
6986
7129
  "methods": [
6987
7130
  {
6988
7131
  "docs": {
6989
- "remarks": "Included components:\n * `RunnerImageComponent.requiredPackages()`\n * `RunnerImageComponent.runnerUser()`\n * `RunnerImageComponent.git()`\n * `RunnerImageComponent.githubCli()`\n * `RunnerImageComponent.awsCli()`\n * `RunnerImageComponent.docker()`\n * `RunnerImageComponent.githubRunner()`",
7132
+ "remarks": "You can customize the OS, architecture, VPC, subnet, security groups, etc. by passing in props.\n\nYou can add components to the image builder by calling `imageBuilder.addComponent()`.\n\nThe default OS is Ubuntu running on x64 architecture.\n\nIncluded components:\n * `RunnerImageComponent.requiredPackages()`\n * `RunnerImageComponent.runnerUser()`\n * `RunnerImageComponent.git()`\n * `RunnerImageComponent.githubCli()`\n * `RunnerImageComponent.awsCli()`\n * `RunnerImageComponent.docker()`\n * `RunnerImageComponent.githubRunner()`",
6990
7133
  "stability": "experimental",
6991
- "summary": "Create new image builder that builds ECS specific runner images using Ubuntu."
7134
+ "summary": "Create new image builder that builds ECS specific runner images."
6992
7135
  },
6993
7136
  "locationInModule": {
6994
7137
  "filename": "src/providers/ecs.ts",
6995
- "line": 225
7138
+ "line": 231
6996
7139
  },
6997
7140
  "name": "imageBuilder",
6998
7141
  "parameters": [
@@ -7018,7 +7161,7 @@
7018
7161
  ],
7019
7162
  "returns": {
7020
7163
  "type": {
7021
- "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImageBuilder"
7164
+ "fqn": "@cloudsnorkel/cdk-github-runners.IConfigurableRunnerImageBuilder"
7022
7165
  }
7023
7166
  },
7024
7167
  "static": true
@@ -7031,7 +7174,7 @@
7031
7174
  },
7032
7175
  "locationInModule": {
7033
7176
  "filename": "src/providers/ecs.ts",
7034
- "line": 534
7177
+ "line": 540
7035
7178
  },
7036
7179
  "name": "getStepFunctionTask",
7037
7180
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -7060,7 +7203,7 @@
7060
7203
  },
7061
7204
  "locationInModule": {
7062
7205
  "filename": "src/providers/ecs.ts",
7063
- "line": 586
7206
+ "line": 592
7064
7207
  },
7065
7208
  "name": "grantStateMachine",
7066
7209
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -7129,7 +7272,7 @@
7129
7272
  },
7130
7273
  "locationInModule": {
7131
7274
  "filename": "src/providers/ecs.ts",
7132
- "line": 589
7275
+ "line": 595
7133
7276
  },
7134
7277
  "name": "status",
7135
7278
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -7158,7 +7301,7 @@
7158
7301
  "immutable": true,
7159
7302
  "locationInModule": {
7160
7303
  "filename": "src/providers/ecs.ts",
7161
- "line": 290
7304
+ "line": 296
7162
7305
  },
7163
7306
  "name": "connections",
7164
7307
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -7174,7 +7317,7 @@
7174
7317
  "immutable": true,
7175
7318
  "locationInModule": {
7176
7319
  "filename": "src/providers/ecs.ts",
7177
- "line": 285
7320
+ "line": 291
7178
7321
  },
7179
7322
  "name": "grantPrincipal",
7180
7323
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -7190,7 +7333,7 @@
7190
7333
  "immutable": true,
7191
7334
  "locationInModule": {
7192
7335
  "filename": "src/providers/ecs.ts",
7193
- "line": 265
7336
+ "line": 271
7194
7337
  },
7195
7338
  "name": "labels",
7196
7339
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -7212,7 +7355,7 @@
7212
7355
  "immutable": true,
7213
7356
  "locationInModule": {
7214
7357
  "filename": "src/providers/ecs.ts",
7215
- "line": 302
7358
+ "line": 308
7216
7359
  },
7217
7360
  "name": "logGroup",
7218
7361
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -7228,7 +7371,7 @@
7228
7371
  "immutable": true,
7229
7372
  "locationInModule": {
7230
7373
  "filename": "src/providers/ecs.ts",
7231
- "line": 314
7374
+ "line": 320
7232
7375
  },
7233
7376
  "name": "retryableErrors",
7234
7377
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -7622,7 +7765,7 @@
7622
7765
  },
7623
7766
  "locationInModule": {
7624
7767
  "filename": "src/providers/fargate.ts",
7625
- "line": 364
7768
+ "line": 370
7626
7769
  },
7627
7770
  "parameters": [
7628
7771
  {
@@ -7649,7 +7792,7 @@
7649
7792
  "kind": "class",
7650
7793
  "locationInModule": {
7651
7794
  "filename": "src/providers/fargate.ts",
7652
- "line": 532
7795
+ "line": 538
7653
7796
  },
7654
7797
  "name": "FargateRunner",
7655
7798
  "symbolId": "src/providers/fargate:FargateRunner"
@@ -7669,7 +7812,7 @@
7669
7812
  },
7670
7813
  "locationInModule": {
7671
7814
  "filename": "src/providers/fargate.ts",
7672
- "line": 364
7815
+ "line": 370
7673
7816
  },
7674
7817
  "parameters": [
7675
7818
  {
@@ -7704,13 +7847,13 @@
7704
7847
  "methods": [
7705
7848
  {
7706
7849
  "docs": {
7707
- "remarks": "Included components:\n * `RunnerImageComponent.requiredPackages()`\n * `RunnerImageComponent.runnerUser()`\n * `RunnerImageComponent.git()`\n * `RunnerImageComponent.githubCli()`\n * `RunnerImageComponent.awsCli()`\n * `RunnerImageComponent.githubRunner()`",
7850
+ "remarks": "You can customize the OS, architecture, VPC, subnet, security groups, etc. by passing in props.\n\nYou can add components to the image builder by calling `imageBuilder.addComponent()`.\n\nThe default OS is Ubuntu running on x64 architecture.\n\nIncluded components:\n * `RunnerImageComponent.requiredPackages()`\n * `RunnerImageComponent.runnerUser()`\n * `RunnerImageComponent.git()`\n * `RunnerImageComponent.githubCli()`\n * `RunnerImageComponent.awsCli()`\n * `RunnerImageComponent.githubRunner()`",
7708
7851
  "stability": "experimental",
7709
- "summary": "Create new image builder that builds Fargate specific runner images using Ubuntu."
7852
+ "summary": "Create new image builder that builds Fargate specific runner images."
7710
7853
  },
7711
7854
  "locationInModule": {
7712
7855
  "filename": "src/providers/fargate.ts",
7713
- "line": 278
7856
+ "line": 284
7714
7857
  },
7715
7858
  "name": "imageBuilder",
7716
7859
  "parameters": [
@@ -7736,7 +7879,7 @@
7736
7879
  ],
7737
7880
  "returns": {
7738
7881
  "type": {
7739
- "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImageBuilder"
7882
+ "fqn": "@cloudsnorkel/cdk-github-runners.IConfigurableRunnerImageBuilder"
7740
7883
  }
7741
7884
  },
7742
7885
  "static": true
@@ -7749,7 +7892,7 @@
7749
7892
  },
7750
7893
  "locationInModule": {
7751
7894
  "filename": "src/providers/fargate.ts",
7752
- "line": 451
7895
+ "line": 457
7753
7896
  },
7754
7897
  "name": "getStepFunctionTask",
7755
7898
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -7778,7 +7921,7 @@
7778
7921
  },
7779
7922
  "locationInModule": {
7780
7923
  "filename": "src/providers/fargate.ts",
7781
- "line": 507
7924
+ "line": 513
7782
7925
  },
7783
7926
  "name": "grantStateMachine",
7784
7927
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -7847,7 +7990,7 @@
7847
7990
  },
7848
7991
  "locationInModule": {
7849
7992
  "filename": "src/providers/fargate.ts",
7850
- "line": 510
7993
+ "line": 516
7851
7994
  },
7852
7995
  "name": "status",
7853
7996
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -7914,7 +8057,7 @@
7914
8057
  "immutable": true,
7915
8058
  "locationInModule": {
7916
8059
  "filename": "src/providers/fargate.ts",
7917
- "line": 327
8060
+ "line": 333
7918
8061
  },
7919
8062
  "name": "assignPublicIp",
7920
8063
  "type": {
@@ -7929,7 +8072,7 @@
7929
8072
  "immutable": true,
7930
8073
  "locationInModule": {
7931
8074
  "filename": "src/providers/fargate.ts",
7932
- "line": 297
8075
+ "line": 303
7933
8076
  },
7934
8077
  "name": "cluster",
7935
8078
  "type": {
@@ -7944,7 +8087,7 @@
7944
8087
  "immutable": true,
7945
8088
  "locationInModule": {
7946
8089
  "filename": "src/providers/fargate.ts",
7947
- "line": 337
8090
+ "line": 343
7948
8091
  },
7949
8092
  "name": "connections",
7950
8093
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -7960,7 +8103,7 @@
7960
8103
  "immutable": true,
7961
8104
  "locationInModule": {
7962
8105
  "filename": "src/providers/fargate.ts",
7963
- "line": 307
8106
+ "line": 313
7964
8107
  },
7965
8108
  "name": "container",
7966
8109
  "type": {
@@ -7975,7 +8118,7 @@
7975
8118
  "immutable": true,
7976
8119
  "locationInModule": {
7977
8120
  "filename": "src/providers/fargate.ts",
7978
- "line": 332
8121
+ "line": 338
7979
8122
  },
7980
8123
  "name": "grantPrincipal",
7981
8124
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -7992,7 +8135,7 @@
7992
8135
  "immutable": true,
7993
8136
  "locationInModule": {
7994
8137
  "filename": "src/providers/fargate.ts",
7995
- "line": 347
8138
+ "line": 353
7996
8139
  },
7997
8140
  "name": "image",
7998
8141
  "type": {
@@ -8007,7 +8150,7 @@
8007
8150
  "immutable": true,
8008
8151
  "locationInModule": {
8009
8152
  "filename": "src/providers/fargate.ts",
8010
- "line": 312
8153
+ "line": 318
8011
8154
  },
8012
8155
  "name": "labels",
8013
8156
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -8029,7 +8172,7 @@
8029
8172
  "immutable": true,
8030
8173
  "locationInModule": {
8031
8174
  "filename": "src/providers/fargate.ts",
8032
- "line": 354
8175
+ "line": 360
8033
8176
  },
8034
8177
  "name": "logGroup",
8035
8178
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -8045,7 +8188,7 @@
8045
8188
  "immutable": true,
8046
8189
  "locationInModule": {
8047
8190
  "filename": "src/providers/fargate.ts",
8048
- "line": 356
8191
+ "line": 362
8049
8192
  },
8050
8193
  "name": "retryableErrors",
8051
8194
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -8066,7 +8209,7 @@
8066
8209
  "immutable": true,
8067
8210
  "locationInModule": {
8068
8211
  "filename": "src/providers/fargate.ts",
8069
- "line": 342
8212
+ "line": 348
8070
8213
  },
8071
8214
  "name": "spot",
8072
8215
  "type": {
@@ -8081,7 +8224,7 @@
8081
8224
  "immutable": true,
8082
8225
  "locationInModule": {
8083
8226
  "filename": "src/providers/fargate.ts",
8084
- "line": 302
8227
+ "line": 308
8085
8228
  },
8086
8229
  "name": "task",
8087
8230
  "type": {
@@ -8096,7 +8239,7 @@
8096
8239
  "immutable": true,
8097
8240
  "locationInModule": {
8098
8241
  "filename": "src/providers/fargate.ts",
8099
- "line": 322
8242
+ "line": 328
8100
8243
  },
8101
8244
  "name": "subnetSelection",
8102
8245
  "optional": true,
@@ -8112,7 +8255,7 @@
8112
8255
  "immutable": true,
8113
8256
  "locationInModule": {
8114
8257
  "filename": "src/providers/fargate.ts",
8115
- "line": 317
8258
+ "line": 323
8116
8259
  },
8117
8260
  "name": "vpc",
8118
8261
  "optional": true,
@@ -8940,6 +9083,77 @@
8940
9083
  ],
8941
9084
  "symbolId": "src/runner:GitHubRunnersProps"
8942
9085
  },
9086
+ "@cloudsnorkel/cdk-github-runners.IConfigurableRunnerImageBuilder": {
9087
+ "assembly": "@cloudsnorkel/cdk-github-runners",
9088
+ "docs": {
9089
+ "remarks": "The image can be configured by adding or removing components. The image builder can be configured by adding grants or allowing connections.\n\nAn image can be a Docker image or AMI.",
9090
+ "stability": "experimental",
9091
+ "summary": "Interface for constructs that build an image that can be used in {@link IRunnerProvider }."
9092
+ },
9093
+ "fqn": "@cloudsnorkel/cdk-github-runners.IConfigurableRunnerImageBuilder",
9094
+ "interfaces": [
9095
+ "@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder",
9096
+ "aws-cdk-lib.aws_ec2.IConnectable",
9097
+ "aws-cdk-lib.aws_iam.IGrantable"
9098
+ ],
9099
+ "kind": "interface",
9100
+ "locationInModule": {
9101
+ "filename": "src/image-builders/common.ts",
9102
+ "line": 286
9103
+ },
9104
+ "methods": [
9105
+ {
9106
+ "abstract": true,
9107
+ "docs": {
9108
+ "remarks": "The component will be added to the end of the list of components.",
9109
+ "stability": "experimental",
9110
+ "summary": "Add a component to the image builder."
9111
+ },
9112
+ "locationInModule": {
9113
+ "filename": "src/image-builders/common.ts",
9114
+ "line": 292
9115
+ },
9116
+ "name": "addComponent",
9117
+ "parameters": [
9118
+ {
9119
+ "docs": {
9120
+ "summary": "component to add."
9121
+ },
9122
+ "name": "component",
9123
+ "type": {
9124
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImageComponent"
9125
+ }
9126
+ }
9127
+ ]
9128
+ },
9129
+ {
9130
+ "abstract": true,
9131
+ "docs": {
9132
+ "remarks": "Removal is done by component name. Multiple components with the same name will all be removed.",
9133
+ "stability": "experimental",
9134
+ "summary": "Remove a component from the image builder."
9135
+ },
9136
+ "locationInModule": {
9137
+ "filename": "src/image-builders/common.ts",
9138
+ "line": 299
9139
+ },
9140
+ "name": "removeComponent",
9141
+ "parameters": [
9142
+ {
9143
+ "docs": {
9144
+ "summary": "component to remove."
9145
+ },
9146
+ "name": "component",
9147
+ "type": {
9148
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImageComponent"
9149
+ }
9150
+ }
9151
+ ]
9152
+ }
9153
+ ],
9154
+ "name": "IConfigurableRunnerImageBuilder",
9155
+ "symbolId": "src/image-builders/common:IConfigurableRunnerImageBuilder"
9156
+ },
8943
9157
  "@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus": {
8944
9158
  "assembly": "@cloudsnorkel/cdk-github-runners",
8945
9159
  "docs": {
@@ -9450,7 +9664,7 @@
9450
9664
  "kind": "interface",
9451
9665
  "locationInModule": {
9452
9666
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9453
- "line": 45
9667
+ "line": 43
9454
9668
  },
9455
9669
  "name": "ImageBuilderAsset",
9456
9670
  "properties": [
@@ -9463,7 +9677,7 @@
9463
9677
  "immutable": true,
9464
9678
  "locationInModule": {
9465
9679
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9466
- "line": 54
9680
+ "line": 52
9467
9681
  },
9468
9682
  "name": "asset",
9469
9683
  "type": {
@@ -9479,7 +9693,7 @@
9479
9693
  "immutable": true,
9480
9694
  "locationInModule": {
9481
9695
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9482
- "line": 49
9696
+ "line": 47
9483
9697
  },
9484
9698
  "name": "path",
9485
9699
  "type": {
@@ -9505,7 +9719,7 @@
9505
9719
  },
9506
9720
  "locationInModule": {
9507
9721
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9508
- "line": 128
9722
+ "line": 126
9509
9723
  },
9510
9724
  "parameters": [
9511
9725
  {
@@ -9531,9 +9745,45 @@
9531
9745
  "kind": "class",
9532
9746
  "locationInModule": {
9533
9747
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9534
- "line": 115
9748
+ "line": 113
9535
9749
  },
9536
9750
  "methods": [
9751
+ {
9752
+ "docs": {
9753
+ "stability": "deprecated"
9754
+ },
9755
+ "locationInModule": {
9756
+ "filename": "src/image-builders/aws-image-builder/common.ts",
9757
+ "line": 15
9758
+ },
9759
+ "name": "generateVersion",
9760
+ "parameters": [
9761
+ {
9762
+ "name": "type",
9763
+ "type": {
9764
+ "primitive": "string"
9765
+ }
9766
+ },
9767
+ {
9768
+ "name": "name",
9769
+ "type": {
9770
+ "primitive": "string"
9771
+ }
9772
+ },
9773
+ {
9774
+ "name": "data",
9775
+ "type": {
9776
+ "primitive": "any"
9777
+ }
9778
+ }
9779
+ ],
9780
+ "protected": true,
9781
+ "returns": {
9782
+ "type": {
9783
+ "primitive": "string"
9784
+ }
9785
+ }
9786
+ },
9537
9787
  {
9538
9788
  "docs": {
9539
9789
  "stability": "deprecated",
@@ -9541,7 +9791,7 @@
9541
9791
  },
9542
9792
  "locationInModule": {
9543
9793
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9544
- "line": 230
9794
+ "line": 228
9545
9795
  },
9546
9796
  "name": "grantAssetsRead",
9547
9797
  "parameters": [
@@ -9559,7 +9809,7 @@
9559
9809
  },
9560
9810
  "locationInModule": {
9561
9811
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9562
- "line": 236
9812
+ "line": 234
9563
9813
  },
9564
9814
  "name": "prefixCommandsWithErrorHandling",
9565
9815
  "parameters": [
@@ -9591,42 +9841,6 @@
9591
9841
  }
9592
9842
  }
9593
9843
  }
9594
- },
9595
- {
9596
- "docs": {
9597
- "stability": "deprecated"
9598
- },
9599
- "locationInModule": {
9600
- "filename": "src/image-builders/aws-image-builder/common.ts",
9601
- "line": 15
9602
- },
9603
- "name": "version",
9604
- "parameters": [
9605
- {
9606
- "name": "type",
9607
- "type": {
9608
- "primitive": "string"
9609
- }
9610
- },
9611
- {
9612
- "name": "name",
9613
- "type": {
9614
- "primitive": "string"
9615
- }
9616
- },
9617
- {
9618
- "name": "data",
9619
- "type": {
9620
- "primitive": "any"
9621
- }
9622
- }
9623
- ],
9624
- "protected": true,
9625
- "returns": {
9626
- "type": {
9627
- "primitive": "string"
9628
- }
9629
- }
9630
9844
  }
9631
9845
  ],
9632
9846
  "name": "ImageBuilderComponent",
@@ -9639,7 +9853,7 @@
9639
9853
  "immutable": true,
9640
9854
  "locationInModule": {
9641
9855
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9642
- "line": 119
9856
+ "line": 117
9643
9857
  },
9644
9858
  "name": "arn",
9645
9859
  "type": {
@@ -9654,7 +9868,7 @@
9654
9868
  "immutable": true,
9655
9869
  "locationInModule": {
9656
9870
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9657
- "line": 124
9871
+ "line": 122
9658
9872
  },
9659
9873
  "name": "platform",
9660
9874
  "type": {
@@ -9675,7 +9889,7 @@
9675
9889
  "kind": "interface",
9676
9890
  "locationInModule": {
9677
9891
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9678
- "line": 60
9892
+ "line": 58
9679
9893
  },
9680
9894
  "name": "ImageBuilderComponentProperties",
9681
9895
  "properties": [
@@ -9689,7 +9903,7 @@
9689
9903
  "immutable": true,
9690
9904
  "locationInModule": {
9691
9905
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9692
- "line": 81
9906
+ "line": 79
9693
9907
  },
9694
9908
  "name": "commands",
9695
9909
  "type": {
@@ -9710,7 +9924,7 @@
9710
9924
  "immutable": true,
9711
9925
  "locationInModule": {
9712
9926
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9713
- "line": 74
9927
+ "line": 72
9714
9928
  },
9715
9929
  "name": "description",
9716
9930
  "type": {
@@ -9726,7 +9940,7 @@
9726
9940
  "immutable": true,
9727
9941
  "locationInModule": {
9728
9942
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9729
- "line": 69
9943
+ "line": 67
9730
9944
  },
9731
9945
  "name": "displayName",
9732
9946
  "type": {
@@ -9743,7 +9957,7 @@
9743
9957
  "immutable": true,
9744
9958
  "locationInModule": {
9745
9959
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9746
- "line": 64
9960
+ "line": 62
9747
9961
  },
9748
9962
  "name": "platform",
9749
9963
  "type": {
@@ -9759,7 +9973,7 @@
9759
9973
  "immutable": true,
9760
9974
  "locationInModule": {
9761
9975
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9762
- "line": 86
9976
+ "line": 84
9763
9977
  },
9764
9978
  "name": "assets",
9765
9979
  "optional": true,
@@ -9782,7 +9996,7 @@
9782
9996
  "immutable": true,
9783
9997
  "locationInModule": {
9784
9998
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9785
- "line": 93
9999
+ "line": 91
9786
10000
  },
9787
10001
  "name": "reboot",
9788
10002
  "optional": true,
@@ -9955,7 +10169,7 @@
9955
10169
  },
9956
10170
  "locationInModule": {
9957
10171
  "filename": "src/providers/lambda.ts",
9958
- "line": 229
10172
+ "line": 235
9959
10173
  },
9960
10174
  "parameters": [
9961
10175
  {
@@ -9982,7 +10196,7 @@
9982
10196
  "kind": "class",
9983
10197
  "locationInModule": {
9984
10198
  "filename": "src/providers/lambda.ts",
9985
- "line": 462
10199
+ "line": 468
9986
10200
  },
9987
10201
  "name": "LambdaRunner",
9988
10202
  "symbolId": "src/providers/lambda:LambdaRunner"
@@ -10002,7 +10216,7 @@
10002
10216
  },
10003
10217
  "locationInModule": {
10004
10218
  "filename": "src/providers/lambda.ts",
10005
- "line": 229
10219
+ "line": 235
10006
10220
  },
10007
10221
  "parameters": [
10008
10222
  {
@@ -10037,13 +10251,13 @@
10037
10251
  "methods": [
10038
10252
  {
10039
10253
  "docs": {
10040
- "remarks": "Included components:\n * `RunnerImageComponent.requiredPackages()`\n * `RunnerImageComponent.runnerUser()`\n * `RunnerImageComponent.git()`\n * `RunnerImageComponent.githubCli()`\n * `RunnerImageComponent.awsCli()`\n * `RunnerImageComponent.githubRunner()`\n * `RunnerImageComponent.lambdaEntrypoint()`\n\n Base Docker image: `public.ecr.aws/lambda/nodejs:16-x86_64` or `public.ecr.aws/lambda/nodejs:16-arm64`",
10254
+ "remarks": "You can customize the OS, architecture, VPC, subnet, security groups, etc. by passing in props.\n\nYou can add components to the image builder by calling `imageBuilder.addComponent()`.\n\nThe default OS is Amazon Linux 2 running on x64 architecture.\n\nIncluded components:\n * `RunnerImageComponent.requiredPackages()`\n * `RunnerImageComponent.runnerUser()`\n * `RunnerImageComponent.git()`\n * `RunnerImageComponent.githubCli()`\n * `RunnerImageComponent.awsCli()`\n * `RunnerImageComponent.githubRunner()`\n * `RunnerImageComponent.lambdaEntrypoint()`\n\n Base Docker image: `public.ecr.aws/lambda/nodejs:16-x86_64` or `public.ecr.aws/lambda/nodejs:16-arm64`",
10041
10255
  "stability": "experimental",
10042
- "summary": "Create new image builder that builds Lambda specific runner images using Amazon Linux 2."
10256
+ "summary": "Create new image builder that builds Lambda specific runner images."
10043
10257
  },
10044
10258
  "locationInModule": {
10045
10259
  "filename": "src/providers/lambda.ts",
10046
- "line": 163
10260
+ "line": 169
10047
10261
  },
10048
10262
  "name": "imageBuilder",
10049
10263
  "parameters": [
@@ -10069,7 +10283,7 @@
10069
10283
  ],
10070
10284
  "returns": {
10071
10285
  "type": {
10072
- "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImageBuilder"
10286
+ "fqn": "@cloudsnorkel/cdk-github-runners.IConfigurableRunnerImageBuilder"
10073
10287
  }
10074
10288
  },
10075
10289
  "static": true
@@ -10082,7 +10296,7 @@
10082
10296
  },
10083
10297
  "locationInModule": {
10084
10298
  "filename": "src/providers/lambda.ts",
10085
- "line": 317
10299
+ "line": 323
10086
10300
  },
10087
10301
  "name": "getStepFunctionTask",
10088
10302
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -10111,7 +10325,7 @@
10111
10325
  },
10112
10326
  "locationInModule": {
10113
10327
  "filename": "src/providers/lambda.ts",
10114
- "line": 379
10328
+ "line": 385
10115
10329
  },
10116
10330
  "name": "grantStateMachine",
10117
10331
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -10180,7 +10394,7 @@
10180
10394
  },
10181
10395
  "locationInModule": {
10182
10396
  "filename": "src/providers/lambda.ts",
10183
- "line": 382
10397
+ "line": 388
10184
10398
  },
10185
10399
  "name": "status",
10186
10400
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -10247,7 +10461,7 @@
10247
10461
  "immutable": true,
10248
10462
  "locationInModule": {
10249
10463
  "filename": "src/providers/lambda.ts",
10250
- "line": 306
10464
+ "line": 312
10251
10465
  },
10252
10466
  "name": "connections",
10253
10467
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -10263,7 +10477,7 @@
10263
10477
  "immutable": true,
10264
10478
  "locationInModule": {
10265
10479
  "filename": "src/providers/lambda.ts",
10266
- "line": 194
10480
+ "line": 200
10267
10481
  },
10268
10482
  "name": "function",
10269
10483
  "type": {
@@ -10278,7 +10492,7 @@
10278
10492
  "immutable": true,
10279
10493
  "locationInModule": {
10280
10494
  "filename": "src/providers/lambda.ts",
10281
- "line": 204
10495
+ "line": 210
10282
10496
  },
10283
10497
  "name": "grantPrincipal",
10284
10498
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -10295,7 +10509,7 @@
10295
10509
  "immutable": true,
10296
10510
  "locationInModule": {
10297
10511
  "filename": "src/providers/lambda.ts",
10298
- "line": 209
10512
+ "line": 215
10299
10513
  },
10300
10514
  "name": "image",
10301
10515
  "type": {
@@ -10310,7 +10524,7 @@
10310
10524
  "immutable": true,
10311
10525
  "locationInModule": {
10312
10526
  "filename": "src/providers/lambda.ts",
10313
- "line": 199
10527
+ "line": 205
10314
10528
  },
10315
10529
  "name": "labels",
10316
10530
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -10332,7 +10546,7 @@
10332
10546
  "immutable": true,
10333
10547
  "locationInModule": {
10334
10548
  "filename": "src/providers/lambda.ts",
10335
- "line": 216
10549
+ "line": 222
10336
10550
  },
10337
10551
  "name": "logGroup",
10338
10552
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -10348,7 +10562,7 @@
10348
10562
  "immutable": true,
10349
10563
  "locationInModule": {
10350
10564
  "filename": "src/providers/lambda.ts",
10351
- "line": 218
10565
+ "line": 224
10352
10566
  },
10353
10567
  "name": "retryableErrors",
10354
10568
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -11525,7 +11739,7 @@
11525
11739
  },
11526
11740
  "locationInModule": {
11527
11741
  "filename": "src/image-builders/common.ts",
11528
- "line": 287
11742
+ "line": 308
11529
11743
  },
11530
11744
  "parameters": [
11531
11745
  {
@@ -11551,9 +11765,7 @@
11551
11765
  "protected": true
11552
11766
  },
11553
11767
  "interfaces": [
11554
- "aws-cdk-lib.aws_ec2.IConnectable",
11555
- "aws-cdk-lib.aws_iam.IGrantable",
11556
- "@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder"
11768
+ "@cloudsnorkel/cdk-github-runners.IConfigurableRunnerImageBuilder"
11557
11769
  ],
11558
11770
  "kind": "class",
11559
11771
  "locationInModule": {
@@ -11595,7 +11807,7 @@
11595
11807
  ],
11596
11808
  "returns": {
11597
11809
  "type": {
11598
- "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImageBuilder"
11810
+ "fqn": "@cloudsnorkel/cdk-github-runners.IConfigurableRunnerImageBuilder"
11599
11811
  }
11600
11812
  },
11601
11813
  "static": true
@@ -11608,14 +11820,12 @@
11608
11820
  },
11609
11821
  "locationInModule": {
11610
11822
  "filename": "src/image-builders/common.ts",
11611
- "line": 307
11823
+ "line": 323
11612
11824
  },
11613
11825
  "name": "addComponent",
11826
+ "overrides": "@cloudsnorkel/cdk-github-runners.IConfigurableRunnerImageBuilder",
11614
11827
  "parameters": [
11615
11828
  {
11616
- "docs": {
11617
- "summary": "component to add."
11618
- },
11619
11829
  "name": "component",
11620
11830
  "type": {
11621
11831
  "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImageComponent"
@@ -11632,7 +11842,7 @@
11632
11842
  },
11633
11843
  "locationInModule": {
11634
11844
  "filename": "src/image-builders/common.ts",
11635
- "line": 297
11845
+ "line": 318
11636
11846
  },
11637
11847
  "name": "bindAmi",
11638
11848
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder",
@@ -11651,7 +11861,7 @@
11651
11861
  },
11652
11862
  "locationInModule": {
11653
11863
  "filename": "src/image-builders/common.ts",
11654
- "line": 295
11864
+ "line": 316
11655
11865
  },
11656
11866
  "name": "bindDockerImage",
11657
11867
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder",
@@ -11669,14 +11879,12 @@
11669
11879
  },
11670
11880
  "locationInModule": {
11671
11881
  "filename": "src/image-builders/common.ts",
11672
- "line": 316
11882
+ "line": 327
11673
11883
  },
11674
11884
  "name": "removeComponent",
11885
+ "overrides": "@cloudsnorkel/cdk-github-runners.IConfigurableRunnerImageBuilder",
11675
11886
  "parameters": [
11676
11887
  {
11677
- "docs": {
11678
- "summary": "component to remove."
11679
- },
11680
11888
  "name": "component",
11681
11889
  "type": {
11682
11890
  "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImageComponent"
@@ -11696,7 +11904,7 @@
11696
11904
  "immutable": true,
11697
11905
  "locationInModule": {
11698
11906
  "filename": "src/image-builders/common.ts",
11699
- "line": 299
11907
+ "line": 320
11700
11908
  },
11701
11909
  "name": "connections",
11702
11910
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -11713,7 +11921,7 @@
11713
11921
  "immutable": true,
11714
11922
  "locationInModule": {
11715
11923
  "filename": "src/image-builders/common.ts",
11716
- "line": 300
11924
+ "line": 321
11717
11925
  },
11718
11926
  "name": "grantPrincipal",
11719
11927
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -11727,7 +11935,7 @@
11727
11935
  },
11728
11936
  "locationInModule": {
11729
11937
  "filename": "src/image-builders/common.ts",
11730
- "line": 285
11938
+ "line": 306
11731
11939
  },
11732
11940
  "name": "components",
11733
11941
  "protected": true,
@@ -12471,7 +12679,7 @@
12471
12679
  {
12472
12680
  "abstract": true,
12473
12681
  "docs": {
12474
- "remarks": "Used to identify component in image build logs, and for {@link RunnerImageBuilder.removeComponent }",
12682
+ "remarks": "Used to identify component in image build logs, and for {@link IConfigurableRunnerImageBuilder.removeComponent }",
12475
12683
  "stability": "experimental",
12476
12684
  "summary": "Component name."
12477
12685
  },
@@ -12574,7 +12782,7 @@
12574
12782
  "docs": {
12575
12783
  "remarks": "Name must only contain alphanumeric characters and dashes.",
12576
12784
  "stability": "experimental",
12577
- "summary": "Component name used for (1) image build logging and (2) identifier for {@link ImageRunnerBuilder.removeComponent }."
12785
+ "summary": "Component name used for (1) image build logging and (2) identifier for {@link IConfigurableRunnerImageBuilder.removeComponent }."
12578
12786
  },
12579
12787
  "immutable": true,
12580
12788
  "locationInModule": {
@@ -13378,6 +13586,6 @@
13378
13586
  "symbolId": "src/image-builders/aws-image-builder/deprecated/windows-components:WindowsComponents"
13379
13587
  }
13380
13588
  },
13381
- "version": "0.11.6",
13382
- "fingerprint": "yiA0IekhG5D10PvsSpwCifz1Q4/KDpDWzYjTrw7sE9M="
13589
+ "version": "0.12.0",
13590
+ "fingerprint": "AbRJQzeZ4BxSiUye4iKkm/ovoIAoXNQ5jbyM6AttHNs="
13383
13591
  }