@cloudsnorkel/cdk-github-runners 0.5.7 → 0.6.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 (40) hide show
  1. package/.jsii +1501 -327
  2. package/API.md +836 -186
  3. package/README.md +11 -11
  4. package/lib/index.d.ts +5 -2
  5. package/lib/index.js +7 -2
  6. package/lib/lambdas/delete-ami/index.js +130 -0
  7. package/lib/lambdas/setup/index.html +1 -1
  8. package/lib/lambdas/status/index.js +11 -1
  9. package/lib/lambdas/update-lambda/index.js +2420 -429
  10. package/lib/providers/codebuild.d.ts +6 -4
  11. package/lib/providers/codebuild.js +20 -3
  12. package/lib/providers/common.d.ts +137 -9
  13. package/lib/providers/common.js +53 -4
  14. package/lib/providers/docker-images/codebuild/linux-arm64/Dockerfile +1 -0
  15. package/lib/providers/docker-images/codebuild/linux-x64/Dockerfile +1 -0
  16. package/lib/providers/docker-images/fargate/linux-arm64/Dockerfile +1 -0
  17. package/lib/providers/docker-images/fargate/linux-x64/Dockerfile +1 -0
  18. package/lib/providers/docker-images/lambda/linux-arm64/runner.sh +2 -0
  19. package/lib/providers/docker-images/lambda/linux-x64/runner.sh +2 -0
  20. package/lib/providers/ec2.d.ts +106 -0
  21. package/lib/providers/ec2.js +252 -0
  22. package/lib/providers/fargate.d.ts +5 -3
  23. package/lib/providers/fargate.js +26 -5
  24. package/lib/providers/image-builders/ami.d.ts +131 -0
  25. package/lib/providers/image-builders/ami.js +274 -0
  26. package/lib/providers/image-builders/codebuild.js +3 -2
  27. package/lib/providers/image-builders/common.d.ts +196 -0
  28. package/lib/providers/image-builders/common.js +288 -0
  29. package/lib/providers/image-builders/container.d.ts +6 -100
  30. package/lib/providers/image-builders/container.js +41 -304
  31. package/lib/providers/image-builders/linux-components.d.ts +15 -0
  32. package/lib/providers/image-builders/linux-components.js +156 -0
  33. package/lib/providers/image-builders/static.js +3 -2
  34. package/lib/providers/image-builders/windows-components.d.ts +14 -0
  35. package/lib/providers/image-builders/windows-components.js +119 -0
  36. package/lib/providers/lambda.d.ts +5 -3
  37. package/lib/providers/lambda.js +20 -3
  38. package/lib/runner.js +8 -18
  39. package/lib/secrets.js +1 -1
  40. package/package.json +13 -13
package/.jsii CHANGED
@@ -7,7 +7,7 @@
7
7
  ]
8
8
  },
9
9
  "dependencies": {
10
- "aws-cdk-lib": "^2.29.0",
10
+ "aws-cdk-lib": "^2.50.0",
11
11
  "constructs": "^10.0.5"
12
12
  },
13
13
  "dependencyClosure": {
@@ -729,6 +729,32 @@
729
729
  }
730
730
  }
731
731
  },
732
+ "aws-cdk-lib.aws_connectcampaigns": {
733
+ "targets": {
734
+ "dotnet": {
735
+ "namespace": "Amazon.CDK.AWS.ConnectCampaigns"
736
+ },
737
+ "java": {
738
+ "package": "software.amazon.awscdk.services.connectcampaigns"
739
+ },
740
+ "python": {
741
+ "module": "aws_cdk.aws_connectcampaigns"
742
+ }
743
+ }
744
+ },
745
+ "aws-cdk-lib.aws_controltower": {
746
+ "targets": {
747
+ "dotnet": {
748
+ "namespace": "Amazon.CDK.AWS.ControlTower"
749
+ },
750
+ "java": {
751
+ "package": "software.amazon.awscdk.services.controltower"
752
+ },
753
+ "python": {
754
+ "module": "aws_cdk.aws_controltower"
755
+ }
756
+ }
757
+ },
732
758
  "aws-cdk-lib.aws_cur": {
733
759
  "targets": {
734
760
  "dotnet": {
@@ -1379,6 +1405,19 @@
1379
1405
  }
1380
1406
  }
1381
1407
  },
1408
+ "aws-cdk-lib.aws_identitystore": {
1409
+ "targets": {
1410
+ "dotnet": {
1411
+ "namespace": "Amazon.CDK.AWS.IdentityStore"
1412
+ },
1413
+ "java": {
1414
+ "package": "software.amazon.awscdk.services.identitystore"
1415
+ },
1416
+ "python": {
1417
+ "module": "aws_cdk.aws_identitystore"
1418
+ }
1419
+ }
1420
+ },
1382
1421
  "aws-cdk-lib.aws_imagebuilder": {
1383
1422
  "targets": {
1384
1423
  "dotnet": {
@@ -1496,6 +1535,19 @@
1496
1535
  }
1497
1536
  }
1498
1537
  },
1538
+ "aws-cdk-lib.aws_iotfleetwise": {
1539
+ "targets": {
1540
+ "dotnet": {
1541
+ "namespace": "Amazon.CDK.AWS.IoTFleetWise"
1542
+ },
1543
+ "java": {
1544
+ "package": "software.amazon.awscdk.services.iotfleetwise"
1545
+ },
1546
+ "python": {
1547
+ "module": "aws_cdk.aws_iotfleetwise"
1548
+ }
1549
+ }
1550
+ },
1499
1551
  "aws-cdk-lib.aws_iotsitewise": {
1500
1552
  "targets": {
1501
1553
  "dotnet": {
@@ -1847,6 +1899,19 @@
1847
1899
  }
1848
1900
  }
1849
1901
  },
1902
+ "aws-cdk-lib.aws_m2": {
1903
+ "targets": {
1904
+ "dotnet": {
1905
+ "namespace": "Amazon.CDK.AWS.M2"
1906
+ },
1907
+ "java": {
1908
+ "package": "software.amazon.awscdk.services.m2"
1909
+ },
1910
+ "python": {
1911
+ "module": "aws_cdk.aws_m2"
1912
+ }
1913
+ }
1914
+ },
1850
1915
  "aws-cdk-lib.aws_macie": {
1851
1916
  "targets": {
1852
1917
  "dotnet": {
@@ -2198,6 +2263,19 @@
2198
2263
  }
2199
2264
  }
2200
2265
  },
2266
+ "aws-cdk-lib.aws_redshiftserverless": {
2267
+ "targets": {
2268
+ "dotnet": {
2269
+ "namespace": "Amazon.CDK.AWS.RedshiftServerless"
2270
+ },
2271
+ "java": {
2272
+ "package": "software.amazon.awscdk.services.redshiftserverless"
2273
+ },
2274
+ "python": {
2275
+ "module": "aws_cdk.aws_redshiftserverless"
2276
+ }
2277
+ }
2278
+ },
2201
2279
  "aws-cdk-lib.aws_refactorspaces": {
2202
2280
  "targets": {
2203
2281
  "dotnet": {
@@ -2263,6 +2341,19 @@
2263
2341
  }
2264
2342
  }
2265
2343
  },
2344
+ "aws-cdk-lib.aws_rolesanywhere": {
2345
+ "targets": {
2346
+ "dotnet": {
2347
+ "namespace": "Amazon.CDK.AWS.RolesAnywhere"
2348
+ },
2349
+ "java": {
2350
+ "package": "software.amazon.awscdk.services.rolesanywhere"
2351
+ },
2352
+ "python": {
2353
+ "module": "aws_cdk.aws_rolesanywhere"
2354
+ }
2355
+ }
2356
+ },
2266
2357
  "aws-cdk-lib.aws_route53": {
2267
2358
  "targets": {
2268
2359
  "dotnet": {
@@ -2692,6 +2783,19 @@
2692
2783
  }
2693
2784
  }
2694
2785
  },
