@cloudsnorkel/cdk-github-runners 0.11.5 → 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 (66) hide show
  1. package/.gitattributes +1 -2
  2. package/.jsii +442 -215
  3. package/API.md +185 -27
  4. package/README.md +10 -20
  5. package/assets/delete-failed-runner.lambda/index.js +6 -3714
  6. package/assets/idle-runner-repear.lambda/index.js +6 -3714
  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 +4 -3712
  11. package/assets/status.lambda/index.js +6 -3714
  12. package/assets/token-retriever.lambda/index.js +6 -3714
  13. package/assets/webhook-handler.lambda/index.js +15 -3723
  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.d.ts +8 -0
  53. package/lib/runner.js +4 -3
  54. package/lib/secrets.js +1 -1
  55. package/lib/webhook-handler.lambda.js +11 -10
  56. package/lib/webhook.d.ts +4 -0
  57. package/lib/webhook.js +2 -1
  58. package/package.json +22 -26
  59. package/assets/image-builders/aws-image-builder/reaper.lambda/index.js +0 -165
  60. package/lib/image-builders/aws-image-builder/reaper-function.d.ts +0 -13
  61. package/lib/image-builders/aws-image-builder/reaper-function.js +0 -23
  62. package/lib/image-builders/aws-image-builder/reaper.lambda.d.ts +0 -9
  63. package/lib/image-builders/aws-image-builder/reaper.lambda.js +0 -151
  64. package/lib/providers/build-image-function.js +0 -23
  65. package/lib/providers/build-image.lambda.js +0 -92
  66. /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,
@@ -8412,7 +8555,7 @@
8412
8555
  },
8413
8556
  "locationInModule": {
8414
8557
  "filename": "src/runner.ts",
8415
- "line": 260
8558
+ "line": 269
8416
8559
  },