2786
+ "aws-cdk-lib.aws_supportapp": {
2787
+ "targets": {
2788
+ "dotnet": {
2789
+ "namespace": "Amazon.CDK.AWS.SupportApp"
2790
+ },
2791
+ "java": {
2792
+ "package": "software.amazon.awscdk.services.supportapp"
2793
+ },
2794
+ "python": {
2795
+ "module": "aws_cdk.aws_supportapp"
2796
+ }
2797
+ }
2798
+ },
2695
2799
  "aws-cdk-lib.aws_synthetics": {
2696
2800
  "targets": {
2697
2801
  "dotnet": {
@@ -3010,7 +3114,7 @@
3010
3114
  "stability": "experimental"
3011
3115
  },
3012
3116
  "homepage": "https://github.com/CloudSnorkel/cdk-github-runners.git",
3013
- "jsiiVersion": "1.70.0 (build 03c2f6f)",
3117
+ "jsiiVersion": "1.71.0 (build f1f58ae)",
3014
3118
  "keywords": [
3015
3119
  "aws",
3016
3120
  "aws-cdk",
@@ -3034,7 +3138,7 @@
3034
3138
  },
3035
3139
  "name": "@cloudsnorkel/cdk-github-runners",
3036
3140
  "readme": {
3037
- "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=java)][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\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| | CodeBuild | Fargate | Lambda |\n|------------------|----------------------------|----------------|---------------|\n| **Time limit** | 8 hours | Unlimited | 15 minutes |\n| **vCPUs** | 2, 4, 8, or 72 | 0.25 to 4 | 1 to 6 |\n| **RAM** | 3gb, 7gb, 15gb, or 145gb | 512mb to 30gb | 128mb to 10gb |\n| **Storage** | 50gb to 824gb | 20gb to 200gb | Up to 10gb |\n| **Architecture** | 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 |\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\nYou can also create your own provider by implementing `IRunnerProvider`.\n\n## Installation\n\n1. Confirm you're using CDK v2\n2. Install the appropriate package\n 1. [Python][6]\n ```\n pip install cloudsnorkel.cdk-github-runners\n ```\n 2. [TypeScript or JavaScript][7]\n ```\n npm i @cloudsnorkel/cdk-github-runners\n ```\n 3. [Java][8]\n ```xml\n <dependency>\n <groupId>com.cloudsnorkel</groupId>\n <artifactId>cdk.github.runners</artifactId>\n </dependency>\n ```\n 4. [Go][11]\n ```\n go get github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners\n ```\n 5. [.NET][12]\n ```\n dotnet add package CloudSnorkel.Cdk.Github.Runners\n ```\n3. Use `GitHubRunners` construct in your code (starting with default arguments is fine)\n4. Deploy your stack\n5. Look for the status command output similar to `aws --region us-east-1 lambda invoke --function-name status-XYZ123 status.json`\n6. Execute the status command (you may need to specify `--profile` too) and open the resulting `status.json` file\n7. 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\n8. Run status command again to confirm `github.auth.status` and `github.webhook.status` are OK\n9. Trigger a GitHub action that has a `self-hosted` label with `runs-on: [self-hosted, linux, codebuild]` or similar\n10. 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 CodeBuildRunner(this, 'codebuild runner', {\n label: 'my-codebuild',\n vpc: vpc,\n securityGroup: 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 = new CodeBuildImageBuilder(this, 'image builder', {\n dockerfilePath: FargateRunner.LINUX_X64_DOCKERFILE_PATH,\n runnerVersion: RunnerVersion.specific('2.291.0'),\n rebuildInterval: Duration.days(14),\n});\nmyBuilder.setBuildArg('EXTRA_PACKAGES', 'nginx xz-utils');\n\nconst myProvider = new FargateRunner(this, 'fargate runner', {\n label: 'customized-fargate',\n vpc: vpc,\n securityGroup: runnerSg,\n imageBuilder: myBuilder,\n});\n\n// create the runner infrastructure\nnew GitHubRunners(stack, '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 must be built with AWS Image Builder.\n\n```typescript\nconst myWindowsBuilder = new ContainerImageBuilder(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(new ImageBuilderComponent(this, 'Ninja Component',\n {\n displayName: 'Ninja',\n description: 'Download and install Ninja build system',\n platform: 'Windows',\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 FargateRunner(this, 'fargate runner', {\n label: 'customized-windows-fargate',\n vpc: vpc,\n securityGroup: runnerSg,\n imageBuiler: myWindowsBuilder,\n});\n\n// create the runner infrastructure\nnew GitHubRunners(stack, 'runners', {\n providers: [myProvider],\n});\n```\n\n## Architecture\n\n![Architecture diagram](architecture.svg)\n\n## Troubleshooting\n\n1. Always start with the status function, make sure no errors are reported, and confirm all status codes are OK\n2. If jobs are stuck on pending:\n 1. Make sure `runs-on` in the workflow matches the expected labels set in the runner provider\n 2. If it happens every time, cancel the job and start it again\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 installation in `github.auth.app.installations`\n6. Check execution details of the orchestrator step function by visiting the URL in `troubleshooting.stepFunctionUrl` from `status.json`\n 1. Use the details tab to find the specific execution of the provider (Lambda, CodeBuild, Fargate, etc.)\n 2. Every step function execution should be successful, even if the runner action inside it failed\n\n## Other Options\n\n1. [philips-labs/terraform-aws-github-runner][3] if you're using Terraform\n2. [actions-runner-controller/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-action-for-github-actions\n[3]: https://github.com/philips-labs/terraform-aws-github-runner\n[4]: https://github.com/actions-runner-controller/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://search.maven.org/search?q=g:%22com.cloudsnorkel%22%20AND%20a:%22cdk.github.runners%22\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"
3141
+ "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=java)][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\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 | Lambda |\n|------------------|-------------------|----------------------------|----------------|---------------|\n| **Time limit** | Unlimited | 8 hours | Unlimited | 15 minutes |\n| **vCPUs** | Unlimited | 2, 4, 8, or 72 | 0.25 to 4 | 1 to 6 |\n| **RAM** | Unlimited | 3gb, 7gb, 15gb, or 145gb | 512mb to 30gb | 128mb to 10gb |\n| **Storage** | Unlimited | 50gb to 824gb | 20gb to 200gb | Up to 10gb |\n| **Architecture** | 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 |\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\nYou can also create your own provider by implementing `IRunnerProvider`.\n\n## Installation\n\n1. Confirm you're using CDK v2\n2. Install the appropriate package\n 1. [Python][6]\n ```\n pip install cloudsnorkel.cdk-github-runners\n ```\n 2. [TypeScript or JavaScript][7]\n ```\n npm i @cloudsnorkel/cdk-github-runners\n ```\n 3. [Java][8]\n ```xml\n <dependency>\n <groupId>com.cloudsnorkel</groupId>\n <artifactId>cdk.github.runners</artifactId>\n </dependency>\n ```\n 4. [Go][11]\n ```\n go get github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners\n ```\n 5. [.NET][12]\n ```\n dotnet add package CloudSnorkel.Cdk.Github.Runners\n ```\n3. Use `GitHubRunners` construct in your code (starting with default arguments is fine)\n4. Deploy your stack\n5. Look for the status command output similar to `aws --region us-east-1 lambda invoke --function-name status-XYZ123 status.json`\n6. Execute the status command (you may need to specify `--profile` too) and open the resulting `status.json` file\n7. 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\n8. Run status command again to confirm `github.auth.status` and `github.webhook.status` are OK\n9. Trigger a GitHub action that has a `self-hosted` label with `runs-on: [self-hosted, linux, codebuild]` or similar\n10. 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 CodeBuildRunner(this, 'codebuild runner', {\n label: 'my-codebuild',\n vpc: vpc,\n securityGroup: 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 = new CodeBuildImageBuilder(this, 'image builder', {\n dockerfilePath: FargateRunner.LINUX_X64_DOCKERFILE_PATH,\n runnerVersion: RunnerVersion.specific('2.291.0'),\n rebuildInterval: Duration.days(14),\n});\nmyBuilder.setBuildArg('EXTRA_PACKAGES', 'nginx xz-utils');\n\nconst myProvider = new FargateRunner(this, 'fargate runner', {\n label: 'customized-fargate',\n vpc: vpc,\n securityGroup: runnerSg,\n imageBuilder: myBuilder,\n});\n\n// create the runner infrastructure\nnew GitHubRunners(stack, '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 must be built with AWS Image Builder.\n\n```typescript\nconst myWindowsBuilder = new ContainerImageBuilder(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(new ImageBuilderComponent(this, 'Ninja Component',\n {\n displayName: 'Ninja',\n description: 'Download and install Ninja build system',\n platform: 'Windows',\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 FargateRunner(this, 'fargate runner', {\n label: 'customized-windows-fargate',\n vpc: vpc,\n securityGroup: runnerSg,\n imageBuiler: myWindowsBuilder,\n});\n\n// create the runner infrastructure\nnew GitHubRunners(stack, 'runners', {\n providers: [myProvider],\n});\n```\n\n## Architecture\n\n![Architecture diagram](architecture.svg)\n\n## Troubleshooting\n\n1. Always start with the status function, make sure no errors are reported, and confirm all status codes are OK\n2. If jobs are stuck on pending:\n 1. Make sure `runs-on` in the workflow matches the expected labels set in the runner provider\n 2. If it happens every time, cancel the job and start it again\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 installation in `github.auth.app.installations`\n6. Check execution details of the orchestrator step function by visiting the URL in `troubleshooting.stepFunctionUrl` from `status.json`\n 1. Use the details tab to find the specific execution of the provider (Lambda, CodeBuild, Fargate, etc.)\n 2. Every step function execution should be successful, even if the runner action inside it failed\n\n## Other Options\n\n1. [philips-labs/terraform-aws-github-runner][3] if you're using Terraform\n2. [actions-runner-controller/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-action-for-github-actions\n[3]: https://github.com/philips-labs/terraform-aws-github-runner\n[4]: https://github.com/actions-runner-controller/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://search.maven.org/search?q=g:%22com.cloudsnorkel%22%20AND%20a:%22cdk.github.runners%22\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"
3038
3142
  },
3039
3143
  "repository": {
3040
3144
  "type": "git",
@@ -3075,9 +3179,36 @@
3075
3179
  "kind": "class",
3076
3180
  "locationInModule": {
3077
3181
  "filename": "src/providers/common.ts",
3078
- "line": 33
3182
+ "line": 42
3079
3183
  },
3080
3184
  "methods": [
3185
+ {
3186
+ "docs": {
3187
+ "stability": "experimental",
3188
+ "summary": "Checks if a given EC2 instance type matches this architecture."
3189
+ },
3190
+ "locationInModule": {
3191
+ "filename": "src/providers/common.ts",
3192
+ "line": 88
3193
+ },
3194
+ "name": "instanceTypeMatch",
3195
+ "parameters": [
3196
+ {
3197
+ "docs": {
3198
+ "summary": "instance type to check."
3199
+ },
3200
+ "name": "instanceType",
3201
+ "type": {
3202
+ "fqn": "aws-cdk-lib.aws_ec2.InstanceType"
3203
+ }
3204
+ }
3205
+ ],
3206
+ "returns": {
3207
+ "type": {
3208
+ "primitive": "boolean"
3209
+ }
3210
+ }
3211
+ },
3081
3212
  {
3082
3213
  "docs": {
3083
3214
  "stability": "experimental",
@@ -3085,7 +3216,7 @@
3085
3216
  },
3086
3217
  "locationInModule": {
3087
3218
  "filename": "src/providers/common.ts",
3088
- "line": 56
3219
+ "line": 65
3089
3220
  },
3090
3221
  "name": "is",
3091
3222
  "parameters": [
@@ -3104,6 +3235,38 @@
3104
3235
  "primitive": "boolean"
3105
3236
  }
3106
3237
  }
3238
+ },
3239
+ {
3240
+ "docs": {
3241
+ "stability": "experimental",
3242
+ "summary": "Checks if this architecture is in a given list."
3243
+ },
3244
+ "locationInModule": {
3245
+ "filename": "src/providers/common.ts",
3246
+ "line": 74
3247
+ },
3248
+ "name": "isIn",
3249
+ "parameters": [
3250
+ {
3251
+ "docs": {
3252
+ "summary": "architectures to check."
3253
+ },
3254
+ "name": "arches",
3255
+ "type": {
3256
+ "collection": {
3257
+ "elementtype": {
3258
+ "fqn": "@cloudsnorkel/cdk-github-runners.Architecture"
3259
+ },
3260
+ "kind": "array"
3261
+ }
3262
+ }
3263
+ }
3264
+ ],
3265
+ "returns": {
3266
+ "type": {
3267
+ "primitive": "boolean"
3268
+ }
3269
+ }
3107
3270
  }
3108
3271
  ],
3109
3272
  "name": "Architecture",
@@ -3117,7 +3280,7 @@
3117
3280
  "immutable": true,
3118
3281
  "locationInModule": {
3119
3282
  "filename": "src/providers/common.ts",
3120
- "line": 37
3283
+ "line": 46
3121
3284
  },
3122
3285
  "name": "ARM64",
3123
3286
  "static": true,
@@ -3134,7 +3297,7 @@
3134
3297
  "immutable": true,
3135
3298
  "locationInModule": {
3136
3299
  "filename": "src/providers/common.ts",
3137
- "line": 42
3300
+ "line": 51
3138
3301
  },
3139
3302
  "name": "X86_64",
3140
3303
  "static": true,
@@ -3149,7 +3312,7 @@
3149
3312
  "immutable": true,
3150
3313
  "locationInModule": {
3151
3314
  "filename": "src/providers/common.ts",
3152
- "line": 48
3315
+ "line": 57
3153
3316
  },
3154
3317
  "name": "name",
3155
3318
  "type": {
@@ -3639,7 +3802,7 @@
3639
3802
  "docs": {
3640
3803
  "remarks": "Creates a project that gets started for each job.\n\nThis construct is not meant to be used by itself. It should be passed in the providers property for GitHubRunners.",
3641
3804
  "stability": "experimental",
3642
- "summary": "GitHub Actions runner provider using CodeBuild to execute the actions."
3805
+ "summary": "GitHub Actions runner provider using CodeBuild to execute jobs."
3643
3806
  },
3644
3807
  "fqn": "@cloudsnorkel/cdk-github-runners.CodeBuildRunner",
3645
3808
  "initializer": {
@@ -3648,7 +3811,7 @@
3648
3811
  },
3649
3812
  "locationInModule": {
3650
3813
  "filename": "src/providers/codebuild.ts",
3651
- "line": 150
3814
+ "line": 160
3652
3815
  },
3653
3816
  "parameters": [
3654
3817
  {
@@ -3677,7 +3840,7 @@
3677
3840
  "kind": "class",
3678
3841
  "locationInModule": {
3679
3842
  "filename": "src/providers/codebuild.ts",
3680
- "line": 93
3843
+ "line": 103
3681
3844
  },
3682
3845
  "methods": [
3683
3846
  {
@@ -3688,7 +3851,7 @@
3688
3851
  },
3689
3852
  "locationInModule": {
3690
3853
  "filename": "src/providers/codebuild.ts",
3691
- "line": 263
3854
+ "line": 273
3692
3855
  },
3693
3856
  "name": "getStepFunctionTask",
3694
3857
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -3709,13 +3872,34 @@
3709
3872
  }
3710
3873
  }
3711
3874
  },
3875
+ {
3876
+ "docs": {
3877
+ "remarks": "This can be used to add additional policy\nstatements to the state machine role that are not automatically added by the task returned from {@link getStepFunctionTask}.",
3878
+ "stability": "experimental",
3879
+ "summary": "An optional method that modifies the role of the state machine after all the tasks have been generated."
3880
+ },
3881
+ "locationInModule": {
3882
+ "filename": "src/providers/codebuild.ts",
3883
+ "line": 310
3884
+ },
3885
+ "name": "grantStateMachine",
3886
+ "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
3887
+ "parameters": [
3888
+ {
3889
+ "name": "_",
3890
+ "type": {
3891
+ "fqn": "aws-cdk-lib.aws_iam.IGrantable"
3892
+ }
3893
+ }
3894
+ ]
3895
+ },
3712
3896
  {
3713
3897
  "docs": {
3714
3898
  "stability": "experimental"
3715
3899
  },
3716
3900
  "locationInModule": {
3717
3901
  "filename": "src/providers/common.ts",
3718
- "line": 253
3902
+ "line": 426
3719
3903
  },
3720
3904
  "name": "labelsFromProperties",
3721
3905
  "parameters": [
@@ -3756,6 +3940,32 @@
3756
3940
  }
3757
3941
  }
3758
3942
  }
3943
+ },
3944
+ {
3945
+ "docs": {
3946
+ "remarks": "Also gives the status function any needed permissions to query the Docker image or AMI.",
3947
+ "stability": "experimental",
3948
+ "summary": "Return status of the runner provider to be used in the main status function."
3949
+ },
3950
+ "locationInModule": {
3951
+ "filename": "src/providers/codebuild.ts",
3952
+ "line": 313
3953
+ },
3954
+ "name": "status",
3955
+ "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
3956
+ "parameters": [
3957
+ {
3958
+ "name": "statusFunctionRole",
3959
+ "type": {
3960
+ "fqn": "aws-cdk-lib.aws_iam.IGrantable"
3961
+ }
3962
+ }
3963
+ ],
3964
+ "returns": {
3965
+ "type": {
3966
+ "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus"
3967
+ }
3968
+ }
3759
3969
  }
3760
3970
  ],
3761
3971
  "name": "CodeBuildRunner",
@@ -3770,7 +3980,7 @@
3770
3980
  "immutable": true,
3771
3981
  "locationInModule": {
3772
3982
  "filename": "src/providers/codebuild.ts",
3773
- "line": 118
3983
+ "line": 128
3774
3984
  },
3775
3985
  "name": "LINUX_ARM64_DOCKERFILE_PATH",
3776
3986
  "static": true,
@@ -3788,7 +3998,7 @@
3788
3998
  "immutable": true,
3789
3999
  "locationInModule": {
3790
4000
  "filename": "src/providers/codebuild.ts",
3791
- "line": 105
4001
+ "line": 115
3792
4002
  },
3793
4003
  "name": "LINUX_X64_DOCKERFILE_PATH",
3794
4004
  "static": true,
@@ -3804,7 +4014,7 @@
3804
4014
  "immutable": true,
3805
4015
  "locationInModule": {
3806
4016
  "filename": "src/providers/codebuild.ts",
3807
- "line": 303
4017
+ "line": 333
3808
4018
  },
3809
4019
  "name": "connections",
3810
4020
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -3820,7 +4030,7 @@
3820
4030
  "immutable": true,
3821
4031
  "locationInModule": {
3822
4032
  "filename": "src/providers/codebuild.ts",
3823
- "line": 143
4033
+ "line": 153
3824
4034
  },
3825
4035
  "name": "grantPrincipal",
3826
4036
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -3830,16 +4040,16 @@
3830
4040
  },
3831
4041
  {
3832
4042
  "docs": {
4043
+ "remarks": "The image is built by an image builder and is specific to CodeBuild.",
3833
4044
  "stability": "experimental",
3834
- "summary": "Docker image in CodeBuild project."
4045
+ "summary": "Docker image loaded with GitHub Actions Runner and its prerequisites."
3835
4046
  },
3836
4047
  "immutable": true,
3837
4048
  "locationInModule": {
3838
4049
  "filename": "src/providers/codebuild.ts",
3839
- "line": 148
4050
+ "line": 158
3840
4051
  },
3841
4052
  "name": "image",
3842
- "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
3843
4053
  "type": {
3844
4054
  "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImage"
3845
4055
  }
@@ -3852,7 +4062,7 @@
3852
4062
  "immutable": true,
3853
4063
  "locationInModule": {
3854
4064
  "filename": "src/providers/codebuild.ts",
3855
- "line": 128
4065
+ "line": 138
3856
4066
  },
3857
4067
  "name": "labels",
3858
4068
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -3873,7 +4083,7 @@
3873
4083
  "immutable": true,
3874
4084
  "locationInModule": {
3875
4085
  "filename": "src/providers/codebuild.ts",
3876
- "line": 123
4086
+ "line": 133
3877
4087
  },
3878
4088
  "name": "project",
3879
4089
  "type": {
@@ -3888,7 +4098,7 @@
3888
4098
  "immutable": true,
3889
4099
  "locationInModule": {
3890
4100
  "filename": "src/providers/codebuild.ts",
3891
- "line": 138
4101
+ "line": 148
3892
4102
  },
3893
4103
  "name": "securityGroup",
3894
4104
  "optional": true,
@@ -3905,7 +4115,7 @@
3905
4115
  "immutable": true,
3906
4116
  "locationInModule": {
3907
4117
  "filename": "src/providers/codebuild.ts",
3908
- "line": 133
4118
+ "line": 143
3909
4119
  },
3910
4120
  "name": "vpc",
3911
4121
  "optional": true,
@@ -3930,7 +4140,7 @@
3930
4140
  "kind": "interface",
3931
4141
  "locationInModule": {
3932
4142
  "filename": "src/providers/codebuild.ts",
3933
- "line": 20
4143
+ "line": 30
3934
4144
  },
3935
4145
  "name": "CodeBuildRunnerProps",
3936
4146
  "properties": [
@@ -3945,7 +4155,7 @@
3945
4155
  "immutable": true,
3946
4156
  "locationInModule": {
3947
4157
  "filename": "src/providers/codebuild.ts",
3948
- "line": 74
4158
+ "line": 84
3949
4159
  },
3950
4160
  "name": "computeType",
3951
4161
  "optional": true,
@@ -3959,12 +4169,12 @@
3959
4169
  "default": "image builder with `CodeBuildRunner.LINUX_X64_DOCKERFILE_PATH` as Dockerfile",
3960
4170
  "remarks": "A user named `runner` is expected to exist with access to Docker-in-Docker.",
3961
4171
  "stability": "experimental",
3962
- "summary": "Provider running an image to run inside CodeBuild with GitHub runner pre-configured."
4172
+ "summary": "Image builder for CodeBuild image with GitHub runner pre-configured."
3963
4173
  },
3964
4174
  "immutable": true,
3965
4175
  "locationInModule": {
3966
4176
  "filename": "src/providers/codebuild.ts",
3967
- "line": 26
4177
+ "line": 36
3968
4178
  },
3969
4179
  "name": "imageBuilder",
3970
4180
  "optional": true,
@@ -3983,7 +4193,7 @@
3983
4193
  "immutable": true,
3984
4194
  "locationInModule": {
3985
4195
  "filename": "src/providers/codebuild.ts",
3986
- "line": 34
4196
+ "line": 44
3987
4197
  },
3988
4198
  "name": "label",
3989
4199
  "optional": true,
@@ -4002,7 +4212,7 @@
4002
4212
  "immutable": true,
4003
4213
  "locationInModule": {
4004
4214
  "filename": "src/providers/codebuild.ts",
4005
- "line": 45
4215
+ "line": 55
4006
4216
  },
4007
4217
  "name": "labels",
4008
4218
  "optional": true,
@@ -4025,7 +4235,7 @@
4025
4235
  "immutable": true,
4026
4236
  "locationInModule": {
4027
4237
  "filename": "src/providers/codebuild.ts",
4028
- "line": 59
4238
+ "line": 69
4029
4239
  },
4030
4240
  "name": "securityGroup",
4031
4241
  "optional": true,
@@ -4043,7 +4253,7 @@
4043
4253
  "immutable": true,
4044
4254
  "locationInModule": {
4045
4255
  "filename": "src/providers/codebuild.ts",
4046
- "line": 66
4256
+ "line": 76
4047
4257
  },
4048
4258
  "name": "subnetSelection",
4049
4259
  "optional": true,
@@ -4062,7 +4272,7 @@
4062
4272
  "immutable": true,
4063
4273
  "locationInModule": {
4064
4274
  "filename": "src/providers/codebuild.ts",
4065
- "line": 83
4275
+ "line": 93
4066
4276
  },
4067
4277
  "name": "timeout",
4068
4278
  "optional": true,
@@ -4080,7 +4290,7 @@
4080
4290
  "immutable": true,
4081
4291
  "locationInModule": {
4082
4292
  "filename": "src/providers/codebuild.ts",
4083
- "line": 52
4293
+ "line": 62
4084
4294
  },
4085
4295
  "name": "vpc",
4086
4296
  "optional": true,
@@ -4095,9 +4305,9 @@
4095
4305
  "assembly": "@cloudsnorkel/cdk-github-runners",
4096
4306
  "base": "constructs.Construct",
4097
4307
  "docs": {
4098
- "remarks": "Builders can be used with runner providers.\n\nThe CodeBuild builder is better and faster. Only use this one if you have no choice. For example, if you need Windows containers.\n\nEach builder re-runs automatically at a set interval to make sure the images contain the latest versions of everything.\n\nYou can create an instance of this construct to customize the image used to spin-up runners. Some runner providers may require custom components. Check the runner provider documentation. The default components work with CodeBuild and Fargate.\n\nFor example, to set a specific runner version, rebuild the image every 2 weeks, and add a few packages for the Fargate provider, use:\n\n```\nconst builder = new ContainerImageBuilder(this, 'Builder', {\n runnerVersion: RunnerVersion.specific('2.293.0'),\n rebuildInterval: Duration.days(14),\n});\nnew CodeBuildRunner(this, 'CodeBuild provider', {\n label: 'windows-codebuild',\n imageBuilder: builder,\n});\n```",
4308
+ "remarks": "Builders can be used with runner providers.\n\nThe CodeBuild builder is better and faster. Only use this one if you have no choice. For example, if you need Windows containers.\n\nEach builder re-runs automatically at a set interval to make sure the images contain the latest versions of everything.\n\nYou can create an instance of this construct to customize the image used to spin-up runners. Some runner providers may require custom components. Check the runner provider documentation. The default components work with CodeBuild and Fargate.\n\nFor example, to set a specific runner version, rebuild the image every 2 weeks, and add a few packages for the Fargate provider, use:\n\n```\nconst builder = new ContainerImageBuilder(this, 'Builder', {\n runnerVersion: RunnerVersion.specific('2.293.0'),\n rebuildInterval: Duration.days(14),\n});\nnew CodeBuildRunner(this, 'CodeBuild provider', {\n label: 'custom-codebuild',\n imageBuilder: builder,\n});\n```",
4099
4309
  "stability": "experimental",
4100
- "summary": "An image builder that uses Image Builder to build Docker images pre-baked with all the GitHub Actions runner requirements."
4310
+ "summary": "An image builder that uses AWS Image Builder to build Docker images pre-baked with all the GitHub Actions runner requirements."
4101
4311
  },
4102
4312
  "fqn": "@cloudsnorkel/cdk-github-runners.ContainerImageBuilder",
4103
4313
  "initializer": {
@@ -4106,7 +4316,7 @@
4106
4316
  },
4107
4317
  "locationInModule": {
4108
4318
  "filename": "src/providers/image-builders/container.ts",
4109
- "line": 451
4319
+ "line": 221
4110
4320
  },
4111
4321
  "parameters": [
4112
4322
  {
@@ -4136,7 +4346,7 @@
4136
4346
  "kind": "class",
4137
4347
  "locationInModule": {
4138
4348
  "filename": "src/providers/image-builders/container.ts",
4139
- "line": 430
4349
+ "line": 216
4140
4350
  },
4141
4351
  "methods": [
4142
4352
  {
@@ -4146,7 +4356,7 @@
4146
4356
  },
4147
4357
  "locationInModule": {
4148
4358
  "filename": "src/providers/image-builders/container.ts",
4149
- "line": 595
4359
+ "line": 283
4150
4360
  },
4151
4361
  "name": "addComponent",
4152
4362
  "parameters": [
@@ -4166,7 +4376,7 @@
4166
4376
  },
4167
4377
  "locationInModule": {
4168
4378
  "filename": "src/providers/image-builders/container.ts",
4169
- "line": 612
4379
+ "line": 300
4170
4380
  },
4171
4381
  "name": "addExtraCertificates",
4172
4382
  "parameters": [
@@ -4188,7 +4398,7 @@
4188
4398
  },
4189
4399
  "locationInModule": {
4190
4400
  "filename": "src/providers/image-builders/container.ts",
4191
- "line": 633
4401
+ "line": 321
4192
4402
  },
4193
4403
  "name": "bind",
4194
4404
  "overrides": "@cloudsnorkel/cdk-github-runners.IImageBuilder",
@@ -4200,71 +4410,104 @@
4200
4410
  },
4201
4411
  {
4202
4412
  "docs": {
4203
- "remarks": "Useful for required system settings like certificates or proxy settings.",
4204
- "stability": "experimental",
4205
- "summary": "Add a component to be installed before any other components."
4413
+ "stability": "experimental"
4206
4414
  },
4207
4415
  "locationInModule": {
4208
- "filename": "src/providers/image-builders/container.ts",
4209
- "line": 581
4416
+ "filename": "src/providers/image-builders/common.ts",
4417
+ "line": 446
4210
4418
  },
4211
- "name": "prependComponent",
4419
+ "name": "createImage",
4212
4420
  "parameters": [
4213
4421
  {
4214
- "name": "component",
4422
+ "name": "infra",
4215
4423
  "type": {
4216
- "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"
4424
+ "fqn": "aws-cdk-lib.aws_imagebuilder.CfnInfrastructureConfiguration"
4425
+ }
4426
+ },
4427
+ {
4428
+ "name": "dist",
4429
+ "type": {
4430
+ "fqn": "aws-cdk-lib.aws_imagebuilder.CfnDistributionConfiguration"
4431
+ }
4432
+ },
4433
+ {
4434
+ "name": "log",
4435
+ "type": {
4436
+ "fqn": "aws-cdk-lib.aws_logs.LogGroup"
4437
+ }
4438
+ },
4439
+ {
4440
+ "name": "imageRecipeArn",
4441
+ "optional": true,
4442
+ "type": {
4443
+ "primitive": "string"
4444
+ }
4445
+ },
4446
+ {
4447
+ "name": "containerRecipeArn",
4448
+ "optional": true,
4449
+ "type": {
4450
+ "primitive": "string"
4217
4451
  }
4218
4452
  }
4219
- ]
4220
- }
4221
- ],
4222
- "name": "ContainerImageBuilder",
4223
- "properties": [
4224
- {
4225
- "docs": {
4226
- "stability": "experimental"
4227
- },
4228
- "immutable": true,
4229
- "locationInModule": {
4230
- "filename": "src/providers/image-builders/container.ts",
4231
- "line": 431
4232
- },
4233
- "name": "architecture",
4234
- "type": {
4235
- "fqn": "@cloudsnorkel/cdk-github-runners.Architecture"
4453
+ ],
4454
+ "protected": true,
4455
+ "returns": {
4456
+ "type": {
4457
+ "fqn": "aws-cdk-lib.aws_imagebuilder.CfnImage"
4458
+ }
4236
4459
  }
4237
4460
  },
4238
4461
  {
4239
4462
  "docs": {
4240
4463
  "stability": "experimental"
4241
4464
  },
4242
- "immutable": true,
4243
4465
  "locationInModule": {
4244
- "filename": "src/providers/image-builders/container.ts",
4245
- "line": 435
4466
+ "filename": "src/providers/image-builders/common.ts",
4467
+ "line": 422
4246
4468
  },
4247
- "name": "description",
4248
- "type": {
4249
- "primitive": "string"
4469
+ "name": "createInfrastructure",
4470
+ "parameters": [
4471
+ {
4472
+ "name": "managedPolicies",
4473
+ "type": {
4474
+ "collection": {
4475
+ "elementtype": {
4476
+ "fqn": "aws-cdk-lib.aws_iam.IManagedPolicy"
4477
+ },
4478
+ "kind": "array"
4479
+ }
4480
+ }
4481
+ }
4482
+ ],
4483
+ "protected": true,
4484
+ "returns": {
4485
+ "type": {
4486
+ "fqn": "aws-cdk-lib.aws_imagebuilder.CfnInfrastructureConfiguration"
4487
+ }
4250
4488
  }
4251
4489
  },
4252
4490
  {
4253
4491
  "docs": {
4254
4492
  "stability": "experimental"
4255
4493
  },
4256
- "immutable": true,
4257
4494
  "locationInModule": {
4258
- "filename": "src/providers/image-builders/container.ts",
4259
- "line": 446
4495
+ "filename": "src/providers/image-builders/common.ts",
4496
+ "line": 414
4260
4497
  },
4261
- "name": "instanceTypes",
4262
- "type": {
4263
- "collection": {
4264
- "elementtype": {
4498
+ "name": "createLog",
4499
+ "parameters": [
4500
+ {
4501
+ "name": "recipeName",
4502
+ "type": {
4265
4503
  "primitive": "string"
4266
- },
4267
- "kind": "array"
4504
+ }
4505
+ }
4506
+ ],
4507
+ "protected": true,
4508
+ "returns": {
4509
+ "type": {
4510
+ "fqn": "aws-cdk-lib.aws_logs.LogGroup"
4268
4511
  }
4269
4512
  }
4270
4513
  },
@@ -4272,28 +4515,88 @@
4272
4515
  "docs": {
4273
4516
  "stability": "experimental"
4274
4517
  },
4275
- "immutable": true,
4276
4518
  "locationInModule": {
4277
- "filename": "src/providers/image-builders/container.ts",
4278
- "line": 449
4519
+ "filename": "src/providers/image-builders/common.ts",
4520
+ "line": 463
4279
4521
  },
4280
- "name": "logRemovalPolicy",
4281
- "type": {
4282
- "fqn": "aws-cdk-lib.RemovalPolicy"
4522
+ "name": "createPipeline",
4523
+ "parameters": [
4524
+ {
4525
+ "name": "infra",
4526
+ "type": {
4527
+ "fqn": "aws-cdk-lib.aws_imagebuilder.CfnInfrastructureConfiguration"
4528
+ }
4529
+ },
4530
+ {
4531
+ "name": "dist",
4532
+ "type": {
4533
+ "fqn": "aws-cdk-lib.aws_imagebuilder.CfnDistributionConfiguration"
4534
+ }
4535
+ },
4536
+ {
4537
+ "name": "log",
4538
+ "type": {
4539
+ "fqn": "aws-cdk-lib.aws_logs.LogGroup"
4540
+ }
4541
+ },
4542
+ {
4543
+ "name": "imageRecipeArn",
4544
+ "optional": true,
4545
+ "type": {
4546
+ "primitive": "string"
4547
+ }
4548
+ },
4549
+ {
4550
+ "name": "containerRecipeArn",
4551
+ "optional": true,
4552
+ "type": {
4553
+ "primitive": "string"
4554
+ }
4555
+ }
4556
+ ],
4557
+ "protected": true,
4558
+ "returns": {
4559
+ "type": {
4560
+ "fqn": "aws-cdk-lib.aws_imagebuilder.CfnImagePipeline"
4561
+ }
4283
4562
  }
4284
4563
  },
4564
+ {
4565
+ "docs": {
4566
+ "remarks": "Useful for required system settings like certificates or proxy settings.",
4567
+ "stability": "experimental",
4568
+ "summary": "Add a component to be installed before any other components."
4569
+ },
4570
+ "locationInModule": {
4571
+ "filename": "src/providers/image-builders/container.ts",
4572
+ "line": 269
4573
+ },
4574
+ "name": "prependComponent",
4575
+ "parameters": [
4576
+ {
4577
+ "name": "component",
4578
+ "type": {
4579
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"
4580
+ }
4581
+ }
4582
+ ]
4583
+ }
4584
+ ],
4585
+ "name": "ContainerImageBuilder",
4586
+ "properties": [
4285
4587
  {
4286
4588
  "docs": {
4287
4589
  "stability": "experimental"
4288
4590
  },
4289
4591
  "immutable": true,
4290
4592
  "locationInModule": {
4291
- "filename": "src/providers/image-builders/container.ts",
4292
- "line": 448
4593
+ "filename": "src/providers/image-builders/common.ts",
4594
+ "line": 343
4293
4595
  },
4294
- "name": "logRetention",
4596
+ "name": "architecture",
4597
+ "protected": true,
4295
4598
  "type": {
4296
- "fqn": "aws-cdk-lib.aws_logs.RetentionDays"
4599
+ "fqn": "@cloudsnorkel/cdk-github-runners.Architecture"
4297
4600
  }
4298
4601
  },
4299
4602
  {
@@ -4302,12 +4605,13 @@
4302
4605
  },
4303
4606
  "immutable": true,
4304
4607
  "locationInModule": {
4305
- "filename": "src/providers/image-builders/container.ts",
4306
- "line": 432
4608
+ "filename": "src/providers/image-builders/common.ts",
4609
+ "line": 347
4307
4610
  },
4308
- "name": "os",
4611
+ "name": "description",
4612
+ "protected": true,
4309
4613
  "type": {
4310
- "fqn": "@cloudsnorkel/cdk-github-runners.Os"
4614
+ "primitive": "string"
4311
4615
  }
4312
4616
  },
4313
4617
  {
@@ -4316,12 +4620,13 @@
4316
4620
  },
4317
4621
  "immutable": true,
4318
4622
  "locationInModule": {
4319
- "filename": "src/providers/image-builders/container.ts",
4320
- "line": 433
4623
+ "filename": "src/providers/image-builders/common.ts",
4624
+ "line": 344
4321
4625
  },
4322
- "name": "platform",
4626
+ "name": "os",
4627
+ "protected": true,
4323
4628
  "type": {
4324
- "primitive": "string"
4629
+ "fqn": "@cloudsnorkel/cdk-github-runners.Os"
4325
4630
  }
4326
4631
  },
4327
4632
  {
@@ -4330,12 +4635,13 @@
4330
4635
  },
4331
4636
  "immutable": true,
4332
4637
  "locationInModule": {
4333
- "filename": "src/providers/image-builders/container.ts",
4334
- "line": 447
4638
+ "filename": "src/providers/image-builders/common.ts",
4639
+ "line": 345
4335
4640
  },
4336
- "name": "rebuildInterval",
4641
+ "name": "platform",
4642
+ "protected": true,
4337
4643
  "type": {
4338
- "fqn": "aws-cdk-lib.Duration"
4644
+ "primitive": "string"
4339
4645
  }
4340
4646
  },
4341
4647
  {
@@ -4345,7 +4651,7 @@
4345
4651
  "immutable": true,
4346
4652
  "locationInModule": {
4347
4653
  "filename": "src/providers/image-builders/container.ts",
4348
- "line": 439
4654
+ "line": 217
4349
4655
  },
4350
4656
  "name": "repository",
4351
4657
  "type": {
@@ -4358,10 +4664,11 @@
4358
4664
  },
4359
4665
  "immutable": true,
4360
4666
  "locationInModule": {
4361
- "filename": "src/providers/image-builders/container.ts",
4362
- "line": 437
4667
+ "filename": "src/providers/image-builders/common.ts",
4668
+ "line": 349
4363
4669
  },
4364
4670
  "name": "runnerVersion",
4671
+ "protected": true,
4365
4672
  "type": {
4366
4673
  "fqn": "@cloudsnorkel/cdk-github-runners.RunnerVersion"
4367
4674
  }
@@ -4370,36 +4677,20 @@
4370
4677
  "docs": {
4371
4678
  "stability": "experimental"
4372
4679
  },
4373
- "immutable": true,
4374
4680
  "locationInModule": {
4375
- "filename": "src/providers/image-builders/container.ts",
4376
- "line": 445
4681
+ "filename": "src/providers/image-builders/common.ts",
4682
+ "line": 351
4377
4683
  },
4378
- "name": "securityGroupIds",
4379
- "optional": true,
4684
+ "name": "components",
4685
+ "protected": true,
4380
4686
  "type": {
4381
4687
  "collection": {
4382
4688
  "elementtype": {
4383
- "primitive": "string"
4689
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"
4384
4690
  },
4385
4691
  "kind": "array"
4386
4692
  }
4387
4693
  }
4388
- },
4389
- {
4390
- "docs": {
4391
- "stability": "experimental"
4392
- },
4393
- "immutable": true,
4394
- "locationInModule": {
4395
- "filename": "src/providers/image-builders/container.ts",
4396
- "line": 444
4397
- },
4398
- "name": "subnetId",
4399
- "optional": true,
4400
- "type": {
4401
- "primitive": "string"
4402
- }
4403
4694
  }
4404
4695
  ],
4405
4696
  "symbolId": "src/providers/image-builders/container:ContainerImageBuilder"
@@ -4415,7 +4706,7 @@
4415
4706
  "kind": "interface",
4416
4707
  "locationInModule": {
4417
4708
  "filename": "src/providers/image-builders/container.ts",
4418
- "line": 28
4709
+ "line": 29
4419
4710
  },
4420
4711
  "name": "ContainerImageBuilderProps",
4421
4712
  "properties": [
@@ -4429,7 +4720,7 @@
4429
4720
  "immutable": true,
4430
4721
  "locationInModule": {
4431
4722
  "filename": "src/providers/image-builders/container.ts",
4432
- "line": 34
4723
+ "line": 35
4433
4724
  },
4434
4725
  "name": "architecture",
4435
4726
  "optional": true,
@@ -4447,7 +4738,7 @@
4447
4738
  "immutable": true,
4448
4739
  "locationInModule": {
4449
4740
  "filename": "src/providers/image-builders/container.ts",
4450
- "line": 92
4741
+ "line": 93
4451
4742
  },
4452
4743
  "name": "instanceType",
4453
4744
  "optional": true,
@@ -4466,7 +4757,7 @@
4466
4757
  "immutable": true,
4467
4758
  "locationInModule": {
4468
4759
  "filename": "src/providers/image-builders/container.ts",
4469
- "line": 110
4760
+ "line": 111
4470
4761
  },
4471
4762
  "name": "logRemovalPolicy",
4472
4763
  "optional": true,
@@ -4485,7 +4776,7 @@
4485
4776
  "immutable": true,
4486
4777
  "locationInModule": {
4487
4778
  "filename": "src/providers/image-builders/container.ts",
4488
- "line": 101
4779
+ "line": 102
4489
4780
  },
4490
4781
  "name": "logRetention",
4491
4782
  "optional": true,
@@ -4503,7 +4794,7 @@
4503
4794
  "immutable": true,
4504
4795
  "locationInModule": {
4505
4796
  "filename": "src/providers/image-builders/container.ts",
4506
- "line": 41
4797
+ "line": 42
4507
4798
  },
4508
4799
  "name": "os",
4509
4800
  "optional": true,
@@ -4522,7 +4813,7 @@
4522
4813
  "immutable": true,
4523
4814
  "locationInModule": {
4524
4815
  "filename": "src/providers/image-builders/container.ts",
4525
- "line": 48
4816
+ "line": 49
4526
4817
  },
4527
4818
  "name": "parentImage",
4528
4819
  "optional": true,
@@ -4541,7 +4832,7 @@
4541
4832
  "immutable": true,
4542
4833
  "locationInModule": {
4543
4834
  "filename": "src/providers/image-builders/container.ts",
4544
- "line": 64
4835
+ "line": 65
4545
4836
  },
4546
4837
  "name": "rebuildInterval",
4547
4838
  "optional": true,
@@ -4559,7 +4850,7 @@
4559
4850
  "immutable": true,
4560
4851
  "locationInModule": {
4561
4852
  "filename": "src/providers/image-builders/container.ts",
4562
- "line": 55
4853
+ "line": 56
4563
4854
  },
4564
4855
  "name": "runnerVersion",
4565
4856
  "optional": true,
@@ -4577,7 +4868,7 @@
4577
4868
  "immutable": true,
4578
4869
  "locationInModule": {
4579
4870
  "filename": "src/providers/image-builders/container.ts",
4580
- "line": 78
4871
+ "line": 79
4581
4872
  },
4582
4873
  "name": "securityGroup",
4583
4874
  "optional": true,
@@ -4595,7 +4886,7 @@
4595
4886
  "immutable": true,
4596
4887
  "locationInModule": {
4597
4888
  "filename": "src/providers/image-builders/container.ts",
4598
- "line": 85
4889
+ "line": 86
4599
4890
  },
4600
4891
  "name": "subnetSelection",
4601
4892
  "optional": true,
@@ -4613,7 +4904,7 @@
4613
4904
  "immutable": true,
4614
4905
  "locationInModule": {
4615
4906
  "filename": "src/providers/image-builders/container.ts",
4616
- "line": 71
4907
+ "line": 72
4617
4908
  },
4618
4909
  "name": "vpc",
4619
4910
  "optional": true,
@@ -4630,7 +4921,7 @@
4630
4921
  "docs": {
4631
4922
  "remarks": "Creates a task definition with a single container that gets started for each job.\n\nThis construct is not meant to be used by itself. It should be passed in the providers property for GitHubRunners.",
4632
4923
  "stability": "experimental",
4633
- "summary": "GitHub Actions runner provider using Fargate to execute the actions."
4924
+ "summary": "GitHub Actions runner provider using Fargate to execute jobs."
4634
4925
  },
4635
4926
  "fqn": "@cloudsnorkel/cdk-github-runners.FargateRunner",
4636
4927
  "initializer": {
@@ -4639,7 +4930,7 @@
4639
4930
  },
4640
4931
  "locationInModule": {
4641
4932
  "filename": "src/providers/fargate.ts",
4642
- "line": 263
4933
+ "line": 273
4643
4934
  },
4644
4935
  "parameters": [
4645
4936
  {
@@ -4668,7 +4959,7 @@
4668
4959
  "kind": "class",
4669
4960
  "locationInModule": {
4670
4961
  "filename": "src/providers/fargate.ts",
4671
- "line": 184
4962
+ "line": 194
4672
4963
  },
4673
4964
  "methods": [
4674
4965
  {
@@ -4679,7 +4970,7 @@
4679
4970
  },
4680
4971
  "locationInModule": {
4681
4972
  "filename": "src/providers/fargate.ts",
4682
- "line": 346
4973
+ "line": 356
4683
4974
  },
4684
4975
  "name": "getStepFunctionTask",
4685
4976
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -4700,13 +4991,34 @@
4700
4991
  }
4701
4992
  }
4702
4993
  },
4994
+ {
4995
+ "docs": {
4996
+ "remarks": "This can be used to add additional policy\nstatements to the state machine role that are not automatically added by the task returned from {@link getStepFunctionTask}.",
4997
+ "stability": "experimental",
4998
+ "summary": "An optional method that modifies the role of the state machine after all the tasks have been generated."
4999
+ },
5000
+ "locationInModule": {
5001
+ "filename": "src/providers/fargate.ts",
5002
+ "line": 406
5003
+ },
5004
+ "name": "grantStateMachine",
5005
+ "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
5006
+ "parameters": [
5007
+ {
5008
+ "name": "_",
5009
+ "type": {
5010
+ "fqn": "aws-cdk-lib.aws_iam.IGrantable"
5011
+ }
5012
+ }
5013
+ ]
5014
+ },
4703
5015
  {
4704
5016
  "docs": {
4705
5017
  "stability": "experimental"
4706
5018
  },
4707
5019
  "locationInModule": {
4708
5020
  "filename": "src/providers/common.ts",
4709
- "line": 253
5021
+ "line": 426
4710
5022
  },
4711
5023
  "name": "labelsFromProperties",
4712
5024
  "parameters": [
@@ -4747,6 +5059,32 @@
4747
5059
  }
4748
5060
  }
4749
5061
  }
5062
+ },
5063
+ {
5064
+ "docs": {
5065
+ "remarks": "Also gives the status function any needed permissions to query the Docker image or AMI.",
5066
+ "stability": "experimental",
5067
+ "summary": "Return status of the runner provider to be used in the main status function."
5068
+ },
5069
+ "locationInModule": {
5070
+ "filename": "src/providers/fargate.ts",
5071
+ "line": 409
5072
+ },
5073
+ "name": "status",
5074
+ "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
5075
+ "parameters": [
5076
+ {
5077
+ "name": "statusFunctionRole",
5078
+ "type": {
5079
+ "fqn": "aws-cdk-lib.aws_iam.IGrantable"
5080
+ }
5081
+ }
5082
+ ],
5083
+ "returns": {
5084
+ "type": {
5085
+ "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus"
5086
+ }
5087
+ }
4750
5088
  }
4751
5089
  ],
4752
5090
  "name": "FargateRunner",
@@ -4761,7 +5099,7 @@
4761
5099
  "immutable": true,
4762
5100
  "locationInModule": {
4763
5101
  "filename": "src/providers/fargate.ts",
4764
- "line": 201
5102
+ "line": 211
4765
5103
  },
4766
5104
  "name": "LINUX_ARM64_DOCKERFILE_PATH",
4767
5105
  "static": true,
@@ -4779,7 +5117,7 @@
4779
5117
  "immutable": true,
4780
5118
  "locationInModule": {
4781
5119
  "filename": "src/providers/fargate.ts",
4782
- "line": 192
5120
+ "line": 202
4783
5121
  },
4784
5122
  "name": "LINUX_X64_DOCKERFILE_PATH",
4785
5123
  "static": true,
@@ -4795,7 +5133,7 @@
4795
5133
  "immutable": true,
4796
5134
  "locationInModule": {
4797
5135
  "filename": "src/providers/fargate.ts",
4798
- "line": 241
5136
+ "line": 251
4799
5137
  },
4800
5138
  "name": "assignPublicIp",
4801
5139
  "type": {
@@ -4810,7 +5148,7 @@
4810
5148
  "immutable": true,
4811
5149
  "locationInModule": {
4812
5150
  "filename": "src/providers/fargate.ts",
4813
- "line": 206
5151
+ "line": 216
4814
5152
  },
4815
5153
  "name": "cluster",
4816
5154
  "type": {
@@ -4825,7 +5163,7 @@
4825
5163
  "immutable": true,
4826
5164
  "locationInModule": {
4827
5165
  "filename": "src/providers/fargate.ts",
4828
- "line": 251
5166
+ "line": 261
4829
5167
  },
4830
5168
  "name": "connections",
4831
5169
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -4841,7 +5179,7 @@
4841
5179
  "immutable": true,
4842
5180
  "locationInModule": {
4843
5181
  "filename": "src/providers/fargate.ts",
4844
- "line": 216
5182
+ "line": 226
4845
5183
  },
4846
5184
  "name": "container",
4847
5185
  "type": {
@@ -4856,7 +5194,7 @@
4856
5194
  "immutable": true,
4857
5195
  "locationInModule": {
4858
5196
  "filename": "src/providers/fargate.ts",
4859
- "line": 246
5197
+ "line": 256
4860
5198
  },
4861
5199
  "name": "grantPrincipal",
4862
5200
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -4866,16 +5204,16 @@
4866
5204
  },
4867
5205
  {
4868
5206
  "docs": {
5207
+ "remarks": "The image is built by an image builder and is specific to Fargate tasks.",
4869
5208
  "stability": "experimental",
4870
- "summary": "Docker image used to start a new Fargate task."
5209
+ "summary": "Docker image loaded with GitHub Actions Runner and its prerequisites."
4871
5210
  },
4872
5211
  "immutable": true,
4873
5212
  "locationInModule": {
4874
5213
  "filename": "src/providers/fargate.ts",
4875
- "line": 261
5214
+ "line": 271
4876
5215
  },
4877
5216
  "name": "image",
4878
- "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
4879
5217
  "type": {
4880
5218
  "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImage"
4881
5219
  }
@@ -4888,7 +5226,7 @@
4888
5226
  "immutable": true,
4889
5227
  "locationInModule": {
4890
5228
  "filename": "src/providers/fargate.ts",
4891
- "line": 221
5229
+ "line": 231
4892
5230
  },
4893
5231
  "name": "labels",
4894
5232
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -4909,7 +5247,7 @@
4909
5247
  "immutable": true,
4910
5248
  "locationInModule": {
4911
5249
  "filename": "src/providers/fargate.ts",
4912
- "line": 256
5250
+ "line": 266
4913
5251
  },
4914
5252
  "name": "spot",
4915
5253
  "type": {
@@ -4924,7 +5262,7 @@
4924
5262
  "immutable": true,
4925
5263
  "locationInModule": {
4926
5264
  "filename": "src/providers/fargate.ts",
4927
- "line": 211
5265
+ "line": 221
4928
5266
  },
4929
5267
  "name": "task",
4930
5268
  "type": {
@@ -4939,7 +5277,7 @@
4939
5277
  "immutable": true,
4940
5278
  "locationInModule": {
4941
5279
  "filename": "src/providers/fargate.ts",
4942
- "line": 236
5280
+ "line": 246
4943
5281
  },
4944
5282
  "name": "securityGroup",
4945
5283
  "optional": true,
@@ -4956,7 +5294,7 @@
4956
5294
  "immutable": true,
4957
5295
  "locationInModule": {
4958
5296
  "filename": "src/providers/fargate.ts",
4959
- "line": 231
5297
+ "line": 241
4960
5298
  },
4961
5299
  "name": "subnetSelection",
4962
5300
  "optional": true,
@@ -4972,7 +5310,7 @@
4972
5310
  "immutable": true,
4973
5311
  "locationInModule": {
4974
5312
  "filename": "src/providers/fargate.ts",
4975
- "line": 226
5313
+ "line": 236
4976
5314
  },
4977
5315
  "name": "vpc",
4978
5316
  "optional": true,
@@ -4998,7 +5336,7 @@
4998
5336
  "kind": "interface",
4999
5337
  "locationInModule": {
5000
5338
  "filename": "src/providers/fargate.ts",
5001
- "line": 20
5339
+ "line": 30
5002
5340
  },
5003
5341
  "name": "FargateRunnerProps",
5004
5342
  "properties": [
@@ -5013,7 +5351,7 @@
5013
5351
  "immutable": true,
5014
5352
  "locationInModule": {
5015
5353
  "filename": "src/providers/fargate.ts",
5016
- "line": 82
5354
+ "line": 92
5017
5355
  },
5018
5356
  "name": "assignPublicIp",
5019
5357
  "optional": true,
@@ -5031,7 +5369,7 @@
5031
5369
  "immutable": true,
5032
5370
  "locationInModule": {
5033
5371
  "filename": "src/providers/fargate.ts",
5034
- "line": 73
5372
+ "line": 83
5035
5373
  },
5036
5374
  "name": "cluster",
5037
5375
  "optional": true,
@@ -5050,7 +5388,7 @@
5050
5388
  "immutable": true,
5051
5389
  "locationInModule": {
5052
5390
  "filename": "src/providers/fargate.ts",
5053
- "line": 101
5391
+ "line": 111
5054
5392
  },
5055
5393
  "name": "cpu",
5056
5394
  "optional": true,
@@ -5069,7 +5407,7 @@
5069
5407
  "immutable": true,
5070
5408
  "locationInModule": {
5071
5409
  "filename": "src/providers/fargate.ts",
5072
- "line": 128
5410
+ "line": 138
5073
5411
  },
5074
5412
  "name": "ephemeralStorageGiB",
5075
5413
  "optional": true,
@@ -5088,7 +5426,7 @@
5088
5426
  "immutable": true,
5089
5427
  "locationInModule": {
5090
5428
  "filename": "src/providers/fargate.ts",
5091
- "line": 26
5429
+ "line": 36
5092
5430
  },
5093
5431
  "name": "imageBuilder",
5094
5432
  "optional": true,
@@ -5107,7 +5445,7 @@
5107
5445
  "immutable": true,
5108
5446
  "locationInModule": {
5109
5447
  "filename": "src/providers/fargate.ts",
5110
- "line": 34
5448
+ "line": 44
5111
5449
  },
5112
5450
  "name": "label",
5113
5451
  "optional": true,
@@ -5126,7 +5464,7 @@
5126
5464
  "immutable": true,
5127
5465
  "locationInModule": {
5128
5466
  "filename": "src/providers/fargate.ts",
5129
- "line": 45
5467
+ "line": 55
5130
5468
  },
5131
5469
  "name": "labels",
5132
5470
  "optional": true,
@@ -5150,7 +5488,7 @@
5150
5488
  "immutable": true,
5151
5489
  "locationInModule": {
5152
5490
  "filename": "src/providers/fargate.ts",
5153
- "line": 119
5491
+ "line": 129
5154
5492
  },
5155
5493
  "name": "memoryLimitMiB",
5156
5494
  "optional": true,
@@ -5168,7 +5506,7 @@
5168
5506
  "immutable": true,
5169
5507
  "locationInModule": {
5170
5508
  "filename": "src/providers/fargate.ts",
5171
- "line": 66
5509
+ "line": 76
5172
5510
  },
5173
5511
  "name": "securityGroup",
5174
5512
  "optional": true,
@@ -5187,7 +5525,7 @@
5187
5525
  "immutable": true,
5188
5526
  "locationInModule": {
5189
5527
  "filename": "src/providers/fargate.ts",
5190
- "line": 138
5528
+ "line": 148
5191
5529
  },
5192
5530
  "name": "spot",
5193
5531
  "optional": true,
@@ -5205,7 +5543,7 @@
5205
5543
  "immutable": true,
5206
5544
  "locationInModule": {
5207
5545
  "filename": "src/providers/fargate.ts",
5208
- "line": 59
5546
+ "line": 69
5209
5547
  },
5210
5548
  "name": "subnetSelection",
5211
5549
  "optional": true,
@@ -5223,7 +5561,7 @@
5223
5561
  "immutable": true,
5224
5562
  "locationInModule": {
5225
5563
  "filename": "src/providers/fargate.ts",
5226
- "line": 52
5564
+ "line": 62
5227
5565
  },
5228
5566
  "name": "vpc",
5229
5567
  "optional": true,
@@ -5481,7 +5819,7 @@
5481
5819
  "kind": "interface",
5482
5820
  "locationInModule": {
5483
5821
  "filename": "src/providers/common.ts",
5484
- "line": 128
5822
+ "line": 188
5485
5823
  },
5486
5824
  "methods": [
5487
5825
  {
@@ -5490,11 +5828,11 @@
5490
5828
  "remarks": "This method can be called multiple times if the image is bound to multiple providers. Make sure you cache the image when implementing or return an error if this builder doesn't support reusing images.",
5491
5829
  "returns": "image",
5492
5830
  "stability": "experimental",
5493
- "summary": "ECR repository containing the image."
5831
+ "summary": "Finalize and return all required information about the Docker image built by this builder."
5494
5832
  },
5495
5833
  "locationInModule": {
5496
5834
  "filename": "src/providers/common.ts",
5497
- "line": 136
5835
+ "line": 196
5498
5836
  },
5499
5837
  "name": "bind",
5500
5838
  "returns": {
@@ -5507,50 +5845,32 @@
5507
5845
  "name": "IImageBuilder",
5508
5846
  "symbolId": "src/providers/common:IImageBuilder"
5509
5847
  },
5510
- "@cloudsnorkel/cdk-github-runners.IRunnerImageStatus": {
5848
+ "@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus": {
5511
5849
  "assembly": "@cloudsnorkel/cdk-github-runners",
5512
5850
  "docs": {
5513
5851
  "stability": "experimental",
5514
- "summary": "Interface for runner image status used by status.json."
5852
+ "summary": "AMI status returned from runner providers to be displayed as output of status function."
5515
5853
  },
5516
- "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerImageStatus",
5854
+ "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus",
5517
5855
  "kind": "interface",
5518
5856
  "locationInModule": {
5519
5857
  "filename": "src/providers/common.ts",
5520
- "line": 192
5858
+ "line": 320
5521
5859
  },
5522
- "name": "IRunnerImageStatus",
5860
+ "name": "IRunnerAmiStatus",
5523
5861
  "properties": [
5524
5862
  {
5525
5863
  "abstract": true,
5526
5864
  "docs": {
5527
5865
  "stability": "experimental",
5528
- "summary": "Log group name for the image builder where history of image builds can be analyzed."
5529
- },
5530
- "immutable": true,
5531
- "locationInModule": {
5532
- "filename": "src/providers/common.ts",
5533
- "line": 206
5534
- },
5535
- "name": "imageBuilderLogGroup",
5536
- "optional": true,
5537
- "type": {
5538
- "primitive": "string"
5539
- }
5540
- },
5541
- {
5542
- "abstract": true,
5543
- "docs": {
5544
- "stability": "experimental",
5545
- "summary": "Image repository where runner image is pushed."
5866
+ "summary": "Id of launch template pointing to the latest AMI built by the AMI builder."
5546
5867
  },
5547
5868
  "immutable": true,
5548
5869
  "locationInModule": {
5549
5870
  "filename": "src/providers/common.ts",
5550
- "line": 196
5871
+ "line": 324
5551
5872
  },
5552
- "name": "imageRepository",
5553
- "optional": true,
5873
+ "name": "launchTemplate",
5554
5874
  "type": {
5555
5875
  "primitive": "string"
5556
5876
  }
@@ -5559,57 +5879,123 @@
5559
5879
  "abstract": true,
5560
5880
  "docs": {
5561
5881
  "stability": "experimental",
5562
- "summary": "Tag of image that should be used."
5882
+ "summary": "Log group name for the AMI builder where history of builds can be analyzed."
5563
5883
  },
5564
5884
  "immutable": true,
5565
5885
  "locationInModule": {
5566
5886
  "filename": "src/providers/common.ts",
5567
- "line": 201
5887
+ "line": 329
5568
5888
  },
5569
- "name": "imageTag",
5889
+ "name": "amiBuilderLogGroup",
5570
5890
  "optional": true,
5571
5891
  "type": {
5572
5892
  "primitive": "string"
5573
5893
  }
5574
5894
  }
5575
5895
  ],
5576
- "symbolId": "src/providers/common:IRunnerImageStatus"
5896
+ "symbolId": "src/providers/common:IRunnerAmiStatus"
5577
5897
  },
5578
- "@cloudsnorkel/cdk-github-runners.IRunnerProvider": {
5898
+ "@cloudsnorkel/cdk-github-runners.IRunnerImageStatus": {
5579
5899
  "assembly": "@cloudsnorkel/cdk-github-runners",
5580
5900
  "docs": {
5581
- "remarks": "Implementations create all required resources and return a step function task that starts those resources from {@link getStepFunctionTask}.",
5582
5901
  "stability": "experimental",
5583
- "summary": "Interface for all runner providers."
5902
+ "summary": "Image status returned from runner providers to be displayed in status.json."
5584
5903
  },
5585
- "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
5586
- "interfaces": [
5587
- "aws-cdk-lib.aws_ec2.IConnectable",
5588
- "aws-cdk-lib.aws_iam.IGrantable"
5589
- ],
5904
+ "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerImageStatus",
5590
5905
  "kind": "interface",
5591
5906
  "locationInModule": {
5592
5907
  "filename": "src/providers/common.ts",
5593
- "line": 212
5908
+ "line": 300
5594
5909
  },
5595
- "methods": [
5910
+ "name": "IRunnerImageStatus",
5911
+ "properties": [
5596
5912
  {
5597
5913
  "abstract": true,
5598
5914
  "docs": {
5599
- "remarks": "Called by GithubRunners and shouldn't be called manually.",
5600
5915
  "stability": "experimental",
5601
- "summary": "Generate step function tasks that execute the runner."
5916
+ "summary": "Image repository where image builder pushes runner images."
5602
5917
  },
5918
+ "immutable": true,
5603
5919
  "locationInModule": {
5604
5920
  "filename": "src/providers/common.ts",
5605
- "line": 244
5921
+ "line": 304
5606
5922
  },
5607
- "name": "getStepFunctionTask",
5608
- "parameters": [
5609
- {
5610
- "docs": {
5611
- "summary": "specific build parameters."
5612
- },
5923
+ "name": "imageRepository",
5924
+ "type": {
5925
+ "primitive": "string"
5926
+ }
5927
+ },
5928
+ {
5929
+ "abstract": true,
5930
+ "docs": {
5931
+ "stability": "experimental",
5932
+ "summary": "Tag of image that should be used."
5933
+ },
5934
+ "immutable": true,
5935
+ "locationInModule": {
5936
+ "filename": "src/providers/common.ts",
5937
+ "line": 309
5938
+ },
5939
+ "name": "imageTag",
5940
+ "type": {
5941
+ "primitive": "string"
5942
+ }
5943
+ },
5944
+ {
5945
+ "abstract": true,
5946
+ "docs": {
5947
+ "stability": "experimental",
5948
+ "summary": "Log group name for the image builder where history of image builds can be analyzed."
5949
+ },
5950
+ "immutable": true,
5951
+ "locationInModule": {
5952
+ "filename": "src/providers/common.ts",
5953
+ "line": 314
5954
+ },
5955
+ "name": "imageBuilderLogGroup",
5956
+ "optional": true,
5957
+ "type": {
5958
+ "primitive": "string"
5959
+ }
5960
+ }
5961
+ ],
5962
+ "symbolId": "src/providers/common:IRunnerImageStatus"
5963
+ },
5964
+ "@cloudsnorkel/cdk-github-runners.IRunnerProvider": {
5965
+ "assembly": "@cloudsnorkel/cdk-github-runners",
5966
+ "docs": {
5967
+ "remarks": "Implementations create all required resources and return a step function task that starts those resources from {@link getStepFunctionTask}.",
5968
+ "stability": "experimental",
5969
+ "summary": "Interface for all runner providers."
5970
+ },
5971
+ "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
5972
+ "interfaces": [
5973
+ "aws-cdk-lib.aws_ec2.IConnectable",
5974
+ "aws-cdk-lib.aws_iam.IGrantable"
5975
+ ],
5976
+ "kind": "interface",
5977
+ "locationInModule": {
5978
+ "filename": "src/providers/common.ts",
5979
+ "line": 375
5980
+ },
5981
+ "methods": [
5982
+ {
5983
+ "abstract": true,
5984
+ "docs": {
5985
+ "remarks": "Called by GithubRunners and shouldn't be called manually.",
5986
+ "stability": "experimental",
5987
+ "summary": "Generate step function tasks that execute the runner."
5988
+ },
5989
+ "locationInModule": {
5990
+ "filename": "src/providers/common.ts",
5991
+ "line": 402
5992
+ },
5993
+ "name": "getStepFunctionTask",
5994
+ "parameters": [
5995
+ {
5996
+ "docs": {
5997
+ "summary": "specific build parameters."
5998
+ },
5613
5999
  "name": "parameters",
5614
6000
  "type": {
5615
6001
  "fqn": "@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters"
@@ -5621,27 +6007,63 @@
5621
6007
  "fqn": "aws-cdk-lib.aws_stepfunctions.IChainable"
5622
6008
  }
5623
6009
  }
5624
- }
5625
- ],
5626
- "name": "IRunnerProvider",
5627
- "properties": [
6010
+ },
5628
6011
  {
5629
6012
  "abstract": true,
5630
6013
  "docs": {
5631
- "remarks": "Can be Docker image, AMI, or something else.",
6014
+ "remarks": "This can be used to add additional policy\nstatements to the state machine role that are not automatically added by the task returned from {@link getStepFunctionTask}.",
5632
6015
  "stability": "experimental",
5633
- "summary": "Image used to create a new resource compute."
6016
+ "summary": "An optional method that modifies the role of the state machine after all the tasks have been generated."
5634
6017
  },
5635
- "immutable": true,
5636
6018
  "locationInModule": {
5637
6019
  "filename": "src/providers/common.ts",
5638
- "line": 235
6020
+ "line": 410
5639
6021
  },
5640
- "name": "image",
5641
- "type": {
5642
- "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImage"
5643
- }
6022
+ "name": "grantStateMachine",
6023
+ "parameters": [
6024
+ {
6025
+ "docs": {
6026
+ "summary": "role for the state machine that executes the task returned from {@link getStepFunctionTask}."
6027
+ },
6028
+ "name": "stateMachineRole",
6029
+ "type": {
6030
+ "fqn": "aws-cdk-lib.aws_iam.IGrantable"
6031
+ }
6032
+ }
6033
+ ]
5644
6034
  },
6035
+ {
6036
+ "abstract": true,
6037
+ "docs": {
6038
+ "remarks": "Also gives the status function any needed permissions to query the Docker image or AMI.",
6039
+ "stability": "experimental",
6040
+ "summary": "Return status of the runner provider to be used in the main status function."
6041
+ },
6042
+ "locationInModule": {
6043
+ "filename": "src/providers/common.ts",
6044
+ "line": 417
6045
+ },
6046
+ "name": "status",
6047
+ "parameters": [
6048
+ {
6049
+ "docs": {
6050
+ "summary": "grantable for the status function."
6051
+ },
6052
+ "name": "statusFunctionRole",
6053
+ "type": {
6054
+ "fqn": "aws-cdk-lib.aws_iam.IGrantable"
6055
+ }
6056
+ }
6057
+ ],
6058
+ "returns": {
6059
+ "type": {
6060
+ "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus"
6061
+ }
6062
+ }
6063
+ }
6064
+ ],
6065
+ "name": "IRunnerProvider",
6066
+ "properties": [
5645
6067
  {
5646
6068
  "abstract": true,
5647
6069
  "docs": {
@@ -5652,7 +6074,7 @@
5652
6074
  "immutable": true,
5653
6075
  "locationInModule": {
5654
6076
  "filename": "src/providers/common.ts",
5655
- "line": 220
6077
+ "line": 383
5656
6078
  },
5657
6079
  "name": "labels",
5658
6080
  "type": {
@@ -5673,7 +6095,7 @@
5673
6095
  "immutable": true,
5674
6096
  "locationInModule": {
5675
6097
  "filename": "src/providers/common.ts",
5676
- "line": 230
6098
+ "line": 393
5677
6099
  },
5678
6100
  "name": "securityGroup",
5679
6101
  "optional": true,
@@ -5690,7 +6112,7 @@
5690
6112
  "immutable": true,
5691
6113
  "locationInModule": {
5692
6114
  "filename": "src/providers/common.ts",
5693
- "line": 225
6115
+ "line": 388
5694
6116
  },
5695
6117
  "name": "vpc",
5696
6118
  "optional": true,
@@ -5701,6 +6123,145 @@
5701
6123
  ],
5702
6124
  "symbolId": "src/providers/common:IRunnerProvider"
5703
6125
  },
6126
+ "@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus": {
6127
+ "assembly": "@cloudsnorkel/cdk-github-runners",
6128
+ "docs": {
6129
+ "stability": "experimental",
6130
+ "summary": "Interface for runner image status used by status.json."
6131
+ },
6132
+ "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus",
6133
+ "kind": "interface",
6134
+ "locationInModule": {
6135
+ "filename": "src/providers/common.ts",
6136
+ "line": 335
6137
+ },
6138
+ "name": "IRunnerProviderStatus",
6139
+ "properties": [
6140
+ {
6141
+ "abstract": true,
6142
+ "docs": {
6143
+ "stability": "experimental",
6144
+ "summary": "Labels associated with provider."
6145
+ },
6146
+ "immutable": true,
6147
+ "locationInModule": {
6148
+ "filename": "src/providers/common.ts",
6149
+ "line": 344
6150
+ },
6151
+ "name": "labels",
6152
+ "type": {
6153
+ "collection": {
6154
+ "elementtype": {
6155
+ "primitive": "string"
6156
+ },
6157
+ "kind": "array"
6158
+ }
6159
+ }
6160
+ },
6161
+ {
6162
+ "abstract": true,
6163
+ "docs": {
6164
+ "stability": "experimental",
6165
+ "summary": "Runner provider type."
6166
+ },
6167
+ "immutable": true,
6168
+ "locationInModule": {
6169
+ "filename": "src/providers/common.ts",
6170
+ "line": 339
6171
+ },
6172
+ "name": "type",
6173
+ "type": {
6174
+ "primitive": "string"
6175
+ }
6176
+ },
6177
+ {
6178
+ "abstract": true,
6179
+ "docs": {
6180
+ "stability": "experimental",
6181
+ "summary": "Details about AMI used by this runner provider."
6182
+ },
6183
+ "immutable": true,
6184
+ "locationInModule": {
6185
+ "filename": "src/providers/common.ts",
6186
+ "line": 369
6187
+ },
6188
+ "name": "ami",
6189
+ "optional": true,
6190
+ "type": {
6191
+ "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerAmiStatus"
6192
+ }
6193
+ },
6194
+ {
6195
+ "abstract": true,
6196
+ "docs": {
6197
+ "stability": "experimental",
6198
+ "summary": "Details about Docker image used by this runner provider."
6199
+ },
6200
+ "immutable": true,
6201
+ "locationInModule": {
6202
+ "filename": "src/providers/common.ts",
6203
+ "line": 364
6204
+ },
6205
+ "name": "image",
6206
+ "optional": true,
6207
+ "type": {
6208
+ "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerImageStatus"
6209
+ }
6210
+ },
6211
+ {
6212
+ "abstract": true,
6213
+ "docs": {
6214
+ "stability": "experimental",
6215
+ "summary": "Role attached to runners."
6216
+ },
6217
+ "immutable": true,
6218
+ "locationInModule": {
6219
+ "filename": "src/providers/common.ts",
6220
+ "line": 359
6221
+ },
6222
+ "name": "roleArn",
6223
+ "optional": true,
6224
+ "type": {
6225
+ "primitive": "string"
6226
+ }
6227
+ },
6228
+ {
6229
+ "abstract": true,
6230
+ "docs": {
6231
+ "stability": "experimental",
6232
+ "summary": "Security group attached to runners."
6233
+ },
6234
+ "immutable": true,
6235
+ "locationInModule": {
6236
+ "filename": "src/providers/common.ts",
6237
+ "line": 354
6238
+ },
6239
+ "name": "securityGroup",
6240
+ "optional": true,
6241
+ "type": {
6242
+ "primitive": "string"
6243
+ }
6244
+ },
6245
+ {
6246
+ "abstract": true,
6247
+ "docs": {
6248
+ "stability": "experimental",
6249
+ "summary": "VPC where runners will be launched."
6250
+ },
6251
+ "immutable": true,
6252
+ "locationInModule": {
6253
+ "filename": "src/providers/common.ts",
6254
+ "line": 349
6255
+ },
6256
+ "name": "vpcArn",
6257
+ "optional": true,
6258
+ "type": {
6259
+ "primitive": "string"
6260
+ }
6261
+ }
6262
+ ],
6263
+ "symbolId": "src/providers/common:IRunnerProviderStatus"
6264
+ },
5704
6265
  "@cloudsnorkel/cdk-github-runners.ImageBuilderAsset": {
5705
6266
  "assembly": "@cloudsnorkel/cdk-github-runners",
5706
6267
  "datatype": true,
@@ -5711,8 +6272,8 @@
5711
6272
  "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderAsset",
5712
6273
  "kind": "interface",
5713
6274
  "locationInModule": {
5714
- "filename": "src/providers/image-builders/container.ts",
5715
- "line": 155
6275
+ "filename": "src/providers/image-builders/common.ts",
6276
+ "line": 69
5716
6277
  },
5717
6278
  "name": "ImageBuilderAsset",
5718
6279
  "properties": [
@@ -5724,8 +6285,8 @@
5724
6285
  },
5725
6286
  "immutable": true,
5726
6287
  "locationInModule": {
5727
- "filename": "src/providers/image-builders/container.ts",
5728
- "line": 164
6288
+ "filename": "src/providers/image-builders/common.ts",
6289
+ "line": 78
5729
6290
  },
5730
6291
  "name": "asset",
5731
6292
  "type": {
@@ -5740,8 +6301,8 @@
5740
6301
  },
5741
6302
  "immutable": true,
5742
6303
  "locationInModule": {
5743
- "filename": "src/providers/image-builders/container.ts",
5744
- "line": 159
6304
+ "filename": "src/providers/image-builders/common.ts",
6305
+ "line": 73
5745
6306
  },
5746
6307
  "name": "path",
5747
6308
  "type": {
@@ -5749,7 +6310,7 @@
5749
6310
  }
5750
6311
  }
5751
6312
  ],
5752
- "symbolId": "src/providers/image-builders/container:ImageBuilderAsset"
6313
+ "symbolId": "src/providers/image-builders/common:ImageBuilderAsset"
5753
6314
  },
5754
6315
  "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent": {
5755
6316
  "assembly": "@cloudsnorkel/cdk-github-runners",
@@ -5765,8 +6326,8 @@
5765
6326
  "stability": "experimental"
5766
6327
  },
5767
6328
  "locationInModule": {
5768
- "filename": "src/providers/image-builders/container.ts",
5769
- "line": 229
6329
+ "filename": "src/providers/image-builders/common.ts",
6330
+ "line": 143
5770
6331
  },
5771
6332
  "parameters": [
5772
6333
  {
@@ -5791,8 +6352,8 @@
5791
6352
  },
5792
6353
  "kind": "class",
5793
6354
  "locationInModule": {
5794
- "filename": "src/providers/image-builders/container.ts",
5795
- "line": 216
6355
+ "filename": "src/providers/image-builders/common.ts",
6356
+ "line": 130
5796
6357
  },
5797
6358
  "methods": [
5798
6359
  {
@@ -5801,8 +6362,8 @@
5801
6362
  "summary": "Grants read permissions to the principal on the assets buckets."
5802
6363
  },
5803
6364
  "locationInModule": {
5804
- "filename": "src/providers/image-builders/container.ts",
5805
- "line": 321
6365
+ "filename": "src/providers/image-builders/common.ts",
6366
+ "line": 236
5806
6367
  },
5807
6368
  "name": "grantAssetsRead",
5808
6369
  "parameters": [
@@ -5819,8 +6380,8 @@
5819
6380
  "stability": "experimental"
5820
6381
  },
5821
6382
  "locationInModule": {
5822
- "filename": "src/providers/image-builders/container.ts",
5823
- "line": 122
6383
+ "filename": "src/providers/image-builders/common.ts",
6384
+ "line": 36
5824
6385
  },
5825
6386
  "name": "version",
5826
6387
  "parameters": [
@@ -5860,8 +6421,8 @@
5860
6421
  },
5861
6422
  "immutable": true,
5862
6423
  "locationInModule": {
5863
- "filename": "src/providers/image-builders/container.ts",
5864
- "line": 220
6424
+ "filename": "src/providers/image-builders/common.ts",
6425
+ "line": 134
5865
6426
  },
5866
6427
  "name": "arn",
5867
6428
  "type": {
@@ -5875,8 +6436,8 @@
5875
6436
  },
5876
6437
  "immutable": true,
5877
6438
  "locationInModule": {
5878
- "filename": "src/providers/image-builders/container.ts",
5879
- "line": 225
6439
+ "filename": "src/providers/image-builders/common.ts",
6440
+ "line": 139
5880
6441
  },
5881
6442
  "name": "platform",
5882
6443
  "type": {
@@ -5884,7 +6445,7 @@
5884
6445
  }
5885
6446
  }
5886
6447
  ],
5887
- "symbolId": "src/providers/image-builders/container:ImageBuilderComponent"
6448
+ "symbolId": "src/providers/image-builders/common:ImageBuilderComponent"
5888
6449
  },
5889
6450
  "@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties": {
5890
6451
  "assembly": "@cloudsnorkel/cdk-github-runners",
@@ -5896,8 +6457,8 @@
5896
6457
  "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties",
5897
6458
  "kind": "interface",
5898
6459
  "locationInModule": {
5899
- "filename": "src/providers/image-builders/container.ts",
5900
- "line": 170
6460
+ "filename": "src/providers/image-builders/common.ts",
6461
+ "line": 84
5901
6462
  },
5902
6463
  "name": "ImageBuilderComponentProperties",
5903
6464
  "properties": [
@@ -5910,8 +6471,8 @@
5910
6471
  },
5911
6472
  "immutable": true,
5912
6473
  "locationInModule": {
5913
- "filename": "src/providers/image-builders/container.ts",
5914
- "line": 191
6474
+ "filename": "src/providers/image-builders/common.ts",
6475
+ "line": 105
5915
6476
  },
5916
6477
  "name": "commands",
5917
6478
  "type": {
@@ -5931,8 +6492,8 @@
5931
6492
  },
5932
6493
  "immutable": true,
5933
6494
  "locationInModule": {
5934
- "filename": "src/providers/image-builders/container.ts",
5935
- "line": 184
6495
+ "filename": "src/providers/image-builders/common.ts",
6496
+ "line": 98
5936
6497
  },
5937
6498
  "name": "description",
5938
6499
  "type": {
@@ -5947,8 +6508,8 @@
5947
6508
  },
5948
6509
  "immutable": true,
5949
6510
  "locationInModule": {
5950
- "filename": "src/providers/image-builders/container.ts",
5951
- "line": 179
6511
+ "filename": "src/providers/image-builders/common.ts",
6512
+ "line": 93
5952
6513
  },
5953
6514
  "name": "displayName",
5954
6515
  "type": {
@@ -5964,8 +6525,8 @@
5964
6525
  },
5965
6526
  "immutable": true,
5966
6527
  "locationInModule": {
5967
- "filename": "src/providers/image-builders/container.ts",
5968
- "line": 174
6528
+ "filename": "src/providers/image-builders/common.ts",
6529
+ "line": 88
5969
6530
  },
5970
6531
  "name": "platform",
5971
6532
  "type": {
@@ -5980,8 +6541,8 @@
5980
6541
  },
5981
6542
  "immutable": true,
5982
6543
  "locationInModule": {
5983
- "filename": "src/providers/image-builders/container.ts",
5984
- "line": 196
6544
+ "filename": "src/providers/image-builders/common.ts",
6545
+ "line": 110
5985
6546
  },
5986
6547
  "name": "assets",
5987
6548
  "optional": true,
@@ -5995,7 +6556,7 @@
5995
6556
  }
5996
6557
  }
5997
6558
  ],
5998
- "symbolId": "src/providers/image-builders/container:ImageBuilderComponentProperties"
6559
+ "symbolId": "src/providers/image-builders/common:ImageBuilderComponentProperties"
5999
6560
  },
6000
6561
  "@cloudsnorkel/cdk-github-runners.LambdaRunner": {
6001
6562
  "assembly": "@cloudsnorkel/cdk-github-runners",
@@ -6003,7 +6564,7 @@
6003
6564
  "docs": {
6004
6565
  "remarks": "Creates a Docker-based function that gets executed for each job.\n\nThis construct is not meant to be used by itself. It should be passed in the providers property for GitHubRunners.",
6005
6566
  "stability": "experimental",
6006
- "summary": "GitHub Actions runner provider using Lambda to execute the actions."
6567
+ "summary": "GitHub Actions runner provider using Lambda to execute jobs."
6007
6568
  },
6008
6569
  "fqn": "@cloudsnorkel/cdk-github-runners.LambdaRunner",
6009
6570
  "initializer": {
@@ -6012,7 +6573,7 @@
6012
6573
  },
6013
6574
  "locationInModule": {
6014
6575
  "filename": "src/providers/lambda.ts",
6015
- "line": 153
6576
+ "line": 163
6016
6577
  },
6017
6578
  "parameters": [
6018
6579
  {
@@ -6041,7 +6602,7 @@
6041
6602
  "kind": "class",
6042
6603
  "locationInModule": {
6043
6604
  "filename": "src/providers/lambda.ts",
6044
- "line": 104
6605
+ "line": 114
6045
6606
  },
6046
6607
  "methods": [
6047
6608
  {
@@ -6052,7 +6613,7 @@
6052
6613
  },
6053
6614
  "locationInModule": {
6054
6615
  "filename": "src/providers/lambda.ts",
6055
- "line": 233
6616
+ "line": 243
6056
6617
  },
6057
6618
  "name": "getStepFunctionTask",
6058
6619
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -6073,13 +6634,34 @@
6073
6634
  }
6074
6635
  }
6075
6636
  },
6637
+ {
6638
+ "docs": {
6639
+ "remarks": "This can be used to add additional policy\nstatements to the state machine role that are not automatically added by the task returned from {@link getStepFunctionTask}.",
6640
+ "stability": "experimental",
6641
+ "summary": "An optional method that modifies the role of the state machine after all the tasks have been generated."
6642
+ },
6643
+ "locationInModule": {
6644
+ "filename": "src/providers/lambda.ts",
6645
+ "line": 301
6646
+ },
6647
+ "name": "grantStateMachine",
6648
+ "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
6649
+ "parameters": [
6650
+ {
6651
+ "name": "_",
6652
+ "type": {
6653
+ "fqn": "aws-cdk-lib.aws_iam.IGrantable"
6654
+ }
6655
+ }
6656
+ ]
6657
+ },
6076
6658
  {
6077
6659
  "docs": {
6078
6660
  "stability": "experimental"
6079
6661
  },
6080
6662
  "locationInModule": {
6081
6663
  "filename": "src/providers/common.ts",
6082
- "line": 253
6664
+ "line": 426
6083
6665
  },
6084
6666
  "name": "labelsFromProperties",
6085
6667
  "parameters": [
@@ -6120,6 +6702,32 @@
6120
6702
  }
6121
6703
  }
6122
6704
  }
6705
+ },
6706
+ {
6707
+ "docs": {
6708
+ "remarks": "Also gives the status function any needed permissions to query the Docker image or AMI.",
6709
+ "stability": "experimental",
6710
+ "summary": "Return status of the runner provider to be used in the main status function."
6711
+ },
6712
+ "locationInModule": {
6713
+ "filename": "src/providers/lambda.ts",
6714
+ "line": 304
6715
+ },
6716
+ "name": "status",
6717
+ "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
6718
+ "parameters": [
6719
+ {
6720
+ "name": "statusFunctionRole",
6721
+ "type": {
6722
+ "fqn": "aws-cdk-lib.aws_iam.IGrantable"
6723
+ }
6724
+ }
6725
+ ],
6726
+ "returns": {
6727
+ "type": {
6728
+ "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerProviderStatus"
6729
+ }
6730
+ }
6123
6731
  }
6124
6732
  ],
6125
6733
  "name": "LambdaRunner",
@@ -6134,7 +6742,7 @@
6134
6742
  "immutable": true,
6135
6743
  "locationInModule": {
6136
6744
  "filename": "src/providers/lambda.ts",
6137
- "line": 121
6745
+ "line": 131
6138
6746
  },
6139
6747
  "name": "LINUX_ARM64_DOCKERFILE_PATH",
6140
6748
  "static": true,
@@ -6152,7 +6760,7 @@
6152
6760
  "immutable": true,
6153
6761
  "locationInModule": {
6154
6762
  "filename": "src/providers/lambda.ts",
6155
- "line": 112
6763
+ "line": 122
6156
6764
  },
6157
6765
  "name": "LINUX_X64_DOCKERFILE_PATH",
6158
6766
  "static": true,
@@ -6168,7 +6776,7 @@
6168
6776
  "immutable": true,
6169
6777
  "locationInModule": {
6170
6778
  "filename": "src/providers/lambda.ts",
6171
- "line": 222
6779
+ "line": 232
6172
6780
  },
6173
6781
  "name": "connections",
6174
6782
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -6184,7 +6792,7 @@
6184
6792
  "immutable": true,
6185
6793
  "locationInModule": {
6186
6794
  "filename": "src/providers/lambda.ts",
6187
- "line": 126
6795
+ "line": 136
6188
6796
  },
6189
6797
  "name": "function",
6190
6798
  "type": {
@@ -6199,7 +6807,7 @@
6199
6807
  "immutable": true,
6200
6808
  "locationInModule": {
6201
6809
  "filename": "src/providers/lambda.ts",
6202
- "line": 146
6810
+ "line": 156
6203
6811
  },
6204
6812
  "name": "grantPrincipal",
6205
6813
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -6209,16 +6817,16 @@
6209
6817
  },
6210
6818
  {
6211
6819
  "docs": {
6820
+ "remarks": "The image is built by an image builder and is specific to Lambda.",
6212
6821
  "stability": "experimental",
6213
- "summary": "Docker image used to start Lambda function."
6822
+ "summary": "Docker image loaded with GitHub Actions Runner and its prerequisites."
6214
6823
  },
6215
6824
  "immutable": true,
6216
6825
  "locationInModule": {
6217
6826
  "filename": "src/providers/lambda.ts",
6218
- "line": 151
6827
+ "line": 161
6219
6828
  },
6220
6829
  "name": "image",
6221
- "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
6222
6830
  "type": {
6223
6831
  "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImage"
6224
6832
  }
@@ -6231,7 +6839,7 @@
6231
6839
  "immutable": true,
6232
6840
  "locationInModule": {
6233
6841
  "filename": "src/providers/lambda.ts",
6234
- "line": 131
6842
+ "line": 141
6235
6843
  },
6236
6844
  "name": "labels",
6237
6845
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -6252,7 +6860,7 @@
6252
6860
  "immutable": true,
6253
6861
  "locationInModule": {
6254
6862
  "filename": "src/providers/lambda.ts",
6255
- "line": 141
6863
+ "line": 151
6256
6864
  },
6257
6865
  "name": "securityGroup",
6258
6866
  "optional": true,
@@ -6269,7 +6877,7 @@
6269
6877
  "immutable": true,
6270
6878
  "locationInModule": {
6271
6879
  "filename": "src/providers/lambda.ts",
6272
- "line": 136
6880
+ "line": 146
6273
6881
  },
6274
6882
  "name": "vpc",
6275
6883
  "optional": true,
@@ -6294,7 +6902,7 @@
6294
6902
  "kind": "interface",
6295
6903
  "locationInModule": {
6296
6904
  "filename": "src/providers/lambda.ts",
6297
- "line": 19
6905
+ "line": 29
6298
6906
  },
6299
6907
  "name": "LambdaRunnerProps",
6300
6908
  "properties": [
@@ -6308,7 +6916,7 @@
6308
6916
  "immutable": true,
6309
6917
  "locationInModule": {
6310
6918
  "filename": "src/providers/lambda.ts",
6311
- "line": 64
6919
+ "line": 74
6312
6920
  },
6313
6921
  "name": "ephemeralStorageSize",
6314
6922
  "optional": true,
@@ -6328,7 +6936,7 @@
6328
6936
  "immutable": true,
6329
6937
  "locationInModule": {
6330
6938
  "filename": "src/providers/lambda.ts",
6331
- "line": 28
6939
+ "line": 38
6332
6940
  },
6333
6941
  "name": "imageBuilder",
6334
6942
  "optional": true,
@@ -6347,7 +6955,7 @@
6347
6955
  "immutable": true,
6348
6956
  "locationInModule": {
6349
6957
  "filename": "src/providers/lambda.ts",
6350
- "line": 36
6958
+ "line": 46
6351
6959
  },
6352
6960
  "name": "label",
6353
6961
  "optional": true,
@@ -6366,7 +6974,7 @@
6366
6974
  "immutable": true,
6367
6975
  "locationInModule": {
6368
6976
  "filename": "src/providers/lambda.ts",
6369
- "line": 47
6977
+ "line": 57
6370
6978
  },
6371
6979
  "name": "labels",
6372
6980
  "optional": true,
@@ -6390,7 +6998,7 @@
6390
6998
  "immutable": true,
6391
6999
  "locationInModule": {
6392
7000
  "filename": "src/providers/lambda.ts",
6393
- "line": 57
7001
+ "line": 67
6394
7002
  },
6395
7003
  "name": "memorySize",
6396
7004
  "optional": true,
@@ -6408,7 +7016,7 @@
6408
7016
  "immutable": true,
6409
7017
  "locationInModule": {
6410
7018
  "filename": "src/providers/lambda.ts",
6411
- "line": 87
7019
+ "line": 97
6412
7020
  },
6413
7021
  "name": "securityGroup",
6414
7022
  "optional": true,
@@ -6426,7 +7034,7 @@
6426
7034
  "immutable": true,
6427
7035
  "locationInModule": {
6428
7036
  "filename": "src/providers/lambda.ts",
6429
- "line": 94
7037
+ "line": 104
6430
7038
  },
6431
7039
  "name": "subnetSelection",
6432
7040
  "optional": true,
@@ -6445,7 +7053,7 @@
6445
7053
  "immutable": true,
6446
7054
  "locationInModule": {
6447
7055
  "filename": "src/providers/lambda.ts",
6448
- "line": 73
7056
+ "line": 83
6449
7057
  },
6450
7058
  "name": "timeout",
6451
7059
  "optional": true,
@@ -6463,7 +7071,7 @@
6463
7071
  "immutable": true,
6464
7072
  "locationInModule": {
6465
7073
  "filename": "src/providers/lambda.ts",
6466
- "line": 80
7074
+ "line": 90
6467
7075
  },
6468
7076
  "name": "vpc",
6469
7077
  "optional": true,
@@ -6474,6 +7082,287 @@
6474
7082
  ],
6475
7083
  "symbolId": "src/providers/lambda:LambdaRunnerProps"
6476
7084
  },
7085
+ "@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents": {
7086
+ "assembly": "@cloudsnorkel/cdk-github-runners",
7087
+ "docs": {
7088
+ "remarks": "These cannot be used by {@link CodeBuildImageBuilder}.",
7089
+ "stability": "experimental",
7090
+ "summary": "Components for Ubuntu Linux that can be used with AWS Image Builder based builders."
7091
+ },
7092
+ "fqn": "@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents",
7093
+ "initializer": {
7094
+ "docs": {
7095
+ "stability": "experimental"
7096
+ }
7097
+ },
7098
+ "kind": "class",
7099
+ "locationInModule": {
7100
+ "filename": "src/providers/image-builders/linux-components.ts",
7101
+ "line": 8
7102
+ },
7103
+ "methods": [
7104
+ {
7105
+ "docs": {
7106
+ "stability": "experimental"
7107
+ },
7108
+ "locationInModule": {
7109
+ "filename": "src/providers/image-builders/linux-components.ts",
7110
+ "line": 48
7111
+ },
7112
+ "name": "awsCli",
7113
+ "parameters": [
7114
+ {
7115
+ "name": "scope",
7116
+ "type": {
7117
+ "fqn": "constructs.Construct"
7118
+ }
7119
+ },
7120
+ {
7121
+ "name": "id",
7122
+ "type": {
7123
+ "primitive": "string"
7124
+ }
7125
+ },
7126
+ {
7127
+ "name": "architecture",
7128
+ "type": {
7129
+ "fqn": "@cloudsnorkel/cdk-github-runners.Architecture"
7130
+ }
7131
+ }
7132
+ ],
7133
+ "returns": {
7134
+ "type": {
7135
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"
7136
+ }
7137
+ },
7138
+ "static": true
7139
+ },
7140
+ {
7141
+ "docs": {
7142
+ "stability": "experimental"
7143
+ },
7144
+ "locationInModule": {
7145
+ "filename": "src/providers/image-builders/linux-components.ts",
7146
+ "line": 134
7147
+ },
7148
+ "name": "docker",
7149
+ "parameters": [
7150
+ {
7151
+ "name": "scope",
7152
+ "type": {
7153
+ "fqn": "constructs.Construct"
7154
+ }
7155
+ },
7156
+ {
7157
+ "name": "id",
7158
+ "type": {
7159
+ "primitive": "string"
7160
+ }
7161
+ },
7162
+ {
7163
+ "name": "_architecture",
7164
+ "type": {
7165
+ "fqn": "@cloudsnorkel/cdk-github-runners.Architecture"
7166
+ }
7167
+ }
7168
+ ],
7169
+ "returns": {
7170
+ "type": {
7171
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"
7172
+ }
7173
+ },
7174
+ "static": true
7175
+ },
7176
+ {
7177
+ "docs": {
7178
+ "stability": "experimental"
7179
+ },
7180
+ "locationInModule": {
7181
+ "filename": "src/providers/image-builders/linux-components.ts",
7182
+ "line": 88
7183
+ },
7184
+ "name": "git",
7185
+ "parameters": [
7186
+ {
7187
+ "name": "scope",
7188
+ "type": {
7189
+ "fqn": "constructs.Construct"
7190
+ }
7191
+ },
7192
+ {
7193
+ "name": "id",
7194
+ "type": {
7195
+ "primitive": "string"
7196
+ }
7197
+ },
7198
+ {
7199
+ "name": "_architecture",
7200
+ "type": {
7201
+ "fqn": "@cloudsnorkel/cdk-github-runners.Architecture"
7202
+ }
7203
+ }
7204
+ ],
7205
+ "returns": {
7206
+ "type": {
7207
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"
7208
+ }
7209
+ },
7210
+ "static": true
7211
+ },
7212
+ {
7213
+ "docs": {
7214
+ "stability": "experimental"
7215
+ },
7216
+ "locationInModule": {
7217
+ "filename": "src/providers/image-builders/linux-components.ts",
7218
+ "line": 72
7219
+ },
7220
+ "name": "githubCli",
7221
+ "parameters": [
7222
+ {
7223
+ "name": "scope",
7224
+ "type": {
7225
+ "fqn": "constructs.Construct"
7226
+ }
7227
+ },
7228
+ {
7229
+ "name": "id",
7230
+ "type": {
7231
+ "primitive": "string"
7232
+ }
7233
+ },
7234
+ {
7235
+ "name": "_architecture",
7236
+ "type": {
7237
+ "fqn": "@cloudsnorkel/cdk-github-runners.Architecture"
7238
+ }
7239
+ }
7240
+ ],
7241
+ "returns": {
7242
+ "type": {
7243
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"
7244
+ }
7245
+ },
7246
+ "static": true
7247
+ },
7248
+ {
7249
+ "docs": {
7250
+ "stability": "experimental"
7251
+ },
7252
+ "locationInModule": {
7253
+ "filename": "src/providers/image-builders/linux-components.ts",
7254
+ "line": 102
7255
+ },
7256
+ "name": "githubRunner",
7257
+ "parameters": [
7258
+ {
7259
+ "name": "scope",
7260
+ "type": {
7261
+ "fqn": "constructs.Construct"
7262
+ }
7263
+ },
7264
+ {
7265
+ "name": "id",
7266
+ "type": {
7267
+ "primitive": "string"
7268
+ }
7269
+ },
7270
+ {
7271
+ "name": "runnerVersion",
7272
+ "type": {
7273
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerVersion"
7274
+ }
7275
+ },
7276
+ {
7277
+ "name": "architecture",
7278
+ "type": {
7279
+ "fqn": "@cloudsnorkel/cdk-github-runners.Architecture"
7280
+ }
7281
+ }
7282
+ ],
7283
+ "returns": {
7284
+ "type": {
7285
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"
7286
+ }
7287
+ },
7288
+ "static": true
7289
+ },
7290
+ {
7291
+ "docs": {
7292
+ "stability": "experimental"
7293
+ },
7294
+ "locationInModule": {
7295
+ "filename": "src/providers/image-builders/linux-components.ts",
7296
+ "line": 9
7297
+ },
7298
+ "name": "requiredPackages",
7299
+ "parameters": [
7300
+ {
7301
+ "name": "scope",
7302
+ "type": {
7303
+ "fqn": "constructs.Construct"
7304
+ }
7305
+ },
7306
+ {
7307
+ "name": "id",
7308
+ "type": {
7309
+ "primitive": "string"
7310
+ }
7311
+ },
7312
+ {
7313
+ "name": "architecture",
7314
+ "type": {
7315
+ "fqn": "@cloudsnorkel/cdk-github-runners.Architecture"
7316
+ }
7317
+ }
7318
+ ],
7319
+ "returns": {
7320
+ "type": {
7321
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"
7322
+ }
7323
+ },
7324
+ "static": true
7325
+ },
7326
+ {
7327
+ "docs": {
7328
+ "stability": "experimental"
7329
+ },
7330
+ "locationInModule": {
7331
+ "filename": "src/providers/image-builders/linux-components.ts",
7332
+ "line": 35
7333
+ },
7334
+ "name": "runnerUser",
7335
+ "parameters": [
7336
+ {
7337
+ "name": "scope",
7338
+ "type": {
7339
+ "fqn": "constructs.Construct"
7340
+ }
7341
+ },
7342
+ {
7343
+ "name": "id",
7344
+ "type": {
7345
+ "primitive": "string"
7346
+ }
7347
+ },
7348
+ {
7349
+ "name": "_architecture",
7350
+ "type": {
7351
+ "fqn": "@cloudsnorkel/cdk-github-runners.Architecture"
7352
+ }
7353
+ }
7354
+ ],
7355
+ "returns": {
7356
+ "type": {
7357
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"
7358
+ }
7359
+ },
7360
+ "static": true
7361
+ }
7362
+ ],
7363
+ "name": "LinuxUbuntuComponents",
7364
+ "symbolId": "src/providers/image-builders/linux-components:LinuxUbuntuComponents"
7365
+ },
6477
7366
  "@cloudsnorkel/cdk-github-runners.Os": {
6478
7367
  "assembly": "@cloudsnorkel/cdk-github-runners",
6479
7368
  "docs": {
@@ -6484,27 +7373,59 @@
6484
7373
  "kind": "class",
6485
7374
  "locationInModule": {
6486
7375
  "filename": "src/providers/common.ts",
6487
- "line": 64
7376
+ "line": 102
6488
7377
  },
6489
7378
  "methods": [
6490
7379
  {
6491
7380
  "docs": {
6492
7381
  "stability": "experimental",
6493
- "summary": "Checks if the given OS is the same as this one."
7382
+ "summary": "Checks if the given OS is the same as this one."
7383
+ },
7384
+ "locationInModule": {
7385
+ "filename": "src/providers/common.ts",
7386
+ "line": 125
7387
+ },
7388
+ "name": "is",
7389
+ "parameters": [
7390
+ {
7391
+ "docs": {
7392
+ "summary": "OS to compare."
7393
+ },
7394
+ "name": "os",
7395
+ "type": {
7396
+ "fqn": "@cloudsnorkel/cdk-github-runners.Os"
7397
+ }
7398
+ }
7399
+ ],
7400
+ "returns": {
7401
+ "type": {
7402
+ "primitive": "boolean"
7403
+ }
7404
+ }
7405
+ },
7406
+ {
7407
+ "docs": {
7408
+ "stability": "experimental",
7409
+ "summary": "Checks if this OS is in a given list."
6494
7410
  },
6495
7411
  "locationInModule": {
6496
7412
  "filename": "src/providers/common.ts",
6497
- "line": 87
7413
+ "line": 134
6498
7414
  },
6499
- "name": "is",
7415
+ "name": "isIn",
6500
7416
  "parameters": [
6501
7417
  {
6502
7418
  "docs": {
6503
- "summary": "OS to compare."
7419
+ "summary": "list of OS to check."
6504
7420
  },
6505
- "name": "os",
7421
+ "name": "oses",
6506
7422
  "type": {
6507
- "fqn": "@cloudsnorkel/cdk-github-runners.Os"
7423
+ "collection": {
7424
+ "elementtype": {
7425
+ "fqn": "@cloudsnorkel/cdk-github-runners.Os"
7426
+ },
7427
+ "kind": "array"
7428
+ }
6508
7429
  }
6509
7430
  }
6510
7431
  ],
@@ -6526,7 +7447,7 @@
6526
7447
  "immutable": true,
6527
7448
  "locationInModule": {
6528
7449
  "filename": "src/providers/common.ts",
6529
- "line": 68
7450
+ "line": 106
6530
7451
  },
6531
7452
  "name": "LINUX",
6532
7453
  "static": true,
@@ -6543,7 +7464,7 @@
6543
7464
  "immutable": true,
6544
7465
  "locationInModule": {
6545
7466
  "filename": "src/providers/common.ts",
6546
- "line": 73
7467
+ "line": 111
6547
7468
  },
6548
7469
  "name": "WINDOWS",
6549
7470
  "static": true,
@@ -6558,7 +7479,7 @@
6558
7479
  "immutable": true,
6559
7480
  "locationInModule": {
6560
7481
  "filename": "src/providers/common.ts",
6561
- "line": 79
7482
+ "line": 117
6562
7483
  },
6563
7484
  "name": "name",
6564
7485
  "type": {
@@ -6572,13 +7493,14 @@
6572
7493
  "assembly": "@cloudsnorkel/cdk-github-runners",
6573
7494
  "datatype": true,
6574
7495
  "docs": {
6575
- "stability": "experimental"
7496
+ "stability": "experimental",
7497
+ "summary": "Description of a Docker image built by {@link IImageBuilder}."
6576
7498
  },
6577
7499
  "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImage",
6578
7500
  "kind": "interface",
6579
7501
  "locationInModule": {
6580
7502
  "filename": "src/providers/common.ts",
6581
- "line": 92
7503
+ "line": 147
6582
7504
  },
6583
7505
  "name": "RunnerImage",
6584
7506
  "properties": [
@@ -6591,7 +7513,7 @@
6591
7513
  "immutable": true,
6592
7514
  "locationInModule": {
6593
7515
  "filename": "src/providers/common.ts",
6594
- "line": 106
7516
+ "line": 161
6595
7517
  },
6596
7518
  "name": "architecture",
6597
7519
  "type": {
@@ -6607,7 +7529,7 @@
6607
7529
  "immutable": true,
6608
7530
  "locationInModule": {
6609
7531
  "filename": "src/providers/common.ts",
6610
- "line": 96
7532
+ "line": 151
6611
7533
  },
6612
7534
  "name": "imageRepository",
6613
7535
  "type": {
@@ -6623,7 +7545,7 @@
6623
7545
  "immutable": true,
6624
7546
  "locationInModule": {
6625
7547
  "filename": "src/providers/common.ts",
6626
- "line": 101
7548
+ "line": 156
6627
7549
  },
6628
7550
  "name": "imageTag",
6629
7551
  "type": {
@@ -6639,13 +7561,29 @@
6639
7561
  "immutable": true,
6640
7562
  "locationInModule": {
6641
7563
  "filename": "src/providers/common.ts",
6642
- "line": 111
7564
+ "line": 166
6643
7565
  },
6644
7566
  "name": "os",
6645
7567
  "type": {
6646
7568
  "fqn": "@cloudsnorkel/cdk-github-runners.Os"
6647
7569
  }
6648
7570
  },
7571
+ {
7572
+ "abstract": true,
7573
+ "docs": {
7574
+ "stability": "experimental",
7575
+ "summary": "Installed runner version."
7576
+ },
7577
+ "immutable": true,
7578
+ "locationInModule": {
7579
+ "filename": "src/providers/common.ts",
7580
+ "line": 176
7581
+ },
7582
+ "name": "runnerVersion",
7583
+ "type": {
7584
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerVersion"
7585
+ }
7586
+ },
6649
7587
  {
6650
7588
  "abstract": true,
6651
7589
  "docs": {
@@ -6655,7 +7593,7 @@
6655
7593
  "immutable": true,
6656
7594
  "locationInModule": {
6657
7595
  "filename": "src/providers/common.ts",
6658
- "line": 116
7596
+ "line": 171
6659
7597
  },
6660
7598
  "name": "logGroup",
6661
7599
  "optional": true,
@@ -6677,7 +7615,7 @@
6677
7615
  "kind": "interface",
6678
7616
  "locationInModule": {
6679
7617
  "filename": "src/providers/common.ts",
6680
- "line": 142
7618
+ "line": 250
6681
7619
  },
6682
7620
  "name": "RunnerProviderProps",
6683
7621
  "properties": [
@@ -6692,7 +7630,7 @@
6692
7630
  "immutable": true,
6693
7631
  "locationInModule": {
6694
7632
  "filename": "src/providers/common.ts",
6695
- "line": 150
7633
+ "line": 258
6696
7634
  },
6697
7635
  "name": "logRetention",
6698
7636
  "optional": true,
@@ -6715,7 +7653,7 @@
6715
7653
  "kind": "interface",
6716
7654
  "locationInModule": {
6717
7655
  "filename": "src/providers/common.ts",
6718
- "line": 162
7656
+ "line": 270
6719
7657
  },
6720
7658
  "name": "RunnerRuntimeParameters",
6721
7659
  "properties": [
@@ -6729,7 +7667,7 @@
6729
7667
  "immutable": true,
6730
7668
  "locationInModule": {
6731
7669
  "filename": "src/providers/common.ts",
6732
- "line": 176
7670
+ "line": 284
6733
7671
  },
6734
7672
  "name": "githubDomainPath",
6735
7673
  "type": {
@@ -6745,7 +7683,7 @@
6745
7683
  "immutable": true,
6746
7684
  "locationInModule": {
6747
7685
  "filename": "src/providers/common.ts",
6748
- "line": 181
7686
+ "line": 289
6749
7687
  },
6750
7688
  "name": "ownerPath",
6751
7689
  "type": {
@@ -6761,7 +7699,7 @@
6761
7699
  "immutable": true,
6762
7700
  "locationInModule": {
6763
7701
  "filename": "src/providers/common.ts",
6764
- "line": 186
7702
+ "line": 294
6765
7703
  },
6766
7704
  "name": "repoPath",
6767
7705
  "type": {
@@ -6778,7 +7716,7 @@
6778
7716
  "immutable": true,
6779
7717
  "locationInModule": {
6780
7718
  "filename": "src/providers/common.ts",
6781
- "line": 171
7719
+ "line": 279
6782
7720
  },
6783
7721
  "name": "runnerNamePath",
6784
7722
  "type": {
@@ -6794,7 +7732,7 @@
6794
7732
  "immutable": true,
6795
7733
  "locationInModule": {
6796
7734
  "filename": "src/providers/common.ts",
6797
- "line": 166
7735
+ "line": 274
6798
7736
  },
6799
7737
  "name": "runnerTokenPath",
6800
7738
  "type": {
@@ -6880,6 +7818,33 @@
6880
7818
  }
6881
7819
  },
6882
7820
  "static": true
7821
+ },
7822
+ {
7823
+ "docs": {
7824
+ "stability": "experimental",
7825
+ "summary": "Check if two versions are the same."
7826
+ },
7827
+ "locationInModule": {
7828
+ "filename": "src/providers/common.ts",
7829
+ "line": 34
7830
+ },
7831
+ "name": "is",
7832
+ "parameters": [
7833
+ {
7834
+ "docs": {
7835
+ "summary": "version to compare."
7836
+ },
7837
+ "name": "other",
7838
+ "type": {
7839
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerVersion"
7840
+ }
7841
+ }
7842
+ ],
7843
+ "returns": {
7844
+ "type": {
7845
+ "primitive": "boolean"
7846
+ }
7847
+ }
6883
7848
  }
6884
7849
  ],
6885
7850
  "name": "RunnerVersion",
@@ -7031,7 +7996,7 @@
7031
7996
  },
7032
7997
  "locationInModule": {
7033
7998
  "filename": "src/providers/image-builders/static.ts",
7034
- "line": 43
7999
+ "line": 44
7035
8000
  },
7036
8001
  "name": "fromDockerHub",
7037
8002
  "parameters": [
@@ -7146,8 +8111,217 @@
7146
8111
  ],
7147
8112
  "name": "StaticRunnerImage",
7148
8113
  "symbolId": "src/providers/image-builders/static:StaticRunnerImage"
8114
+ },
8115
+ "@cloudsnorkel/cdk-github-runners.WindowsComponents": {
8116
+ "assembly": "@cloudsnorkel/cdk-github-runners",
8117
+ "docs": {
8118
+ "remarks": "These cannot be used by {@link CodeBuildImageBuilder}.",
8119
+ "stability": "experimental",
8120
+ "summary": "Components for Windows that can be used with AWS Image Builder based builders."
8121
+ },
8122
+ "fqn": "@cloudsnorkel/cdk-github-runners.WindowsComponents",
8123
+ "initializer": {
8124
+ "docs": {
8125
+ "stability": "experimental"
8126
+ }
8127
+ },
8128
+ "kind": "class",
8129
+ "locationInModule": {
8130
+ "filename": "src/providers/image-builders/windows-components.ts",
8131
+ "line": 8
8132
+ },
8133
+ "methods": [
8134
+ {
8135
+ "docs": {
8136
+ "stability": "experimental"
8137
+ },
8138
+ "locationInModule": {
8139
+ "filename": "src/providers/image-builders/windows-components.ts",
8140
+ "line": 21
8141
+ },
8142
+ "name": "awsCli",
8143
+ "parameters": [
8144
+ {
8145
+ "name": "scope",
8146
+ "type": {
8147
+ "fqn": "constructs.Construct"
8148
+ }
8149
+ },
8150
+ {
8151
+ "name": "id",
8152
+ "type": {
8153
+ "primitive": "string"
8154
+ }
8155
+ }
8156
+ ],
8157
+ "returns": {
8158
+ "type": {
8159
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"
8160
+ }
8161
+ },
8162
+ "static": true
8163
+ },
8164
+ {
8165
+ "docs": {
8166
+ "stability": "experimental"
8167
+ },
8168
+ "locationInModule": {
8169
+ "filename": "src/providers/image-builders/windows-components.ts",
8170
+ "line": 9
8171
+ },
8172
+ "name": "cloudwatchAgent",
8173
+ "parameters": [
8174
+ {
8175
+ "name": "scope",
8176
+ "type": {
8177
+ "fqn": "constructs.Construct"
8178
+ }
8179
+ },
8180
+ {
8181
+ "name": "id",
8182
+ "type": {
8183
+ "primitive": "string"
8184
+ }
8185
+ }
8186
+ ],
8187
+ "returns": {
8188
+ "type": {
8189
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"
8190
+ }
8191
+ },
8192
+ "static": true
8193
+ },
8194
+ {
8195
+ "docs": {
8196
+ "stability": "experimental"
8197
+ },
8198
+ "locationInModule": {
8199
+ "filename": "src/providers/image-builders/windows-components.ts",
8200
+ "line": 98
8201
+ },
8202
+ "name": "docker",
8203
+ "parameters": [
8204
+ {
8205
+ "name": "scope",
8206
+ "type": {
8207
+ "fqn": "constructs.Construct"
8208
+ }
8209
+ },
8210
+ {
8211
+ "name": "id",
8212
+ "type": {
8213
+ "primitive": "string"
8214
+ }
8215
+ }
8216
+ ],
8217
+ "returns": {
8218
+ "type": {
8219
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"
8220
+ }
8221
+ },
8222
+ "static": true
8223
+ },
8224
+ {
8225
+ "docs": {
8226
+ "stability": "experimental"
8227
+ },
8228
+ "locationInModule": {
8229
+ "filename": "src/providers/image-builders/windows-components.ts",
8230
+ "line": 52
8231
+ },
8232
+ "name": "git",
8233
+ "parameters": [
8234
+ {
8235
+ "name": "scope",
8236
+ "type": {
8237
+ "fqn": "constructs.Construct"
8238
+ }
8239
+ },
8240
+ {
8241
+ "name": "id",
8242
+ "type": {
8243
+ "primitive": "string"
8244
+ }
8245
+ }
8246
+ ],
8247
+ "returns": {
8248
+ "type": {
8249
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"
8250
+ }
8251
+ },
8252
+ "static": true
8253
+ },
8254
+ {
8255
+ "docs": {
8256
+ "stability": "experimental"
8257
+ },
8258
+ "locationInModule": {
8259
+ "filename": "src/providers/image-builders/windows-components.ts",
8260
+ "line": 33
8261
+ },
8262
+ "name": "githubCli",
8263
+ "parameters": [
8264
+ {
8265
+ "name": "scope",
8266
+ "type": {
8267
+ "fqn": "constructs.Construct"
8268
+ }
8269
+ },
8270
+ {
8271
+ "name": "id",
8272
+ "type": {
8273
+ "primitive": "string"
8274
+ }
8275
+ }
8276
+ ],
8277
+ "returns": {
8278
+ "type": {
8279
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"
8280
+ }
8281
+ },
8282
+ "static": true
8283
+ },
8284
+ {
8285
+ "docs": {
8286
+ "stability": "experimental"
8287
+ },
8288
+ "locationInModule": {
8289
+ "filename": "src/providers/image-builders/windows-components.ts",
8290
+ "line": 71
8291
+ },
8292
+ "name": "githubRunner",
8293
+ "parameters": [
8294
+ {
8295
+ "name": "scope",
8296
+ "type": {
8297
+ "fqn": "constructs.Construct"
8298
+ }
8299
+ },
8300
+ {
8301
+ "name": "id",
8302
+ "type": {
8303
+ "primitive": "string"
8304
+ }
8305
+ },
8306
+ {
8307
+ "name": "runnerVersion",
8308
+ "type": {
8309
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerVersion"
8310
+ }
8311
+ }
8312
+ ],
8313
+ "returns": {
8314
+ "type": {
8315
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"
8316
+ }
8317
+ },
8318
+ "static": true
8319
+ }
8320
+ ],
8321
+ "name": "WindowsComponents",
8322
+ "symbolId": "src/providers/image-builders/windows-components:WindowsComponents"
7149
8323
  }
7150
8324
  },
7151
- "version": "0.5.7",
7152
- "fingerprint": "44NDaZbB6QGS9Amryqeegiig6X5hEIrH7yjHrLntVY4="
8325
+ "version": "0.6.0",
8326
+ "fingerprint": "hscwjQdZoW1Xlx10opRG51XHwCVQr0oA3/mq4GIIRJU="
7153
8327
  }