8417
8560
  "parameters": [
8418
8561
  {
@@ -8442,7 +8585,7 @@
8442
8585
  "kind": "class",
8443
8586
  "locationInModule": {
8444
8587
  "filename": "src/runner.ts",
8445
- "line": 234
8588
+ "line": 243
8446
8589
  },
8447
8590
  "methods": [
8448
8591
  {
@@ -8453,7 +8596,7 @@
8453
8596
  },
8454
8597
  "locationInModule": {
8455
8598
  "filename": "src/runner.ts",
8456
- "line": 771
8599
+ "line": 781
8457
8600
  },
8458
8601
  "name": "createLogsInsightsQueries"
8459
8602
  },
@@ -8465,7 +8608,7 @@
8465
8608
  },
8466
8609
  "locationInModule": {
8467
8610
  "filename": "src/runner.ts",
8468
- "line": 751
8611
+ "line": 761
8469
8612
  },
8470
8613
  "name": "failedImageBuildsTopic",
8471
8614
  "returns": {
@@ -8482,7 +8625,7 @@
8482
8625
  },
8483
8626
  "locationInModule": {
8484
8627
  "filename": "src/runner.ts",
8485
- "line": 733
8628
+ "line": 743
8486
8629
  },
8487
8630
  "name": "metricFailed",
8488
8631
  "parameters": [
@@ -8508,7 +8651,7 @@
8508
8651
  },
8509
8652
  "locationInModule": {
8510
8653
  "filename": "src/runner.ts",
8511
- "line": 678
8654
+ "line": 688
8512
8655
  },
8513
8656
  "name": "metricJobCompleted",
8514
8657
  "parameters": [
@@ -8534,7 +8677,7 @@
8534
8677
  },
8535
8678
  "locationInModule": {
8536
8679
  "filename": "src/runner.ts",
8537
- "line": 724
8680
+ "line": 734
8538
8681
  },
8539
8682
  "name": "metricSucceeded",
8540
8683
  "parameters": [
@@ -8560,7 +8703,7 @@
8560
8703
  },
8561
8704
  "locationInModule": {
8562
8705
  "filename": "src/runner.ts",
8563
- "line": 740
8706
+ "line": 750
8564
8707
  },
8565
8708
  "name": "metricTime",
8566
8709
  "parameters": [
@@ -8590,7 +8733,7 @@
8590
8733
  "immutable": true,
8591
8734
  "locationInModule": {
8592
8735
  "filename": "src/runner.ts",
8593
- "line": 250
8736
+ "line": 259
8594
8737
  },
8595
8738
  "name": "connections",
8596
8739
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -8606,7 +8749,7 @@
8606
8749
  "immutable": true,
8607
8750
  "locationInModule": {
8608
8751
  "filename": "src/runner.ts",
8609
- "line": 238
8752
+ "line": 247
8610
8753
  },
8611
8754
  "name": "providers",
8612
8755
  "type": {
@@ -8626,7 +8769,7 @@
8626
8769
  "immutable": true,
8627
8770
  "locationInModule": {
8628
8771
  "filename": "src/runner.ts",
8629
- "line": 243
8772
+ "line": 252
8630
8773
  },
8631
8774
  "name": "secrets",
8632
8775
  "type": {
@@ -8640,7 +8783,7 @@
8640
8783
  "immutable": true,
8641
8784
  "locationInModule": {
8642
8785
  "filename": "src/runner.ts",
8643
- "line": 260
8786
+ "line": 269
8644
8787
  },
8645
8788
  "name": "props",
8646
8789
  "optional": true,
@@ -8677,7 +8820,7 @@
8677
8820
  "immutable": true,
8678
8821
  "locationInModule": {
8679
8822
  "filename": "src/runner.ts",
8680
- "line": 70
8823
+ "line": 79
8681
8824
  },
8682
8825
  "name": "allowPublicSubnet",
8683
8826
  "optional": true,
@@ -8695,7 +8838,7 @@
8695
8838
  "immutable": true,
8696
8839
  "locationInModule": {
8697
8840
  "filename": "src/runner.ts",
8698
- "line": 107
8841
+ "line": 116
8699
8842
  },
8700
8843
  "name": "extraCertificates",
8701
8844
  "optional": true,
@@ -8714,7 +8857,7 @@
8714
8857
  "immutable": true,
8715
8858
  "locationInModule": {
8716
8859
  "filename": "src/runner.ts",
8717
- "line": 114
8860
+ "line": 123
8718
8861
  },
8719
8862
  "name": "idleTimeout",
8720
8863
  "optional": true,
@@ -8732,7 +8875,7 @@
8732
8875
  "immutable": true,
8733
8876
  "locationInModule": {
8734
8877
  "filename": "src/runner.ts",
8735
- "line": 121
8878
+ "line": 130
8736
8879
  },
8737
8880
  "name": "logOptions",
8738
8881
  "optional": true,
@@ -8764,6 +8907,25 @@
8764
8907
  }
8765
8908
  }
8766
8909
  },
8910
+ {
8911
+ "abstract": true,
8912
+ "docs": {
8913
+ "default": "true",
8914
+ "remarks": "If `true`, the runner will only start if the workflow job explicitly requests the `self-hosted` label.\n\nBe careful when setting this to `false`. Avoid setting up providers with generic label requirements like `linux` as they may match workflows that are not meant to run on self-hosted runners.",
8915
+ "stability": "experimental",
8916
+ "summary": "Whether to require the `self-hosted` label."
8917
+ },
8918
+ "immutable": true,
8919
+ "locationInModule": {
8920
+ "filename": "src/runner.ts",
8921
+ "line": 53
8922
+ },
8923
+ "name": "requireSelfHostedLabel",
8924
+ "optional": true,
8925
+ "type": {
8926
+ "primitive": "boolean"
8927
+ }
8928
+ },
8767
8929
  {
8768
8930
  "abstract": true,
8769
8931
  "docs": {
@@ -8775,7 +8937,7 @@
8775
8937
  "immutable": true,
8776
8938
  "locationInModule": {
8777
8939
  "filename": "src/runner.ts",
8778
- "line": 158
8940
+ "line": 167
8779
8941
  },
8780
8942
  "name": "retryOptions",
8781
8943
  "optional": true,
@@ -8794,7 +8956,7 @@
8794
8956
  "immutable": true,
8795
8957
  "locationInModule": {
8796
8958
  "filename": "src/runner.ts",
8797
- "line": 77
8959
+ "line": 86
8798
8960
  },
8799
8961
  "name": "securityGroup",
8800
8962
  "optional": true,
@@ -8812,7 +8974,7 @@
8812
8974
  "immutable": true,
8813
8975
  "locationInModule": {
8814
8976
  "filename": "src/runner.ts",
8815
- "line": 82
8977
+ "line": 91
8816
8978
  },
8817
8979
  "name": "securityGroups",
8818
8980
  "optional": true,
@@ -8836,7 +8998,7 @@
8836
8998
  "immutable": true,
8837
8999
  "locationInModule": {
8838
9000
  "filename": "src/runner.ts",
8839
- "line": 128
9001
+ "line": 137
8840
9002
  },
8841
9003
  "name": "setupAccess",
8842
9004
  "optional": true,
@@ -8855,7 +9017,7 @@
8855
9017
  "immutable": true,
8856
9018
  "locationInModule": {
8857
9019
  "filename": "src/runner.ts",
8858
- "line": 147
9020
+ "line": 156
8859
9021
  },
8860
9022
  "name": "statusAccess",
8861
9023
  "optional": true,
@@ -8873,7 +9035,7 @@
8873
9035
  "immutable": true,
8874
9036
  "locationInModule": {
8875
9037
  "filename": "src/runner.ts",
8876
- "line": 58
9038
+ "line": 67
8877
9039
  },
8878
9040
  "name": "vpc",
8879
9041
  "optional": true,
@@ -8891,7 +9053,7 @@
8891
9053
  "immutable": true,
8892
9054
  "locationInModule": {
8893
9055
  "filename": "src/runner.ts",
8894
- "line": 63
9056
+ "line": 72
8895
9057
  },
8896
9058
  "name": "vpcSubnets",
8897
9059
  "optional": true,
@@ -8910,7 +9072,7 @@
8910
9072
  "immutable": true,
8911
9073
  "locationInModule": {
8912
9074
  "filename": "src/runner.ts",
8913
- "line": 140
9075
+ "line": 149
8914
9076
  },
8915
9077
  "name": "webhookAccess",
8916
9078
  "optional": true,
@@ -8921,6 +9083,77 @@
8921
9083
  ],
8922
9084
  "symbolId": "src/runner:GitHubRunnersProps"
8923
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
+ },
8924
9157
  "@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus": {
8925
9158
  "assembly": "@cloudsnorkel/cdk-github-runners",
8926
9159
  "docs": {
@@ -9431,7 +9664,7 @@
9431
9664
  "kind": "interface",
9432
9665
  "locationInModule": {
9433
9666
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9434
- "line": 45
9667
+ "line": 43
9435
9668
  },
9436
9669
  "name": "ImageBuilderAsset",
9437
9670
  "properties": [
@@ -9444,7 +9677,7 @@
9444
9677
  "immutable": true,
9445
9678
  "locationInModule": {
9446
9679
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9447
- "line": 54
9680
+ "line": 52
9448
9681
  },
9449
9682
  "name": "asset",
9450
9683
  "type": {
@@ -9460,7 +9693,7 @@
9460
9693
  "immutable": true,
9461
9694
  "locationInModule": {
9462
9695
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9463
- "line": 49
9696
+ "line": 47
9464
9697
  },
9465
9698
  "name": "path",
9466
9699
  "type": {
@@ -9486,7 +9719,7 @@
9486
9719
  },
9487
9720
  "locationInModule": {
9488
9721
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9489
- "line": 128
9722
+ "line": 126
9490
9723
  },
9491
9724
  "parameters": [
9492
9725
  {
@@ -9512,9 +9745,45 @@
9512
9745
  "kind": "class",
9513
9746
  "locationInModule": {
9514
9747
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9515
- "line": 115
9748
+ "line": 113
9516
9749
  },
9517
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
+ },
9518
9787
  {
9519
9788
  "docs": {
9520
9789
  "stability": "deprecated",
@@ -9522,7 +9791,7 @@
9522
9791
  },
9523
9792
  "locationInModule": {
9524
9793
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9525
- "line": 230
9794
+ "line": 228
9526
9795
  },
9527
9796
  "name": "grantAssetsRead",
9528
9797
  "parameters": [
@@ -9540,7 +9809,7 @@
9540
9809
  },
9541
9810
  "locationInModule": {
9542
9811
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9543
- "line": 236
9812
+ "line": 234
9544
9813
  },
9545
9814
  "name": "prefixCommandsWithErrorHandling",
9546
9815
  "parameters": [
@@ -9572,42 +9841,6 @@
9572
9841
  }
9573
9842
  }
9574
9843
  }
9575
- },
9576
- {
9577
- "docs": {
9578
- "stability": "deprecated"
9579
- },
9580
- "locationInModule": {
9581
- "filename": "src/image-builders/aws-image-builder/common.ts",
9582
- "line": 15
9583
- },
9584
- "name": "version",
9585
- "parameters": [
9586
- {
9587
- "name": "type",
9588
- "type": {
9589
- "primitive": "string"
9590
- }
9591
- },
9592
- {
9593
- "name": "name",
9594
- "type": {
9595
- "primitive": "string"
9596
- }
9597
- },
9598
- {
9599
- "name": "data",
9600
- "type": {
9601
- "primitive": "any"
9602
- }
9603
- }
9604
- ],
9605
- "protected": true,
9606
- "returns": {
9607
- "type": {
9608
- "primitive": "string"
9609
- }
9610
- }
9611
9844
  }
9612
9845
  ],
9613
9846
  "name": "ImageBuilderComponent",
@@ -9620,7 +9853,7 @@
9620
9853
  "immutable": true,
9621
9854
  "locationInModule": {
9622
9855
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9623
- "line": 119
9856
+ "line": 117
9624
9857
  },
9625
9858
  "name": "arn",
9626
9859
  "type": {
@@ -9635,7 +9868,7 @@
9635
9868
  "immutable": true,
9636
9869
  "locationInModule": {
9637
9870
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9638
- "line": 124
9871
+ "line": 122
9639
9872
  },
9640
9873
  "name": "platform",
9641
9874
  "type": {
@@ -9656,7 +9889,7 @@
9656
9889
  "kind": "interface",
9657
9890
  "locationInModule": {
9658
9891
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9659
- "line": 60
9892
+ "line": 58
9660
9893
  },
9661
9894
  "name": "ImageBuilderComponentProperties",
9662
9895
  "properties": [
@@ -9670,7 +9903,7 @@
9670
9903
  "immutable": true,
9671
9904
  "locationInModule": {
9672
9905
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9673
- "line": 81
9906
+ "line": 79
9674
9907
  },
9675
9908
  "name": "commands",
9676
9909
  "type": {
@@ -9691,7 +9924,7 @@
9691
9924
  "immutable": true,
9692
9925
  "locationInModule": {
9693
9926
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9694
- "line": 74
9927
+ "line": 72
9695
9928
  },
9696
9929
  "name": "description",
9697
9930
  "type": {
@@ -9707,7 +9940,7 @@
9707
9940
  "immutable": true,
9708
9941
  "locationInModule": {
9709
9942
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9710
- "line": 69
9943
+ "line": 67
9711
9944
  },
9712
9945
  "name": "displayName",
9713
9946
  "type": {
@@ -9724,7 +9957,7 @@
9724
9957
  "immutable": true,
9725
9958
  "locationInModule": {
9726
9959
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9727
- "line": 64
9960
+ "line": 62
9728
9961
  },
9729
9962
  "name": "platform",
9730
9963
  "type": {
@@ -9740,7 +9973,7 @@
9740
9973
  "immutable": true,
9741
9974
  "locationInModule": {
9742
9975
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9743
- "line": 86
9976
+ "line": 84
9744
9977
  },
9745
9978
  "name": "assets",
9746
9979
  "optional": true,
@@ -9763,7 +9996,7 @@
9763
9996
  "immutable": true,
9764
9997
  "locationInModule": {
9765
9998
  "filename": "src/image-builders/aws-image-builder/builder.ts",
9766
- "line": 93
9999
+ "line": 91
9767
10000
  },
9768
10001
  "name": "reboot",
9769
10002
  "optional": true,
@@ -9936,7 +10169,7 @@
9936
10169
  },
9937
10170
  "locationInModule": {
9938
10171
  "filename": "src/providers/lambda.ts",
9939
- "line": 229
10172
+ "line": 235
9940
10173
  },
9941
10174
  "parameters": [
9942
10175
  {
@@ -9963,7 +10196,7 @@
9963
10196
  "kind": "class",
9964
10197
  "locationInModule": {
9965
10198
  "filename": "src/providers/lambda.ts",
9966
- "line": 462
10199
+ "line": 468
9967
10200
  },
9968
10201
  "name": "LambdaRunner",
9969
10202
  "symbolId": "src/providers/lambda:LambdaRunner"
@@ -9983,7 +10216,7 @@
9983
10216
  },
9984
10217
  "locationInModule": {
9985
10218
  "filename": "src/providers/lambda.ts",
9986
- "line": 229
10219
+ "line": 235
9987
10220
  },
9988
10221
  "parameters": [
9989
10222
  {
@@ -10018,13 +10251,13 @@
10018
10251
  "methods": [
10019
10252
  {
10020
10253
  "docs": {
10021
- "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`",
10022
10255
  "stability": "experimental",
10023
- "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."
10024
10257
  },
10025
10258
  "locationInModule": {
10026
10259
  "filename": "src/providers/lambda.ts",
10027
- "line": 163
10260
+ "line": 169
10028
10261
  },
10029
10262
  "name": "imageBuilder",
10030
10263
  "parameters": [
@@ -10050,7 +10283,7 @@
10050
10283
  ],
10051
10284
  "returns": {
10052
10285
  "type": {
10053
- "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImageBuilder"
10286
+ "fqn": "@cloudsnorkel/cdk-github-runners.IConfigurableRunnerImageBuilder"
10054
10287
  }
10055
10288
  },
10056
10289
  "static": true
@@ -10063,7 +10296,7 @@
10063
10296
  },
10064
10297
  "locationInModule": {
10065
10298
  "filename": "src/providers/lambda.ts",
10066
- "line": 317
10299
+ "line": 323
10067
10300
  },
10068
10301
  "name": "getStepFunctionTask",
10069
10302
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -10092,7 +10325,7 @@
10092
10325
  },
10093
10326
  "locationInModule": {
10094
10327
  "filename": "src/providers/lambda.ts",
10095
- "line": 379
10328
+ "line": 385
10096
10329
  },
10097
10330
  "name": "grantStateMachine",
10098
10331
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -10161,7 +10394,7 @@
10161
10394
  },
10162
10395
  "locationInModule": {
10163
10396
  "filename": "src/providers/lambda.ts",
10164
- "line": 382
10397
+ "line": 388
10165
10398
  },
10166
10399
  "name": "status",
10167
10400
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -10228,7 +10461,7 @@
10228
10461
  "immutable": true,
10229
10462
  "locationInModule": {
10230
10463
  "filename": "src/providers/lambda.ts",
10231
- "line": 306
10464
+ "line": 312
10232
10465
  },
10233
10466
  "name": "connections",
10234
10467
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -10244,7 +10477,7 @@
10244
10477
  "immutable": true,
10245
10478
  "locationInModule": {
10246
10479
  "filename": "src/providers/lambda.ts",
10247
- "line": 194
10480
+ "line": 200
10248
10481
  },
10249
10482
  "name": "function",
10250
10483
  "type": {
@@ -10259,7 +10492,7 @@
10259
10492
  "immutable": true,
10260
10493
  "locationInModule": {
10261
10494
  "filename": "src/providers/lambda.ts",
10262
- "line": 204
10495
+ "line": 210
10263
10496
  },
10264
10497
  "name": "grantPrincipal",
10265
10498
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -10276,7 +10509,7 @@
10276
10509
  "immutable": true,
10277
10510
  "locationInModule": {
10278
10511
  "filename": "src/providers/lambda.ts",
10279
- "line": 209
10512
+ "line": 215
10280
10513
  },
10281
10514
  "name": "image",
10282
10515
  "type": {
@@ -10291,7 +10524,7 @@
10291
10524
  "immutable": true,
10292
10525
  "locationInModule": {
10293
10526
  "filename": "src/providers/lambda.ts",
10294
- "line": 199
10527
+ "line": 205
10295
10528
  },
10296
10529
  "name": "labels",
10297
10530
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -10313,7 +10546,7 @@
10313
10546
  "immutable": true,
10314
10547
  "locationInModule": {
10315
10548
  "filename": "src/providers/lambda.ts",
10316
- "line": 216
10549
+ "line": 222
10317
10550
  },
10318
10551
  "name": "logGroup",
10319
10552
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -10329,7 +10562,7 @@
10329
10562
  "immutable": true,
10330
10563
  "locationInModule": {
10331
10564
  "filename": "src/providers/lambda.ts",
10332
- "line": 218
10565
+ "line": 224
10333
10566
  },
10334
10567
  "name": "retryableErrors",
10335
10568
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -10890,7 +11123,7 @@
10890
11123
  "kind": "interface",
10891
11124
  "locationInModule": {
10892
11125
  "filename": "src/runner.ts",
10893
- "line": 164
11126
+ "line": 173
10894
11127
  },
10895
11128
  "name": "LogOptions",
10896
11129
  "properties": [
@@ -10904,7 +11137,7 @@
10904
11137
  "immutable": true,
10905
11138
  "locationInModule": {
10906
11139
  "filename": "src/runner.ts",
10907
- "line": 175
11140
+ "line": 184
10908
11141
  },
10909
11142
  "name": "includeExecutionData",
10910
11143
  "optional": true,
@@ -10922,7 +11155,7 @@
10922
11155
  "immutable": true,
10923
11156
  "locationInModule": {
10924
11157
  "filename": "src/runner.ts",
10925
- "line": 182
11158
+ "line": 191
10926
11159
  },
10927
11160
  "name": "level",
10928
11161
  "optional": true,
@@ -10939,7 +11172,7 @@
10939
11172
  "immutable": true,
10940
11173
  "locationInModule": {
10941
11174
  "filename": "src/runner.ts",
10942
- "line": 168
11175
+ "line": 177
10943
11176
  },
10944
11177
  "name": "logGroupName",
10945
11178
  "optional": true,
@@ -10958,7 +11191,7 @@
10958
11191
  "immutable": true,
10959
11192
  "locationInModule": {
10960
11193
  "filename": "src/runner.ts",
10961
- "line": 191
11194
+ "line": 200
10962
11195
  },
10963
11196
  "name": "logRetention",
10964
11197
  "optional": true,
@@ -11506,7 +11739,7 @@
11506
11739
  },
11507
11740
  "locationInModule": {
11508
11741
  "filename": "src/image-builders/common.ts",
11509
- "line": 287
11742
+ "line": 308
11510
11743
  },
11511
11744
  "parameters": [
11512
11745
  {
@@ -11532,9 +11765,7 @@
11532
11765
  "protected": true
11533
11766
  },
11534
11767
  "interfaces": [
11535
- "aws-cdk-lib.aws_ec2.IConnectable",
11536
- "aws-cdk-lib.aws_iam.IGrantable",
11537
- "@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder"
11768
+ "@cloudsnorkel/cdk-github-runners.IConfigurableRunnerImageBuilder"
11538
11769
  ],
11539
11770
  "kind": "class",
11540
11771
  "locationInModule": {
@@ -11576,7 +11807,7 @@
11576
11807
  ],
11577
11808
  "returns": {
11578
11809
  "type": {
11579
- "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImageBuilder"
11810
+ "fqn": "@cloudsnorkel/cdk-github-runners.IConfigurableRunnerImageBuilder"
11580
11811
  }
11581
11812
  },
11582
11813
  "static": true
@@ -11589,14 +11820,12 @@
11589
11820
  },
11590
11821
  "locationInModule": {
11591
11822
  "filename": "src/image-builders/common.ts",
11592
- "line": 307
11823
+ "line": 323
11593
11824
  },
11594
11825
  "name": "addComponent",
11826
+ "overrides": "@cloudsnorkel/cdk-github-runners.IConfigurableRunnerImageBuilder",
11595
11827
  "parameters": [
11596
11828
  {
11597
- "docs": {
11598
- "summary": "component to add."
11599
- },
11600
11829
  "name": "component",
11601
11830
  "type": {
11602
11831
  "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImageComponent"
@@ -11613,7 +11842,7 @@
11613
11842
  },
11614
11843
  "locationInModule": {
11615
11844
  "filename": "src/image-builders/common.ts",
11616
- "line": 297
11845
+ "line": 318
11617
11846
  },
11618
11847
  "name": "bindAmi",
11619
11848
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder",
@@ -11632,7 +11861,7 @@
11632
11861
  },
11633
11862
  "locationInModule": {
11634
11863
  "filename": "src/image-builders/common.ts",
11635
- "line": 295
11864
+ "line": 316
11636
11865
  },
11637
11866
  "name": "bindDockerImage",
11638
11867
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder",
@@ -11650,14 +11879,12 @@
11650
11879
  },
11651
11880
  "locationInModule": {
11652
11881
  "filename": "src/image-builders/common.ts",
11653
- "line": 316
11882
+ "line": 327
11654
11883
  },
11655
11884
  "name": "removeComponent",
11885
+ "overrides": "@cloudsnorkel/cdk-github-runners.IConfigurableRunnerImageBuilder",
11656
11886
  "parameters": [
11657
11887
  {
11658
- "docs": {
11659
- "summary": "component to remove."
11660
- },
11661
11888
  "name": "component",
11662
11889
  "type": {
11663
11890
  "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImageComponent"
@@ -11677,7 +11904,7 @@
11677
11904
  "immutable": true,
11678
11905
  "locationInModule": {
11679
11906
  "filename": "src/image-builders/common.ts",
11680
- "line": 299
11907
+ "line": 320
11681
11908
  },
11682
11909
  "name": "connections",
11683
11910
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -11694,7 +11921,7 @@
11694
11921
  "immutable": true,
11695
11922
  "locationInModule": {
11696
11923
  "filename": "src/image-builders/common.ts",
11697
- "line": 300
11924
+ "line": 321
11698
11925
  },
11699
11926
  "name": "grantPrincipal",
11700
11927
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -11708,7 +11935,7 @@
11708
11935
  },
11709
11936
  "locationInModule": {
11710
11937
  "filename": "src/image-builders/common.ts",
11711
- "line": 285
11938
+ "line": 306
11712
11939
  },
11713
11940
  "name": "components",
11714
11941
  "protected": true,
@@ -12452,7 +12679,7 @@
12452
12679
  {
12453
12680
  "abstract": true,
12454
12681
  "docs": {
12455
- "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 }",
12456
12683
  "stability": "experimental",
12457
12684
  "summary": "Component name."
12458
12685
  },
@@ -12555,7 +12782,7 @@
12555
12782
  "docs": {
12556
12783
  "remarks": "Name must only contain alphanumeric characters and dashes.",
12557
12784
  "stability": "experimental",
12558
- "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 }."
12559
12786
  },
12560
12787
  "immutable": true,
12561
12788
  "locationInModule": {
@@ -13359,6 +13586,6 @@
13359
13586
  "symbolId": "src/image-builders/aws-image-builder/deprecated/windows-components:WindowsComponents"
13360
13587
  }
13361
13588
  },
13362
- "version": "0.11.5",
13363
- "fingerprint": "xvADLqE6lSSIwGoQiUhMIzmSH7uiKJnt0XAMeLdp1OE="
13589
+ "version": "0.12.0",
13590
+ "fingerprint": "AbRJQzeZ4BxSiUye4iKkm/ovoIAoXNQ5jbyM6AttHNs="
13364
13591
  }