@cloudsnorkel/cdk-github-runners 0.3.2 → 0.5.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 (35) hide show
  1. package/.gitattributes +1 -0
  2. package/.jsii +1413 -431
  3. package/API.md +1082 -126
  4. package/README.md +12 -10
  5. package/lib/index.d.ts +2 -1
  6. package/lib/index.js +4 -1
  7. package/lib/lambdas/aws-image-builder-versioner/index.js +2469 -0
  8. package/lib/lambdas/build-image/index.js +77 -43
  9. package/lib/lambdas/delete-runner/index.js +114 -79
  10. package/lib/lambdas/setup/index.html +10 -10
  11. package/lib/lambdas/setup/index.js +27 -12
  12. package/lib/lambdas/status/index.js +147 -82
  13. package/lib/lambdas/token-retriever/index.js +114 -79
  14. package/lib/lambdas/update-lambda/index.js +5 -2
  15. package/lib/lambdas/webhook-handler/index.js +11 -5
  16. package/lib/providers/codebuild.d.ts +5 -1
  17. package/lib/providers/codebuild.js +16 -6
  18. package/lib/providers/common.d.ts +25 -6
  19. package/lib/providers/common.js +4 -4
  20. package/lib/providers/docker-images/fargate/linux-arm64/Dockerfile +0 -2
  21. package/lib/providers/docker-images/fargate/linux-x64/Dockerfile +0 -3
  22. package/lib/providers/fargate.d.ts +6 -1
  23. package/lib/providers/fargate.js +56 -15
  24. package/lib/providers/image-builders/codebuild.d.ts +6 -2
  25. package/lib/providers/image-builders/codebuild.js +14 -11
  26. package/lib/providers/image-builders/container.d.ts +220 -0
  27. package/lib/providers/image-builders/container.js +509 -0
  28. package/lib/providers/image-builders/static.js +2 -3
  29. package/lib/providers/lambda.d.ts +6 -1
  30. package/lib/providers/lambda.js +79 -8
  31. package/lib/runner.js +29 -13
  32. package/lib/secrets.js +1 -1
  33. package/package.json +16 -12
  34. package/lib/providers/docker-images/fargate/linux-arm64/runner.sh +0 -5
  35. package/lib/providers/docker-images/fargate/linux-x64/runner.sh +0 -5
package/.jsii CHANGED
@@ -7,7 +7,7 @@
7
7
  ]
8
8
  },
9
9
  "dependencies": {
10
- "aws-cdk-lib": "^2.21.1",
10
+ "aws-cdk-lib": "^2.29.0",
11
11
  "constructs": "^10.0.5"
12
12
  },
13
13
  "dependencyClosure": {
@@ -1106,6 +1106,19 @@
1106
1106
  }
1107
1107
  }
1108
1108
  },
1109
+ "aws-cdk-lib.aws_emrserverless": {
1110
+ "targets": {
1111
+ "dotnet": {
1112
+ "namespace": "Amazon.CDK.AWS.EMRServerless"
1113
+ },
1114
+ "java": {
1115
+ "package": "software.amazon.awscdk.services.emrserverless"
1116
+ },
1117
+ "python": {
1118
+ "module": "aws_cdk.aws_emrserverless"
1119
+ }
1120
+ }
1121
+ },
1109
1122
  "aws-cdk-lib.aws_events": {
1110
1123
  "targets": {
1111
1124
  "dotnet": {
@@ -1509,6 +1522,19 @@
1509
1522
  }
1510
1523
  }
1511
1524
  },
1525
+ "aws-cdk-lib.aws_iottwinmaker": {
1526
+ "targets": {
1527
+ "dotnet": {
1528
+ "namespace": "Amazon.CDK.AWS.IoTTwinMaker"
1529
+ },
1530
+ "java": {
1531
+ "package": "software.amazon.awscdk.services.iottwinmaker"
1532
+ },
1533
+ "python": {
1534
+ "module": "aws_cdk.aws_iottwinmaker"
1535
+ }
1536
+ }
1537
+ },
1512
1538
  "aws-cdk-lib.aws_iotwireless": {
1513
1539
  "targets": {
1514
1540
  "dotnet": {
@@ -2705,6 +2731,19 @@
2705
2731
  }
2706
2732
  }
2707
2733
  },
2734
+ "aws-cdk-lib.aws_voiceid": {
2735
+ "targets": {
2736
+ "dotnet": {
2737
+ "namespace": "Amazon.CDK.AWS.VoiceID"
2738
+ },
2739
+ "java": {
2740
+ "package": "software.amazon.awscdk.services.voiceid"
2741
+ },
2742
+ "python": {
2743
+ "module": "aws_cdk.aws_voiceid"
2744
+ }
2745
+ }
2746
+ },
2708
2747
  "aws-cdk-lib.aws_waf": {
2709
2748
  "targets": {
2710
2749
  "dotnet": {
@@ -2916,7 +2955,7 @@
2916
2955
  },
2917
2956
  "targets": {
2918
2957
  "dotnet": {
2919
- "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png",
2958
+ "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/main/logo/default-256-dark.png",
2920
2959
  "namespace": "Amazon.CDK",
2921
2960
  "packageId": "Amazon.CDK.Lib"
2922
2961
  },
@@ -2971,7 +3010,7 @@
2971
3010
  "stability": "experimental"
2972
3011
  },
2973
3012
  "homepage": "https://github.com/CloudSnorkel/cdk-github-runners.git",
2974
- "jsiiVersion": "1.62.0 (build 293ac17)",
3013
+ "jsiiVersion": "1.67.0 (build 2c027f5)",
2975
3014
  "keywords": [
2976
3015
  "aws",
2977
3016
  "aws-cdk",
@@ -2995,7 +3034,7 @@
2995
3034
  },
2996
3035
  "name": "@cloudsnorkel/cdk-github-runners",
2997
3036
  "readme": {
2998
- "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\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** | ✔ | ❌ | ❌ |\n| **Spot pricing** | ❌ | ✔ | ❌ |\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: FargateProvider.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 FargateProvider(this, 'fargate runner', {\n label: 'customized-fargate',\n vpc: vpc,\n securityGroup: runnerSg,\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\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. 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\n3. When using GitHub app, make sure there are active installation in `github.auth.app.installations`\n4. 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"
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: FargateProvider.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 FargateProvider(this, 'fargate runner', {\n label: 'customized-fargate',\n vpc: vpc,\n securityGroup: runnerSg,\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\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. 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\n3. When using GitHub app, make sure there are active installation in `github.auth.app.installations`\n4. 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"
2999
3038
  },
3000
3039
  "repository": {
3001
3040
  "type": "git",
@@ -3124,7 +3163,7 @@
3124
3163
  "assembly": "@cloudsnorkel/cdk-github-runners",
3125
3164
  "base": "constructs.Construct",
3126
3165
  "docs": {
3127
- "remarks": "Builders can be used with runner providers.\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. Each provider has its own requirements for what an image should do. That's why they each provide their own Dockerfile.\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 CodeBuildImageBuilder(this, 'Builder', {\n dockerfilePath: FargateProvider.LINUX_X64_DOCKERFILE_PATH,\n runnerVersion: RunnerVersion.specific('2.293.0'),\n rebuildInterval: Duration.days(14),\n});\nbuilder.setBuildArg('EXTRA_PACKAGES', 'nginx xz-utils');\nnew FargateProvider(this, 'Fargate provider', {\n label: 'customized-fargate',\n imageBuilder: builder,\n});\n```",
3166
+ "remarks": "Builders can be used with runner providers.\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. Each provider has its own requirements for what an image should do. That's why they each provide their own Dockerfile.\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 CodeBuildImageBuilder(this, 'Builder', {\n dockerfilePath: FargateProvider.LINUX_X64_DOCKERFILE_PATH,\n runnerVersion: RunnerVersion.specific('2.293.0'),\n rebuildInterval: Duration.days(14),\n});\nbuilder.setBuildArg('EXTRA_PACKAGES', 'nginx xz-utils');\nnew FargateRunner(this, 'Fargate provider', {\n label: 'customized-fargate',\n imageBuilder: builder,\n});\n```",
3128
3167
  "stability": "experimental",
3129
3168
  "summary": "An image builder that uses CodeBuild to build Docker images pre-baked with all the GitHub Actions runner requirements."
3130
3169
  },
@@ -3135,7 +3174,7 @@
3135
3174
  },
3136
3175
  "locationInModule": {
3137
3176
  "filename": "src/providers/image-builders/codebuild.ts",
3138
- "line": 164
3177
+ "line": 168
3139
3178
  },
3140
3179
  "parameters": [
3141
3180
  {
@@ -3175,7 +3214,7 @@
3175
3214
  },
3176
3215
  "locationInModule": {
3177
3216
  "filename": "src/providers/image-builders/codebuild.ts",
3178
- "line": 271
3217
+ "line": 275
3179
3218
  },
3180
3219
  "name": "addExtraCertificates",
3181
3220
  "parameters": [
@@ -3197,7 +3236,7 @@
3197
3236
  },
3198
3237
  "locationInModule": {
3199
3238
  "filename": "src/providers/image-builders/codebuild.ts",
3200
- "line": 205
3239
+ "line": 209
3201
3240
  },
3202
3241
  "name": "addFiles",
3203
3242
  "parameters": [
@@ -3228,7 +3267,7 @@
3228
3267
  },
3229
3268
  "locationInModule": {
3230
3269
  "filename": "src/providers/image-builders/codebuild.ts",
3231
- "line": 257
3270
+ "line": 261
3232
3271
  },
3233
3272
  "name": "addPolicyStatement",
3234
3273
  "parameters": [
@@ -3250,7 +3289,7 @@
3250
3289
  },
3251
3290
  "locationInModule": {
3252
3291
  "filename": "src/providers/image-builders/codebuild.ts",
3253
- "line": 232
3292
+ "line": 236
3254
3293
  },
3255
3294
  "name": "addPostBuildCommand",
3256
3295
  "parameters": [
@@ -3272,7 +3311,7 @@
3272
3311
  },
3273
3312
  "locationInModule": {
3274
3313
  "filename": "src/providers/image-builders/codebuild.ts",
3275
- "line": 220
3314
+ "line": 224
3276
3315
  },
3277
3316
  "name": "addPreBuildCommand",
3278
3317
  "parameters": [
@@ -3294,7 +3333,7 @@
3294
3333
  },
3295
3334
  "locationInModule": {
3296
3335
  "filename": "src/providers/image-builders/codebuild.ts",
3297
- "line": 281
3336
+ "line": 285
3298
3337
  },
3299
3338
  "name": "bind",
3300
3339
  "overrides": "@cloudsnorkel/cdk-github-runners.IImageBuilder",
@@ -3312,7 +3351,7 @@
3312
3351
  },
3313
3352
  "locationInModule": {
3314
3353
  "filename": "src/providers/image-builders/codebuild.ts",
3315
- "line": 245
3354
+ "line": 249
3316
3355
  },
3317
3356
  "name": "setBuildArg",
3318
3357
  "parameters": [
@@ -3346,7 +3385,7 @@
3346
3385
  "immutable": true,
3347
3386
  "locationInModule": {
3348
3387
  "filename": "src/providers/image-builders/codebuild.ts",
3349
- "line": 164
3388
+ "line": 168
3350
3389
  },
3351
3390
  "name": "props",
3352
3391
  "type": {
@@ -3578,7 +3617,7 @@
3578
3617
  "docs": {
3579
3618
  "default": "no VPC",
3580
3619
  "stability": "experimental",
3581
- "summary": "VPC to launch the runners in."
3620
+ "summary": "VPC to build the image in."
3582
3621
  },
3583
3622
  "immutable": true,
3584
3623
  "locationInModule": {
@@ -3609,7 +3648,7 @@
3609
3648
  },
3610
3649
  "locationInModule": {
3611
3650
  "filename": "src/providers/codebuild.ts",
3612
- "line": 133
3651
+ "line": 138
3613
3652
  },
3614
3653
  "parameters": [
3615
3654
  {
@@ -3649,7 +3688,7 @@
3649
3688
  },
3650
3689
  "locationInModule": {
3651
3690
  "filename": "src/providers/codebuild.ts",
3652
- "line": 233
3691
+ "line": 249
3653
3692
  },
3654
3693
  "name": "getStepFunctionTask",
3655
3694
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -3717,7 +3756,7 @@
3717
3756
  "immutable": true,
3718
3757
  "locationInModule": {
3719
3758
  "filename": "src/providers/codebuild.ts",
3720
- "line": 273
3759
+ "line": 289
3721
3760
  },
3722
3761
  "name": "connections",
3723
3762
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -3741,6 +3780,22 @@
3741
3780
  "fqn": "aws-cdk-lib.aws_iam.IPrincipal"
3742
3781
  }
3743
3782
  },
3783
+ {
3784
+ "docs": {
3785
+ "stability": "experimental",
3786
+ "summary": "Docker image in CodeBuild project."
3787
+ },
3788
+ "immutable": true,
3789
+ "locationInModule": {
3790
+ "filename": "src/providers/codebuild.ts",
3791
+ "line": 136
3792
+ },
3793
+ "name": "image",
3794
+ "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
3795
+ "type": {
3796
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImage"
3797
+ }
3798
+ },
3744
3799
  {
3745
3800
  "docs": {
3746
3801
  "stability": "experimental",
@@ -3958,22 +4013,22 @@
3958
4013
  ],
3959
4014
  "symbolId": "src/providers/codebuild:CodeBuildRunnerProps"
3960
4015
  },
3961
- "@cloudsnorkel/cdk-github-runners.FargateRunner": {
4016
+ "@cloudsnorkel/cdk-github-runners.ContainerImageBuilder": {
3962
4017
  "assembly": "@cloudsnorkel/cdk-github-runners",
3963
4018
  "base": "constructs.Construct",
3964
4019
  "docs": {
3965
- "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.",
4020
+ "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```",
3966
4021
  "stability": "experimental",
3967
- "summary": "GitHub Actions runner provider using Fargate to execute the actions."
4022
+ "summary": "An image builder that uses Image Builder to build Docker images pre-baked with all the GitHub Actions runner requirements."
3968
4023
  },
3969
- "fqn": "@cloudsnorkel/cdk-github-runners.FargateRunner",
4024
+ "fqn": "@cloudsnorkel/cdk-github-runners.ContainerImageBuilder",
3970
4025
  "initializer": {
3971
4026
  "docs": {
3972
4027
  "stability": "experimental"
3973
4028
  },
3974
4029
  "locationInModule": {
3975
- "filename": "src/providers/fargate.ts",
3976
- "line": 229
4030
+ "filename": "src/providers/image-builders/container.ts",
4031
+ "line": 422
3977
4032
  },
3978
4033
  "parameters": [
3979
4034
  {
@@ -3990,409 +4045,442 @@
3990
4045
  },
3991
4046
  {
3992
4047
  "name": "props",
4048
+ "optional": true,
3993
4049
  "type": {
3994
- "fqn": "@cloudsnorkel/cdk-github-runners.FargateRunnerProps"
4050
+ "fqn": "@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps"
3995
4051
  }
3996
4052
  }
3997
4053
  ]
3998
4054
  },
3999
4055
  "interfaces": [
4000
- "@cloudsnorkel/cdk-github-runners.IRunnerProvider"
4056
+ "@cloudsnorkel/cdk-github-runners.IImageBuilder"
4001
4057
  ],
4002
4058
  "kind": "class",
4003
4059
  "locationInModule": {
4004
- "filename": "src/providers/fargate.ts",
4005
- "line": 160
4060
+ "filename": "src/providers/image-builders/container.ts",
4061
+ "line": 402
4006
4062
  },
4007
4063
  "methods": [
4008
4064
  {
4009
4065
  "docs": {
4010
- "remarks": "Called by GithubRunners and shouldn't be called manually.",
4011
4066
  "stability": "experimental",
4012
- "summary": "Generate step function task(s) to start a new runner."
4067
+ "summary": "Add a component to be installed."
4013
4068
  },
4014
4069
  "locationInModule": {
4015
- "filename": "src/providers/fargate.ts",
4016
- "line": 298
4070
+ "filename": "src/providers/image-builders/container.ts",
4071
+ "line": 564
4017
4072
  },
4018
- "name": "getStepFunctionTask",
4019
- "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
4073
+ "name": "addComponent",
4074
+ "parameters": [
4075
+ {
4076
+ "name": "component",
4077
+ "type": {
4078
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"
4079
+ }
4080
+ }
4081
+ ]
4082
+ },
4083
+ {
4084
+ "docs": {
4085
+ "remarks": "All first party Dockerfiles support this. Others may not.",
4086
+ "stability": "experimental",
4087
+ "summary": "Add extra trusted certificates. This helps deal with self-signed certificates for GitHub Enterprise Server."
4088
+ },
4089
+ "locationInModule": {
4090
+ "filename": "src/providers/image-builders/container.ts",
4091
+ "line": 581
4092
+ },
4093
+ "name": "addExtraCertificates",
4020
4094
  "parameters": [
4021
4095
  {
4022
4096
  "docs": {
4023
- "summary": "workflow job details."
4097
+ "summary": "path to directory containing a file called certs.pem containing all the required certificates."
4024
4098
  },
4025
- "name": "parameters",
4099
+ "name": "path",
4026
4100
  "type": {
4027
- "fqn": "@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters"
4101
+ "primitive": "string"
4028
4102
  }
4029
4103
  }
4030
- ],
4104
+ ]
4105
+ },
4106
+ {
4107
+ "docs": {
4108
+ "stability": "experimental",
4109
+ "summary": "Called by IRunnerProvider to finalize settings and create the image builder."
4110
+ },
4111
+ "locationInModule": {
4112
+ "filename": "src/providers/image-builders/container.ts",
4113
+ "line": 602
4114
+ },
4115
+ "name": "bind",
4116
+ "overrides": "@cloudsnorkel/cdk-github-runners.IImageBuilder",
4031
4117
  "returns": {
4032
4118
  "type": {
4033
- "fqn": "aws-cdk-lib.aws_stepfunctions.IChainable"
4119
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImage"
4034
4120
  }
4035
4121
  }
4122
+ },
4123
+ {
4124
+ "docs": {
4125
+ "remarks": "Useful for required system settings like certificates or proxy settings.",
4126
+ "stability": "experimental",
4127
+ "summary": "Add a component to be installed before any other components."
4128
+ },
4129
+ "locationInModule": {
4130
+ "filename": "src/providers/image-builders/container.ts",
4131
+ "line": 550
4132
+ },
4133
+ "name": "prependComponent",
4134
+ "parameters": [
4135
+ {
4136
+ "name": "component",
4137
+ "type": {
4138
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent"
4139
+ }
4140
+ }
4141
+ ]
4036
4142
  }
4037
4143
  ],
4038
- "name": "FargateRunner",
4144
+ "name": "ContainerImageBuilder",
4039
4145
  "properties": [
4040
4146
  {
4041
- "const": true,
4042
4147
  "docs": {
4043
- "remarks": "Use this Dockerfile unless you need to customize it further than allowed by hooks.\n\nAvailable build arguments that can be set in the image builder:\n* `BASE_IMAGE` sets the `FROM` line. This should be an Ubuntu compatible image.\n* `EXTRA_PACKAGES` can be used to install additional packages.",
4044
- "stability": "experimental",
4045
- "summary": "Path to Dockerfile for Linux ARM64 with all the requirement for Fargate runner."
4148
+ "stability": "experimental"
4046
4149
  },
4047
4150
  "immutable": true,
4048
4151
  "locationInModule": {
4049
- "filename": "src/providers/fargate.ts",
4050
- "line": 177
4152
+ "filename": "src/providers/image-builders/container.ts",
4153
+ "line": 403
4051
4154
  },
4052
- "name": "LINUX_ARM64_DOCKERFILE_PATH",
4053
- "static": true,
4155
+ "name": "architecture",
4054
4156
  "type": {
4055
- "primitive": "string"
4157
+ "fqn": "@cloudsnorkel/cdk-github-runners.Architecture"
4056
4158
  }
4057
4159
  },
4058
4160
  {
4059
- "const": true,
4060
4161
  "docs": {
4061
- "remarks": "Use this Dockerfile unless you need to customize it further than allowed by hooks.\n\nAvailable build arguments that can be set in the image builder:\n* `BASE_IMAGE` sets the `FROM` line. This should be an Ubuntu compatible image.\n* `EXTRA_PACKAGES` can be used to install additional packages.",
4062
- "stability": "experimental",
4063
- "summary": "Path to Dockerfile for Linux x64 with all the requirement for Fargate runner."
4162
+ "stability": "experimental"
4064
4163
  },
4065
4164
  "immutable": true,
4066
4165
  "locationInModule": {
4067
- "filename": "src/providers/fargate.ts",
4068
- "line": 168
4166
+ "filename": "src/providers/image-builders/container.ts",
4167
+ "line": 407
4069
4168
  },
4070
- "name": "LINUX_X64_DOCKERFILE_PATH",
4071
- "static": true,
4169
+ "name": "description",
4072
4170
  "type": {
4073
4171
  "primitive": "string"
4074
4172
  }
4075
4173
  },
4076
4174
  {
4077
4175
  "docs": {
4078
- "stability": "experimental",
4079
- "summary": "Whether task will have a public IP."
4176
+ "stability": "experimental"
4080
4177
  },
4081
4178
  "immutable": true,
4082
4179
  "locationInModule": {
4083
- "filename": "src/providers/fargate.ts",
4084
- "line": 212
4180
+ "filename": "src/providers/image-builders/container.ts",
4181
+ "line": 417
4085
4182
  },
4086
- "name": "assignPublicIp",
4183
+ "name": "instanceTypes",
4087
4184
  "type": {
4088
- "primitive": "boolean"
4185
+ "collection": {
4186
+ "elementtype": {
4187
+ "primitive": "string"
4188
+ },
4189
+ "kind": "array"
4190
+ }
4089
4191
  }
4090
4192
  },
4091
4193
  {
4092
4194
  "docs": {
4093
- "stability": "experimental",
4094
- "summary": "Cluster hosting the task hosting the runner."
4195
+ "stability": "experimental"
4095
4196
  },
4096
4197
  "immutable": true,
4097
4198
  "locationInModule": {
4098
- "filename": "src/providers/fargate.ts",
4099
- "line": 182
4199
+ "filename": "src/providers/image-builders/container.ts",
4200
+ "line": 420
4100
4201
  },
4101
- "name": "cluster",
4202
+ "name": "logRemovalPolicy",
4102
4203
  "type": {
4103
- "fqn": "aws-cdk-lib.aws_ecs.Cluster"
4204
+ "fqn": "aws-cdk-lib.RemovalPolicy"
4104
4205
  }
4105
4206
  },
4106
4207
  {
4107
4208
  "docs": {
4108
- "stability": "experimental",
4109
- "summary": "The network connections associated with this resource."
4209
+ "stability": "experimental"
4110
4210
  },
4111
4211
  "immutable": true,
4112
4212
  "locationInModule": {
4113
- "filename": "src/providers/fargate.ts",
4114
- "line": 222
4213
+ "filename": "src/providers/image-builders/container.ts",
4214
+ "line": 419
4115
4215
  },
4116
- "name": "connections",
4117
- "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
4216
+ "name": "logRetention",
4118
4217
  "type": {
4119
- "fqn": "aws-cdk-lib.aws_ec2.Connections"
4218
+ "fqn": "aws-cdk-lib.aws_logs.RetentionDays"
4120
4219
  }
4121
4220
  },
4122
4221
  {
4123
4222
  "docs": {
4124
- "stability": "experimental",
4125
- "summary": "Container definition hosting the runner."
4223
+ "stability": "experimental"
4126
4224
  },
4127
4225
  "immutable": true,
4128
4226
  "locationInModule": {
4129
- "filename": "src/providers/fargate.ts",
4130
- "line": 192
4227
+ "filename": "src/providers/image-builders/container.ts",
4228
+ "line": 404
4131
4229
  },
4132
- "name": "container",
4230
+ "name": "os",
4133
4231
  "type": {
4134
- "fqn": "aws-cdk-lib.aws_ecs.ContainerDefinition"
4232
+ "fqn": "@cloudsnorkel/cdk-github-runners.Os"
4135
4233
  }
4136
4234
  },
4137
4235
  {
4138
4236
  "docs": {
4139
- "stability": "experimental",
4140
- "summary": "Grant principal used to add permissions to the runner role."
4237
+ "stability": "experimental"
4141
4238
  },
4142
4239
  "immutable": true,
4143
4240
  "locationInModule": {
4144
- "filename": "src/providers/fargate.ts",
4145
- "line": 217
4241
+ "filename": "src/providers/image-builders/container.ts",
4242
+ "line": 405
4146
4243
  },
4147
- "name": "grantPrincipal",
4148
- "overrides": "aws-cdk-lib.aws_iam.IGrantable",
4244
+ "name": "platform",
4149
4245
  "type": {
4150
- "fqn": "aws-cdk-lib.aws_iam.IPrincipal"
4246
+ "primitive": "string"
4151
4247
  }
4152
4248
  },
4153
4249
  {
4154
4250
  "docs": {
4155
- "stability": "experimental",
4156
- "summary": "Label associated with this provider."
4251
+ "stability": "experimental"
4157
4252
  },
4158
4253
  "immutable": true,
4159
4254
  "locationInModule": {
4160
- "filename": "src/providers/fargate.ts",
4161
- "line": 197
4255
+ "filename": "src/providers/image-builders/container.ts",
4256
+ "line": 418
4162
4257
  },
4163
- "name": "label",
4164
- "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
4258
+ "name": "rebuildInterval",
4165
4259
  "type": {
4166
- "primitive": "string"
4260
+ "fqn": "aws-cdk-lib.Duration"
4167
4261
  }
4168
4262
  },
4169
4263
  {
4170
4264
  "docs": {
4171
- "stability": "experimental",
4172
- "summary": "Use spot pricing for Fargate tasks."
4265
+ "stability": "experimental"
4173
4266
  },
4174
4267
  "immutable": true,
4175
4268
  "locationInModule": {
4176
- "filename": "src/providers/fargate.ts",
4177
- "line": 227
4269
+ "filename": "src/providers/image-builders/container.ts",
4270
+ "line": 411
4178
4271
  },
4179
- "name": "spot",
4272
+ "name": "repository",
4180
4273
  "type": {
4181
- "primitive": "boolean"
4274
+ "fqn": "aws-cdk-lib.aws_ecr.IRepository"
4182
4275
  }
4183
4276
  },
4184
4277
  {
4185
4278
  "docs": {
4186
- "stability": "experimental",
4187
- "summary": "Fargate task hosting the runner."
4279
+ "stability": "experimental"
4188
4280
  },
4189
4281
  "immutable": true,
4190
4282
  "locationInModule": {
4191
- "filename": "src/providers/fargate.ts",
4192
- "line": 187
4283
+ "filename": "src/providers/image-builders/container.ts",
4284
+ "line": 409
4193
4285
  },
4194
- "name": "task",
4286
+ "name": "runnerVersion",
4195
4287
  "type": {
4196
- "fqn": "aws-cdk-lib.aws_ecs.FargateTaskDefinition"
4288
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerVersion"
4197
4289
  }
4198
4290
  },
4199
4291
  {
4200
4292
  "docs": {
4201
- "stability": "experimental",
4202
- "summary": "Security group attached to the task."
4293
+ "stability": "experimental"
4203
4294
  },
4204
4295
  "immutable": true,
4205
4296
  "locationInModule": {
4206
- "filename": "src/providers/fargate.ts",
4207
- "line": 207
4297
+ "filename": "src/providers/image-builders/container.ts",
4298
+ "line": 416
4208
4299
  },
4209
- "name": "securityGroup",
4300
+ "name": "securityGroupIds",
4210
4301
  "optional": true,
4211
- "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
4212
4302
  "type": {
4213
- "fqn": "aws-cdk-lib.aws_ec2.ISecurityGroup"
4303
+ "collection": {
4304
+ "elementtype": {
4305
+ "primitive": "string"
4306
+ },
4307
+ "kind": "array"
4308
+ }
4214
4309
  }
4215
4310
  },
4216
4311
  {
4217
4312
  "docs": {
4218
- "stability": "experimental",
4219
- "summary": "VPC used for hosting the task."
4313
+ "stability": "experimental"
4220
4314
  },
4221
4315
  "immutable": true,
4222
4316
  "locationInModule": {
4223
- "filename": "src/providers/fargate.ts",
4224
- "line": 202
4317
+ "filename": "src/providers/image-builders/container.ts",
4318
+ "line": 415
4225
4319
  },
4226
- "name": "vpc",
4320
+ "name": "subnetId",
4227
4321
  "optional": true,
4228
- "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
4229
4322
  "type": {
4230
- "fqn": "aws-cdk-lib.aws_ec2.IVpc"
4323
+ "primitive": "string"
4231
4324
  }
4232
4325
  }
4233
4326
  ],
4234
- "symbolId": "src/providers/fargate:FargateRunner"
4327
+ "symbolId": "src/providers/image-builders/container:ContainerImageBuilder"
4235
4328
  },
4236
- "@cloudsnorkel/cdk-github-runners.FargateRunnerProps": {
4329
+ "@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps": {
4237
4330
  "assembly": "@cloudsnorkel/cdk-github-runners",
4238
4331
  "datatype": true,
4239
4332
  "docs": {
4240
4333
  "stability": "experimental",
4241
- "summary": "Properties for FargateRunner."
4334
+ "summary": "Properties for ContainerImageBuilder construct."
4242
4335
  },
4243
- "fqn": "@cloudsnorkel/cdk-github-runners.FargateRunnerProps",
4244
- "interfaces": [
4245
- "@cloudsnorkel/cdk-github-runners.RunnerProviderProps"
4246
- ],
4336
+ "fqn": "@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps",
4247
4337
  "kind": "interface",
4248
4338
  "locationInModule": {
4249
- "filename": "src/providers/fargate.ts",
4250
- "line": 19
4339
+ "filename": "src/providers/image-builders/container.ts",
4340
+ "line": 27
4251
4341
  },
4252
- "name": "FargateRunnerProps",
4342
+ "name": "ContainerImageBuilderProps",
4253
4343
  "properties": [
4254
4344
  {
4255
4345
  "abstract": true,
4256
4346
  "docs": {
4257
- "default": "true",
4258
- "remarks": "Make sure the task will have access to GitHub. A public IP might be required unless you have NAT gateway.",
4347
+ "default": "Architecture.X86_64",
4259
4348
  "stability": "experimental",
4260
- "summary": "Assign public IP to the runner task."
4349
+ "summary": "Image architecture."
4261
4350
  },
4262
4351
  "immutable": true,
4263
4352
  "locationInModule": {
4264
- "filename": "src/providers/fargate.ts",
4265
- "line": 72
4353
+ "filename": "src/providers/image-builders/container.ts",
4354
+ "line": 33
4266
4355
  },
4267
- "name": "assignPublicIp",
4356
+ "name": "architecture",
4268
4357
  "optional": true,
4269
4358
  "type": {
4270
- "primitive": "boolean"
4359
+ "fqn": "@cloudsnorkel/cdk-github-runners.Architecture"
4271
4360
  }
4272
4361
  },
4273
4362
  {
4274
4363
  "abstract": true,
4275
4364
  "docs": {
4276
- "default": "a new cluster",
4365
+ "default": "m5.large",
4277
4366
  "stability": "experimental",
4278
- "summary": "Existing Fargate cluster to use."
4367
+ "summary": "The instance type used to build the image."
4279
4368
  },
4280
4369
  "immutable": true,
4281
4370
  "locationInModule": {
4282
- "filename": "src/providers/fargate.ts",
4283
- "line": 63
4371
+ "filename": "src/providers/image-builders/container.ts",
4372
+ "line": 84
4284
4373
  },
4285
- "name": "cluster",
4374
+ "name": "instanceType",
4286
4375
  "optional": true,
4287
4376
  "type": {
4288
- "fqn": "aws-cdk-lib.aws_ecs.Cluster"
4377
+ "fqn": "aws-cdk-lib.aws_ec2.InstanceType"
4289
4378
  }
4290
4379
  },
4291
4380
  {
4292
4381
  "abstract": true,
4293
4382
  "docs": {
4294
- "default": "1024",
4295
- "remarks": "For tasks using the Fargate launch type,\nthis field is required and you must use one of the following values,\nwhich determines your range of valid values for the memory parameter:\n\n256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB)\n\n512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB)\n\n1024 (1 vCPU) - Available memory values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB)\n\n2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB)\n\n4096 (4 vCPU) - Available memory values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB)",
4383
+ "default": "RemovalPolicy.DESTROY",
4384
+ "remarks": "If deployment fails on the custom resource, try setting this to `RemovalPolicy.RETAIN`. This way the CodeBuild logs can still be viewed, and you can see why the build failed.\n\nWe try to not leave anything behind when removed. But sometimes a log staying behind is useful.",
4296
4385
  "stability": "experimental",
4297
- "summary": "The number of cpu units used by the task."
4386
+ "summary": "Removal policy for logs of image builds."
4298
4387
  },
4299
4388
  "immutable": true,
4300
4389
  "locationInModule": {
4301
- "filename": "src/providers/fargate.ts",
4302
- "line": 91
4390
+ "filename": "src/providers/image-builders/container.ts",
4391
+ "line": 102
4303
4392
  },
4304
- "name": "cpu",
4393
+ "name": "logRemovalPolicy",
4305
4394
  "optional": true,
4306
4395
  "type": {
4307
- "primitive": "number"
4396
+ "fqn": "aws-cdk-lib.RemovalPolicy"
4308
4397
  }
4309
4398
  },
4310
4399
  {
4311
4400
  "abstract": true,
4312
4401
  "docs": {
4313
- "default": "20",
4314
- "remarks": "The maximum supported value is 200 GiB.\n\nNOTE: This parameter is only supported for tasks hosted on AWS Fargate using platform version 1.4.0 or later.",
4402
+ "default": "logs.RetentionDays.ONE_MONTH",
4403
+ "remarks": "When updating\nthis property, unsetting it doesn't remove the log retention policy. To\nremove the retention policy, set the value to `INFINITE`.",
4315
4404
  "stability": "experimental",
4316
- "summary": "The amount (in GiB) of ephemeral storage to be allocated to the task."
4405
+ "summary": "The number of days log events are kept in CloudWatch Logs."
4317
4406
  },
4318
4407
  "immutable": true,
4319
4408
  "locationInModule": {
4320
- "filename": "src/providers/fargate.ts",
4321
- "line": 118
4409
+ "filename": "src/providers/image-builders/container.ts",
4410
+ "line": 93
4322
4411
  },
4323
- "name": "ephemeralStorageGiB",
4412
+ "name": "logRetention",
4324
4413
  "optional": true,
4325
4414
  "type": {
4326
- "primitive": "number"
4415
+ "fqn": "aws-cdk-lib.aws_logs.RetentionDays"
4327
4416
  }
4328
4417
  },
4329
4418
  {
4330
4419
  "abstract": true,
4331
4420
  "docs": {
4332
- "default": "image builder with `FargateRunner.LINUX_X64_DOCKERFILE_PATH` as Dockerfile",
4333
- "remarks": "A user named `runner` is expected to exist.\n\nThe entry point should start GitHub runner. For example:\n\n```\n#!/bin/bash\nset -e -u -o pipefail\n\n/home/runner/config.sh --unattended --url \"https://${GITHUB_DOMAIN}/${OWNER}/${REPO}\" --token \"${RUNNER_TOKEN}\" --ephemeral --work _work --labels \"${RUNNER_LABEL}\" --disableupdate --name \"${RUNNER_NAME}\"\n/home/runner/run.sh\n```",
4421
+ "default": "OS.LINUX",
4334
4422
  "stability": "experimental",
4335
- "summary": "Provider running an image to run inside CodeBuild with GitHub runner pre-configured."
4423
+ "summary": "Image OS."
4336
4424
  },
4337
4425
  "immutable": true,
4338
4426
  "locationInModule": {
4339
- "filename": "src/providers/fargate.ts",
4340
- "line": 35
4427
+ "filename": "src/providers/image-builders/container.ts",
4428
+ "line": 40
4341
4429
  },
4342
- "name": "imageBuilder",
4430
+ "name": "os",
4343
4431
  "optional": true,
4344
4432
  "type": {
4345
- "fqn": "@cloudsnorkel/cdk-github-runners.IImageBuilder"
4433
+ "fqn": "@cloudsnorkel/cdk-github-runners.Os"
4346
4434
  }
4347
4435
  },
4348
4436
  {
4349
4437
  "abstract": true,
4350
4438
  "docs": {
4351
- "default": "'fargate'",
4439
+ "default": "Duration.days(7)",
4440
+ "remarks": "Useful for keeping the image up-do-date with the latest GitHub runner version and latest OS updates.\n\nSet to zero to disable.",
4352
4441
  "stability": "experimental",
4353
- "summary": "GitHub Actions label used for this provider."
4442
+ "summary": "Schedule the image to be rebuilt every given interval."
4354
4443
  },
4355
4444
  "immutable": true,
4356
4445
  "locationInModule": {
4357
- "filename": "src/providers/fargate.ts",
4358
- "line": 42
4446
+ "filename": "src/providers/image-builders/container.ts",
4447
+ "line": 56
4359
4448
  },
4360
- "name": "label",
4449
+ "name": "rebuildInterval",
4361
4450
  "optional": true,
4362
4451
  "type": {
4363
- "primitive": "string"
4452
+ "fqn": "aws-cdk-lib.Duration"
4364
4453
  }
4365
4454
  },
4366
4455
  {
4367
4456
  "abstract": true,
4368
4457
  "docs": {
4369
- "default": "2048",
4370
- "remarks": "For tasks using the Fargate launch type,\nthis field is required and you must use one of the following values, which determines your range of valid values for the cpu parameter:\n\n512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: 256 (.25 vCPU)\n\n1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available cpu values: 512 (.5 vCPU)\n\n2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available cpu values: 1024 (1 vCPU)\n\nBetween 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - Available cpu values: 2048 (2 vCPU)\n\nBetween 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - Available cpu values: 4096 (4 vCPU)",
4458
+ "default": "latest version available",
4371
4459
  "stability": "experimental",
4372
- "summary": "The amount (in MiB) of memory used by the task."
4460
+ "summary": "Version of GitHub Runners to install."
4373
4461
  },
4374
4462
  "immutable": true,
4375
4463
  "locationInModule": {
4376
- "filename": "src/providers/fargate.ts",
4377
- "line": 109
4464
+ "filename": "src/providers/image-builders/container.ts",
4465
+ "line": 47
4378
4466
  },
4379
- "name": "memoryLimitMiB",
4467
+ "name": "runnerVersion",
4380
4468
  "optional": true,
4381
4469
  "type": {
4382
- "primitive": "number"
4470
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerVersion"
4383
4471
  }
4384
4472
  },
4385
4473
  {
4386
4474
  "abstract": true,
4387
4475
  "docs": {
4388
- "default": "a new security group",
4476
+ "default": "default account security group",
4389
4477
  "stability": "experimental",
4390
- "summary": "Security Group to assign to the task."
4478
+ "summary": "Security Group to assign to this instance."
4391
4479
  },
4392
4480
  "immutable": true,
4393
4481
  "locationInModule": {
4394
- "filename": "src/providers/fargate.ts",
4395
- "line": 56
4482
+ "filename": "src/providers/image-builders/container.ts",
4483
+ "line": 70
4396
4484
  },
4397
4485
  "name": "securityGroup",
4398
4486
  "optional": true,
@@ -4403,20 +4491,19 @@
4403
4491
  {
4404
4492
  "abstract": true,
4405
4493
  "docs": {
4406
- "default": "false",
4407
- "remarks": "* Runners may fail to start due to missing capacity.\n* Runners might be stopped prematurely with spot pricing.",
4494
+ "default": "default VPC subnet",
4408
4495
  "stability": "experimental",
4409
- "summary": "Use Fargate spot capacity provider to save money."
4496
+ "summary": "Where to place the network interfaces within the VPC."
4410
4497
  },
4411
4498
  "immutable": true,
4412
4499
  "locationInModule": {
4413
- "filename": "src/providers/fargate.ts",
4414
- "line": 128
4500
+ "filename": "src/providers/image-builders/container.ts",
4501
+ "line": 77
4415
4502
  },
4416
- "name": "spot",
4503
+ "name": "subnetSelection",
4417
4504
  "optional": true,
4418
4505
  "type": {
4419
- "primitive": "boolean"
4506
+ "fqn": "aws-cdk-lib.aws_ec2.SubnetSelection"
4420
4507
  }
4421
4508
  },
4422
4509
  {
@@ -4428,8 +4515,8 @@
4428
4515
  },
4429
4516
  "immutable": true,
4430
4517
  "locationInModule": {
4431
- "filename": "src/providers/fargate.ts",
4432
- "line": 49
4518
+ "filename": "src/providers/image-builders/container.ts",
4519
+ "line": 63
4433
4520
  },
4434
4521
  "name": "vpc",
4435
4522
  "optional": true,
@@ -4438,24 +4525,24 @@
4438
4525
  }
4439
4526
  }
4440
4527
  ],
4441
- "symbolId": "src/providers/fargate:FargateRunnerProps"
4528
+ "symbolId": "src/providers/image-builders/container:ContainerImageBuilderProps"
4442
4529
  },
4443
- "@cloudsnorkel/cdk-github-runners.GitHubRunners": {
4530
+ "@cloudsnorkel/cdk-github-runners.FargateRunner": {
4444
4531
  "assembly": "@cloudsnorkel/cdk-github-runners",
4445
4532
  "base": "constructs.Construct",
4446
4533
  "docs": {
4447
- "remarks": "It creates a webhook, secrets, and a step function to orchestrate all runs. Secrets are not automatically filled. See README.md for instructions on how to setup GitHub integration.\n\nBy default, this will create a runner provider of each available type with the defaults. This is good enough for the initial setup stage when you just want to get GitHub integration working.\n\n```typescript\nnew GitHubRunners(this, 'runners');\n```\n\nUsually you'd want to configure the runner providers so the runners can run in a certain VPC or have certain permissions.\n\n```typescript\nconst vpc = ec2.Vpc.fromLookup(this, 'vpc', { vpcId: 'vpc-1234567' });\nconst runnerSg = new ec2.SecurityGroup(this, 'runner security group', { vpc: vpc });\nconst dbSg = ec2.SecurityGroup.fromSecurityGroupId(this, 'database security group', 'sg-1234567');\nconst bucket = new s3.Bucket(this, 'runner bucket');\n\n// create a custom CodeBuild provider\nconst myProvider = new CodeBuildRunner(\n this, 'codebuild runner',\n {\n label: 'my-codebuild',\n vpc: vpc,\n securityGroup: runnerSg,\n },\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(\n this,\n 'runners',\n {\n providers: [myProvider],\n }\n);\n```",
4534
+ "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.",
4448
4535
  "stability": "experimental",
4449
- "summary": "Create all the required infrastructure to provide self-hosted GitHub runners."
4536
+ "summary": "GitHub Actions runner provider using Fargate to execute the actions."
4450
4537
  },
4451
- "fqn": "@cloudsnorkel/cdk-github-runners.GitHubRunners",
4538
+ "fqn": "@cloudsnorkel/cdk-github-runners.FargateRunner",
4452
4539
  "initializer": {
4453
4540
  "docs": {
4454
4541
  "stability": "experimental"
4455
4542
  },
4456
4543
  "locationInModule": {
4457
- "filename": "src/runner.ts",
4458
- "line": 140
4544
+ "filename": "src/providers/fargate.ts",
4545
+ "line": 249
4459
4546
  },
4460
4547
  "parameters": [
4461
4548
  {
@@ -4472,290 +4559,1164 @@
4472
4559
  },
4473
4560
  {
4474
4561
  "name": "props",
4475
- "optional": true,
4476
4562
  "type": {
4477
- "fqn": "@cloudsnorkel/cdk-github-runners.GitHubRunnersProps"
4563
+ "fqn": "@cloudsnorkel/cdk-github-runners.FargateRunnerProps"
4478
4564
  }
4479
4565
  }
4480
4566
  ]
4481
4567
  },
4568
+ "interfaces": [
4569
+ "@cloudsnorkel/cdk-github-runners.IRunnerProvider"
4570
+ ],
4482
4571
  "kind": "class",
4483
4572
  "locationInModule": {
4484
- "filename": "src/runner.ts",
4485
- "line": 120
4573
+ "filename": "src/providers/fargate.ts",
4574
+ "line": 175
4486
4575
  },
4487
- "name": "GitHubRunners",
4576
+ "methods": [
4577
+ {
4578
+ "docs": {
4579
+ "remarks": "Called by GithubRunners and shouldn't be called manually.",
4580
+ "stability": "experimental",
4581
+ "summary": "Generate step function task(s) to start a new runner."
4582
+ },
4583
+ "locationInModule": {
4584
+ "filename": "src/providers/fargate.ts",
4585
+ "line": 331
4586
+ },
4587
+ "name": "getStepFunctionTask",
4588
+ "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
4589
+ "parameters": [
4590
+ {
4591
+ "docs": {
4592
+ "summary": "workflow job details."
4593
+ },
4594
+ "name": "parameters",
4595
+ "type": {
4596
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters"
4597
+ }
4598
+ }
4599
+ ],
4600
+ "returns": {
4601
+ "type": {
4602
+ "fqn": "aws-cdk-lib.aws_stepfunctions.IChainable"
4603
+ }
4604
+ }
4605
+ }
4606
+ ],
4607
+ "name": "FargateRunner",
4488
4608
  "properties": [
4489
4609
  {
4610
+ "const": true,
4490
4611
  "docs": {
4612
+ "remarks": "Use this Dockerfile unless you need to customize it further than allowed by hooks.\n\nAvailable build arguments that can be set in the image builder:\n* `BASE_IMAGE` sets the `FROM` line. This should be an Ubuntu compatible image.\n* `EXTRA_PACKAGES` can be used to install additional packages.",
4491
4613
  "stability": "experimental",
4492
- "summary": "Configured runner providers."
4614
+ "summary": "Path to Dockerfile for Linux ARM64 with all the requirement for Fargate runner."
4493
4615
  },
4494
4616
  "immutable": true,
4495
4617
  "locationInModule": {
4496
- "filename": "src/runner.ts",
4497
- "line": 127
4618
+ "filename": "src/providers/fargate.ts",
4619
+ "line": 192
4498
4620
  },
4499
- "name": "providers",
4621
+ "name": "LINUX_ARM64_DOCKERFILE_PATH",
4622
+ "static": true,
4500
4623
  "type": {
4501
- "collection": {
4502
- "elementtype": {
4503
- "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerProvider"
4504
- },
4505
- "kind": "array"
4506
- }
4624
+ "primitive": "string"
4507
4625
  }
4508
4626
  },
4509
4627
  {
4628
+ "const": true,
4510
4629
  "docs": {
4630
+ "remarks": "Use this Dockerfile unless you need to customize it further than allowed by hooks.\n\nAvailable build arguments that can be set in the image builder:\n* `BASE_IMAGE` sets the `FROM` line. This should be an Ubuntu compatible image.\n* `EXTRA_PACKAGES` can be used to install additional packages.",
4511
4631
  "stability": "experimental",
4512
- "summary": "Secrets for GitHub communication including webhook secret and runner authentication."
4632
+ "summary": "Path to Dockerfile for Linux x64 with all the requirement for Fargate runner."
4513
4633
  },
4514
4634
  "immutable": true,
4515
4635
  "locationInModule": {
4516
- "filename": "src/runner.ts",
4517
- "line": 132
4636
+ "filename": "src/providers/fargate.ts",
4637
+ "line": 183
4518
4638
  },
4519
- "name": "secrets",
4639
+ "name": "LINUX_X64_DOCKERFILE_PATH",
4640
+ "static": true,
4520
4641
  "type": {
4521
- "fqn": "@cloudsnorkel/cdk-github-runners.Secrets"
4642
+ "primitive": "string"
4522
4643
  }
4523
- }
4524
- ],
4525
- "symbolId": "src/runner:GitHubRunners"
4526
- },
4527
- "@cloudsnorkel/cdk-github-runners.GitHubRunnersProps": {
4528
- "assembly": "@cloudsnorkel/cdk-github-runners",
4529
- "datatype": true,
4530
- "docs": {
4531
- "stability": "experimental",
4532
- "summary": "Properties for GitHubRunners."
4533
- },
4534
- "fqn": "@cloudsnorkel/cdk-github-runners.GitHubRunnersProps",
4535
- "kind": "interface",
4536
- "locationInModule": {
4537
- "filename": "src/runner.ts",
4538
- "line": 22
4539
- },
4540
- "name": "GitHubRunnersProps",
4541
- "properties": [
4644
+ },
4542
4645
  {
4543
- "abstract": true,
4544
4646
  "docs": {
4545
- "default": "false",
4546
- "remarks": "Lambda Functions in a public subnet can NOT access the internet.",
4547
4647
  "stability": "experimental",
4548
- "summary": "Allow management functions to run in public subnets."
4648
+ "summary": "Whether task will have a public IP."
4549
4649
  },
4550
4650
  "immutable": true,
4551
4651
  "locationInModule": {
4552
- "filename": "src/runner.ts",
4553
- "line": 45
4652
+ "filename": "src/providers/fargate.ts",
4653
+ "line": 227
4554
4654
  },
4555
- "name": "allowPublicSubnet",
4556
- "optional": true,
4655
+ "name": "assignPublicIp",
4557
4656
  "type": {
4558
4657
  "primitive": "boolean"
4559
4658
  }
4560
4659
  },
4561
4660
  {
4562
- "abstract": true,
4563
4661
  "docs": {
4564
- "remarks": "You may also want to use custom images for your runner providers that contain the same certificates. See {@link CodeBuildImageBuilder.addCertificates}.\n\n```typescript\nconst imageBuilder = new CodeBuildImageBuilder(this, 'Image Builder with Certs', {\n dockerfilePath: CodeBuildRunner.LINUX_X64_DOCKERFILE_PATH,\n});\nimageBuilder.addExtraCertificates('path-to-my-extra-certs-folder');\n\nconst provider = new CodeBuildRunner(this, 'CodeBuild', {\n imageBuilder: imageBuilder,\n});\n\nnew GitHubRunners(\n this,\n 'runners',\n {\n providers: [provider],\n extraCertificates: 'path-to-my-extra-certs-folder',\n }\n);\n```",
4565
4662
  "stability": "experimental",
4566
- "summary": "Path to a directory containing a file named certs.pem containing any additional certificates required to trust GitHub Enterprise Server. Use this when GitHub Enterprise Server certificates are self-signed."
4663
+ "summary": "Cluster hosting the task hosting the runner."
4664
+ },
4665
+ "immutable": true,
4666
+ "locationInModule": {
4667
+ "filename": "src/providers/fargate.ts",
4668
+ "line": 197
4669
+ },
4670
+ "name": "cluster",
4671
+ "type": {
4672
+ "fqn": "aws-cdk-lib.aws_ecs.Cluster"
4673
+ }
4674
+ },
4675
+ {
4676
+ "docs": {
4677
+ "stability": "experimental",
4678
+ "summary": "The network connections associated with this resource."
4679
+ },
4680
+ "immutable": true,
4681
+ "locationInModule": {
4682
+ "filename": "src/providers/fargate.ts",
4683
+ "line": 237
4684
+ },
4685
+ "name": "connections",
4686
+ "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
4687
+ "type": {
4688
+ "fqn": "aws-cdk-lib.aws_ec2.Connections"
4689
+ }
4690
+ },
4691
+ {
4692
+ "docs": {
4693
+ "stability": "experimental",
4694
+ "summary": "Container definition hosting the runner."
4695
+ },
4696
+ "immutable": true,
4697
+ "locationInModule": {
4698
+ "filename": "src/providers/fargate.ts",
4699
+ "line": 207
4700
+ },
4701
+ "name": "container",
4702
+ "type": {
4703
+ "fqn": "aws-cdk-lib.aws_ecs.ContainerDefinition"
4704
+ }
4705
+ },
4706
+ {
4707
+ "docs": {
4708
+ "stability": "experimental",
4709
+ "summary": "Grant principal used to add permissions to the runner role."
4710
+ },
4711
+ "immutable": true,
4712
+ "locationInModule": {
4713
+ "filename": "src/providers/fargate.ts",
4714
+ "line": 232
4715
+ },
4716
+ "name": "grantPrincipal",
4717
+ "overrides": "aws-cdk-lib.aws_iam.IGrantable",
4718
+ "type": {
4719
+ "fqn": "aws-cdk-lib.aws_iam.IPrincipal"
4720
+ }
4721
+ },
4722
+ {
4723
+ "docs": {
4724
+ "stability": "experimental",
4725
+ "summary": "Docker image used to start a new Fargate task."
4726
+ },
4727
+ "immutable": true,
4728
+ "locationInModule": {
4729
+ "filename": "src/providers/fargate.ts",
4730
+ "line": 247
4731
+ },
4732
+ "name": "image",
4733
+ "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
4734
+ "type": {
4735
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImage"
4736
+ }
4737
+ },
4738
+ {
4739
+ "docs": {
4740
+ "stability": "experimental",
4741
+ "summary": "Label associated with this provider."
4742
+ },
4743
+ "immutable": true,
4744
+ "locationInModule": {
4745
+ "filename": "src/providers/fargate.ts",
4746
+ "line": 212
4747
+ },
4748
+ "name": "label",
4749
+ "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
4750
+ "type": {
4751
+ "primitive": "string"
4752
+ }
4753
+ },
4754
+ {
4755
+ "docs": {
4756
+ "stability": "experimental",
4757
+ "summary": "Use spot pricing for Fargate tasks."
4758
+ },
4759
+ "immutable": true,
4760
+ "locationInModule": {
4761
+ "filename": "src/providers/fargate.ts",
4762
+ "line": 242
4763
+ },
4764
+ "name": "spot",
4765
+ "type": {
4766
+ "primitive": "boolean"
4767
+ }
4768
+ },
4769
+ {
4770
+ "docs": {
4771
+ "stability": "experimental",
4772
+ "summary": "Fargate task hosting the runner."
4773
+ },
4774
+ "immutable": true,
4775
+ "locationInModule": {
4776
+ "filename": "src/providers/fargate.ts",
4777
+ "line": 202
4778
+ },
4779
+ "name": "task",
4780
+ "type": {
4781
+ "fqn": "aws-cdk-lib.aws_ecs.FargateTaskDefinition"
4782
+ }
4783
+ },
4784
+ {
4785
+ "docs": {
4786
+ "stability": "experimental",
4787
+ "summary": "Security group attached to the task."
4788
+ },
4789
+ "immutable": true,
4790
+ "locationInModule": {
4791
+ "filename": "src/providers/fargate.ts",
4792
+ "line": 222
4793
+ },
4794
+ "name": "securityGroup",
4795
+ "optional": true,
4796
+ "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
4797
+ "type": {
4798
+ "fqn": "aws-cdk-lib.aws_ec2.ISecurityGroup"
4799
+ }
4800
+ },
4801
+ {
4802
+ "docs": {
4803
+ "stability": "experimental",
4804
+ "summary": "VPC used for hosting the task."
4805
+ },
4806
+ "immutable": true,
4807
+ "locationInModule": {
4808
+ "filename": "src/providers/fargate.ts",
4809
+ "line": 217
4810
+ },
4811
+ "name": "vpc",
4812
+ "optional": true,
4813
+ "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
4814
+ "type": {
4815
+ "fqn": "aws-cdk-lib.aws_ec2.IVpc"
4816
+ }
4817
+ }
4818
+ ],
4819
+ "symbolId": "src/providers/fargate:FargateRunner"
4820
+ },
4821
+ "@cloudsnorkel/cdk-github-runners.FargateRunnerProps": {
4822
+ "assembly": "@cloudsnorkel/cdk-github-runners",
4823
+ "datatype": true,
4824
+ "docs": {
4825
+ "stability": "experimental",
4826
+ "summary": "Properties for FargateRunner."
4827
+ },
4828
+ "fqn": "@cloudsnorkel/cdk-github-runners.FargateRunnerProps",
4829
+ "interfaces": [
4830
+ "@cloudsnorkel/cdk-github-runners.RunnerProviderProps"
4831
+ ],
4832
+ "kind": "interface",
4833
+ "locationInModule": {
4834
+ "filename": "src/providers/fargate.ts",
4835
+ "line": 20
4836
+ },
4837
+ "name": "FargateRunnerProps",
4838
+ "properties": [
4839
+ {
4840
+ "abstract": true,
4841
+ "docs": {
4842
+ "default": "true",
4843
+ "remarks": "Make sure the task will have access to GitHub. A public IP might be required unless you have NAT gateway.",
4844
+ "stability": "experimental",
4845
+ "summary": "Assign public IP to the runner task."
4846
+ },
4847
+ "immutable": true,
4848
+ "locationInModule": {
4849
+ "filename": "src/providers/fargate.ts",
4850
+ "line": 73
4851
+ },
4852
+ "name": "assignPublicIp",
4853
+ "optional": true,
4854
+ "type": {
4855
+ "primitive": "boolean"
4856
+ }
4857
+ },
4858
+ {
4859
+ "abstract": true,
4860
+ "docs": {
4861
+ "default": "a new cluster",
4862
+ "stability": "experimental",
4863
+ "summary": "Existing Fargate cluster to use."
4864
+ },
4865
+ "immutable": true,
4866
+ "locationInModule": {
4867
+ "filename": "src/providers/fargate.ts",
4868
+ "line": 64
4869
+ },
4870
+ "name": "cluster",
4871
+ "optional": true,
4872
+ "type": {
4873
+ "fqn": "aws-cdk-lib.aws_ecs.Cluster"
4874
+ }
4875
+ },
4876
+ {
4877
+ "abstract": true,
4878
+ "docs": {
4879
+ "default": "1024",
4880
+ "remarks": "For tasks using the Fargate launch type,\nthis field is required and you must use one of the following values,\nwhich determines your range of valid values for the memory parameter:\n\n256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB)\n\n512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB)\n\n1024 (1 vCPU) - Available memory values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB)\n\n2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB)\n\n4096 (4 vCPU) - Available memory values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB)",
4881
+ "stability": "experimental",
4882
+ "summary": "The number of cpu units used by the task."
4883
+ },
4884
+ "immutable": true,
4885
+ "locationInModule": {
4886
+ "filename": "src/providers/fargate.ts",
4887
+ "line": 92
4888
+ },
4889
+ "name": "cpu",
4890
+ "optional": true,
4891
+ "type": {
4892
+ "primitive": "number"
4893
+ }
4894
+ },
4895
+ {
4896
+ "abstract": true,
4897
+ "docs": {
4898
+ "default": "20",
4899
+ "remarks": "The maximum supported value is 200 GiB.\n\nNOTE: This parameter is only supported for tasks hosted on AWS Fargate using platform version 1.4.0 or later.",
4900
+ "stability": "experimental",
4901
+ "summary": "The amount (in GiB) of ephemeral storage to be allocated to the task."
4902
+ },
4903
+ "immutable": true,
4904
+ "locationInModule": {
4905
+ "filename": "src/providers/fargate.ts",
4906
+ "line": 119
4907
+ },
4908
+ "name": "ephemeralStorageGiB",
4909
+ "optional": true,
4910
+ "type": {
4911
+ "primitive": "number"
4912
+ }
4913
+ },
4914
+ {
4915
+ "abstract": true,
4916
+ "docs": {
4917
+ "default": "image builder with `FargateRunner.LINUX_X64_DOCKERFILE_PATH` as Dockerfile",
4918
+ "remarks": "A user named `runner` is expected to exist.\n\nThe entry point should start GitHub runner. For example:\n\n```\n#!/bin/bash\nset -e -u -o pipefail\n\n/home/runner/config.sh --unattended --url \"https://${GITHUB_DOMAIN}/${OWNER}/${REPO}\" --token \"${RUNNER_TOKEN}\" --ephemeral --work _work --labels \"${RUNNER_LABEL}\" --disableupdate --name \"${RUNNER_NAME}\"\n/home/runner/run.sh\n```",
4919
+ "stability": "experimental",
4920
+ "summary": "Provider running an image to run inside CodeBuild with GitHub runner pre-configured."
4921
+ },
4922
+ "immutable": true,
4923
+ "locationInModule": {
4924
+ "filename": "src/providers/fargate.ts",
4925
+ "line": 36
4926
+ },
4927
+ "name": "imageBuilder",
4928
+ "optional": true,
4929
+ "type": {
4930
+ "fqn": "@cloudsnorkel/cdk-github-runners.IImageBuilder"
4931
+ }
4932
+ },
4933
+ {
4934
+ "abstract": true,
4935
+ "docs": {
4936
+ "default": "'fargate'",
4937
+ "stability": "experimental",
4938
+ "summary": "GitHub Actions label used for this provider."
4939
+ },
4940
+ "immutable": true,
4941
+ "locationInModule": {
4942
+ "filename": "src/providers/fargate.ts",
4943
+ "line": 43
4944
+ },
4945
+ "name": "label",
4946
+ "optional": true,
4947
+ "type": {
4948
+ "primitive": "string"
4949
+ }
4950
+ },
4951
+ {
4952
+ "abstract": true,
4953
+ "docs": {
4954
+ "default": "2048",
4955
+ "remarks": "For tasks using the Fargate launch type,\nthis field is required and you must use one of the following values, which determines your range of valid values for the cpu parameter:\n\n512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: 256 (.25 vCPU)\n\n1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available cpu values: 512 (.5 vCPU)\n\n2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available cpu values: 1024 (1 vCPU)\n\nBetween 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - Available cpu values: 2048 (2 vCPU)\n\nBetween 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - Available cpu values: 4096 (4 vCPU)",
4956
+ "stability": "experimental",
4957
+ "summary": "The amount (in MiB) of memory used by the task."
4958
+ },
4959
+ "immutable": true,
4960
+ "locationInModule": {
4961
+ "filename": "src/providers/fargate.ts",
4962
+ "line": 110
4963
+ },
4964
+ "name": "memoryLimitMiB",
4965
+ "optional": true,
4966
+ "type": {
4967
+ "primitive": "number"
4968
+ }
4969
+ },
4970
+ {
4971
+ "abstract": true,
4972
+ "docs": {
4973
+ "default": "a new security group",
4974
+ "stability": "experimental",
4975
+ "summary": "Security Group to assign to the task."
4976
+ },
4977
+ "immutable": true,
4978
+ "locationInModule": {
4979
+ "filename": "src/providers/fargate.ts",
4980
+ "line": 57
4981
+ },
4982
+ "name": "securityGroup",
4983
+ "optional": true,
4984
+ "type": {
4985
+ "fqn": "aws-cdk-lib.aws_ec2.ISecurityGroup"
4986
+ }
4987
+ },
4988
+ {
4989
+ "abstract": true,
4990
+ "docs": {
4991
+ "default": "false",
4992
+ "remarks": "* Runners may fail to start due to missing capacity.\n* Runners might be stopped prematurely with spot pricing.",
4993
+ "stability": "experimental",
4994
+ "summary": "Use Fargate spot capacity provider to save money."
4995
+ },
4996
+ "immutable": true,
4997
+ "locationInModule": {
4998
+ "filename": "src/providers/fargate.ts",
4999
+ "line": 129
5000
+ },
5001
+ "name": "spot",
5002
+ "optional": true,
5003
+ "type": {
5004
+ "primitive": "boolean"
5005
+ }
5006
+ },
5007
+ {
5008
+ "abstract": true,
5009
+ "docs": {
5010
+ "default": "default account VPC",
5011
+ "stability": "experimental",
5012
+ "summary": "VPC to launch the runners in."
5013
+ },
5014
+ "immutable": true,
5015
+ "locationInModule": {
5016
+ "filename": "src/providers/fargate.ts",
5017
+ "line": 50
5018
+ },
5019
+ "name": "vpc",
5020
+ "optional": true,
5021
+ "type": {
5022
+ "fqn": "aws-cdk-lib.aws_ec2.IVpc"
5023
+ }
5024
+ }
5025
+ ],
5026
+ "symbolId": "src/providers/fargate:FargateRunnerProps"
5027
+ },
5028
+ "@cloudsnorkel/cdk-github-runners.GitHubRunners": {
5029
+ "assembly": "@cloudsnorkel/cdk-github-runners",
5030
+ "base": "constructs.Construct",
5031
+ "docs": {
5032
+ "remarks": "It creates a webhook, secrets, and a step function to orchestrate all runs. Secrets are not automatically filled. See README.md for instructions on how to setup GitHub integration.\n\nBy default, this will create a runner provider of each available type with the defaults. This is good enough for the initial setup stage when you just want to get GitHub integration working.\n\n```typescript\nnew GitHubRunners(this, 'runners');\n```\n\nUsually you'd want to configure the runner providers so the runners can run in a certain VPC or have certain permissions.\n\n```typescript\nconst vpc = ec2.Vpc.fromLookup(this, 'vpc', { vpcId: 'vpc-1234567' });\nconst runnerSg = new ec2.SecurityGroup(this, 'runner security group', { vpc: vpc });\nconst dbSg = ec2.SecurityGroup.fromSecurityGroupId(this, 'database security group', 'sg-1234567');\nconst bucket = new s3.Bucket(this, 'runner bucket');\n\n// create a custom CodeBuild provider\nconst myProvider = new CodeBuildRunner(\n this, 'codebuild runner',\n {\n label: 'my-codebuild',\n vpc: vpc,\n securityGroup: runnerSg,\n },\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(\n this,\n 'runners',\n {\n providers: [myProvider],\n }\n);\n```",
5033
+ "stability": "experimental",
5034
+ "summary": "Create all the required infrastructure to provide self-hosted GitHub runners."
5035
+ },
5036
+ "fqn": "@cloudsnorkel/cdk-github-runners.GitHubRunners",
5037
+ "initializer": {
5038
+ "docs": {
5039
+ "stability": "experimental"
5040
+ },
5041
+ "locationInModule": {
5042
+ "filename": "src/runner.ts",
5043
+ "line": 140
5044
+ },
5045
+ "parameters": [
5046
+ {
5047
+ "name": "scope",
5048
+ "type": {
5049
+ "fqn": "constructs.Construct"
5050
+ }
5051
+ },
5052
+ {
5053
+ "name": "id",
5054
+ "type": {
5055
+ "primitive": "string"
5056
+ }
5057
+ },
5058
+ {
5059
+ "name": "props",
5060
+ "optional": true,
5061
+ "type": {
5062
+ "fqn": "@cloudsnorkel/cdk-github-runners.GitHubRunnersProps"
5063
+ }
5064
+ }
5065
+ ]
5066
+ },
5067
+ "kind": "class",
5068
+ "locationInModule": {
5069
+ "filename": "src/runner.ts",
5070
+ "line": 120
5071
+ },
5072
+ "name": "GitHubRunners",
5073
+ "properties": [
5074
+ {
5075
+ "docs": {
5076
+ "stability": "experimental",
5077
+ "summary": "Configured runner providers."
5078
+ },
5079
+ "immutable": true,
5080
+ "locationInModule": {
5081
+ "filename": "src/runner.ts",
5082
+ "line": 127
5083
+ },
5084
+ "name": "providers",
5085
+ "type": {
5086
+ "collection": {
5087
+ "elementtype": {
5088
+ "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerProvider"
5089
+ },
5090
+ "kind": "array"
5091
+ }
5092
+ }
5093
+ },
5094
+ {
5095
+ "docs": {
5096
+ "stability": "experimental",
5097
+ "summary": "Secrets for GitHub communication including webhook secret and runner authentication."
5098
+ },
5099
+ "immutable": true,
5100
+ "locationInModule": {
5101
+ "filename": "src/runner.ts",
5102
+ "line": 132
5103
+ },
5104
+ "name": "secrets",
5105
+ "type": {
5106
+ "fqn": "@cloudsnorkel/cdk-github-runners.Secrets"
5107
+ }
5108
+ }
5109
+ ],
5110
+ "symbolId": "src/runner:GitHubRunners"
5111
+ },
5112
+ "@cloudsnorkel/cdk-github-runners.GitHubRunnersProps": {
5113
+ "assembly": "@cloudsnorkel/cdk-github-runners",
5114
+ "datatype": true,
5115
+ "docs": {
5116
+ "stability": "experimental",
5117
+ "summary": "Properties for GitHubRunners."
5118
+ },
5119
+ "fqn": "@cloudsnorkel/cdk-github-runners.GitHubRunnersProps",
5120
+ "kind": "interface",
5121
+ "locationInModule": {
5122
+ "filename": "src/runner.ts",
5123
+ "line": 22
5124
+ },
5125
+ "name": "GitHubRunnersProps",
5126
+ "properties": [
5127
+ {
5128
+ "abstract": true,
5129
+ "docs": {
5130
+ "default": "false",
5131
+ "remarks": "Lambda Functions in a public subnet can NOT access the internet.",
5132
+ "stability": "experimental",
5133
+ "summary": "Allow management functions to run in public subnets."
5134
+ },
5135
+ "immutable": true,
5136
+ "locationInModule": {
5137
+ "filename": "src/runner.ts",
5138
+ "line": 45
5139
+ },
5140
+ "name": "allowPublicSubnet",
5141
+ "optional": true,
5142
+ "type": {
5143
+ "primitive": "boolean"
5144
+ }
5145
+ },
5146
+ {
5147
+ "abstract": true,
5148
+ "docs": {
5149
+ "remarks": "You may also want to use custom images for your runner providers that contain the same certificates. See {@link CodeBuildImageBuilder.addCertificates}.\n\n```typescript\nconst imageBuilder = new CodeBuildImageBuilder(this, 'Image Builder with Certs', {\n dockerfilePath: CodeBuildRunner.LINUX_X64_DOCKERFILE_PATH,\n});\nimageBuilder.addExtraCertificates('path-to-my-extra-certs-folder');\n\nconst provider = new CodeBuildRunner(this, 'CodeBuild', {\n imageBuilder: imageBuilder,\n});\n\nnew GitHubRunners(\n this,\n 'runners',\n {\n providers: [provider],\n extraCertificates: 'path-to-my-extra-certs-folder',\n }\n);\n```",
5150
+ "stability": "experimental",
5151
+ "summary": "Path to a directory containing a file named certs.pem containing any additional certificates required to trust GitHub Enterprise Server. Use this when GitHub Enterprise Server certificates are self-signed."
5152
+ },
5153
+ "immutable": true,
5154
+ "locationInModule": {
5155
+ "filename": "src/runner.ts",
5156
+ "line": 77
5157
+ },
5158
+ "name": "extraCertificates",
5159
+ "optional": true,
5160
+ "type": {
5161
+ "primitive": "string"
5162
+ }
5163
+ },
5164
+ {
5165
+ "abstract": true,
5166
+ "docs": {
5167
+ "default": "CodeBuild, Lambda and Fargate runners with all the defaults (no VPC or default account VPC)",
5168
+ "remarks": "At least one provider is required. Provider will be selected when its label matches the labels requested by the workflow job.",
5169
+ "stability": "experimental",
5170
+ "summary": "List of runner providers to use."
5171
+ },
5172
+ "immutable": true,
5173
+ "locationInModule": {
5174
+ "filename": "src/runner.ts",
5175
+ "line": 28
5176
+ },
5177
+ "name": "providers",
5178
+ "optional": true,
5179
+ "type": {
5180
+ "collection": {
5181
+ "elementtype": {
5182
+ "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerProvider"
5183
+ },
5184
+ "kind": "array"
5185
+ }
5186
+ }
5187
+ },
5188
+ {
5189
+ "abstract": true,
5190
+ "docs": {
5191
+ "remarks": "Use this with to provide access to GitHub Enterprise Server hosted inside a VPC.",
5192
+ "stability": "experimental",
5193
+ "summary": "Security group attached to all management functions."
5194
+ },
5195
+ "immutable": true,
5196
+ "locationInModule": {
5197
+ "filename": "src/runner.ts",
5198
+ "line": 50
5199
+ },
5200
+ "name": "securityGroup",
5201
+ "optional": true,
5202
+ "type": {
5203
+ "fqn": "aws-cdk-lib.aws_ec2.ISecurityGroup"
5204
+ }
5205
+ },
5206
+ {
5207
+ "abstract": true,
5208
+ "docs": {
5209
+ "remarks": "Use this with GitHub Enterprise Server hosted that's inaccessible from outside the VPC.",
5210
+ "stability": "experimental",
5211
+ "summary": "VPC used for all management functions."
5212
+ },
5213
+ "immutable": true,
5214
+ "locationInModule": {
5215
+ "filename": "src/runner.ts",
5216
+ "line": 33
5217
+ },
5218
+ "name": "vpc",
5219
+ "optional": true,
5220
+ "type": {
5221
+ "fqn": "aws-cdk-lib.aws_ec2.IVpc"
5222
+ }
5223
+ },
5224
+ {
5225
+ "abstract": true,
5226
+ "docs": {
5227
+ "remarks": "Use this with GitHub Enterprise Server hosted that's inaccessible from outside the VPC.",
5228
+ "stability": "experimental",
5229
+ "summary": "VPC subnets used for all management functions."
5230
+ },
5231
+ "immutable": true,
5232
+ "locationInModule": {
5233
+ "filename": "src/runner.ts",
5234
+ "line": 38
5235
+ },
5236
+ "name": "vpcSubnets",
5237
+ "optional": true,
5238
+ "type": {
5239
+ "fqn": "aws-cdk-lib.aws_ec2.SubnetSelection"
5240
+ }
5241
+ }
5242
+ ],
5243
+ "symbolId": "src/runner:GitHubRunnersProps"
5244
+ },
5245
+ "@cloudsnorkel/cdk-github-runners.IImageBuilder": {
5246
+ "assembly": "@cloudsnorkel/cdk-github-runners",
5247
+ "docs": {
5248
+ "remarks": "Anything that ends up with an ECR repository containing a Docker image that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing image and nothing else.\n\nIt's important that the specified image tag be available at the time the repository is available. Providers usually assume the image is ready and will fail if it's not.\n\nThe image can be further updated over time manually or using a schedule as long as it is always written to the same tag.",
5249
+ "stability": "experimental",
5250
+ "summary": "Interface for constructs that build an image that can be used in {@link IRunnerProvider}."
5251
+ },
5252
+ "fqn": "@cloudsnorkel/cdk-github-runners.IImageBuilder",
5253
+ "kind": "interface",
5254
+ "locationInModule": {
5255
+ "filename": "src/providers/common.ts",
5256
+ "line": 127
5257
+ },
5258
+ "methods": [
5259
+ {
5260
+ "abstract": true,
5261
+ "docs": {
5262
+ "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.",
5263
+ "returns": "image",
5264
+ "stability": "experimental",
5265
+ "summary": "ECR repository containing the image."
5266
+ },
5267
+ "locationInModule": {
5268
+ "filename": "src/providers/common.ts",
5269
+ "line": 135
5270
+ },
5271
+ "name": "bind",
5272
+ "returns": {
5273
+ "type": {
5274
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImage"
5275
+ }
5276
+ }
5277
+ }
5278
+ ],
5279
+ "name": "IImageBuilder",
5280
+ "symbolId": "src/providers/common:IImageBuilder"
5281
+ },
5282
+ "@cloudsnorkel/cdk-github-runners.IRunnerImageStatus": {
5283
+ "assembly": "@cloudsnorkel/cdk-github-runners",
5284
+ "docs": {
5285
+ "stability": "experimental",
5286
+ "summary": "Interface for runner image status used by status.json."
5287
+ },
5288
+ "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerImageStatus",
5289
+ "kind": "interface",
5290
+ "locationInModule": {
5291
+ "filename": "src/providers/common.ts",
5292
+ "line": 191
5293
+ },
5294
+ "name": "IRunnerImageStatus",
5295
+ "properties": [
5296
+ {
5297
+ "abstract": true,
5298
+ "docs": {
5299
+ "stability": "experimental",
5300
+ "summary": "Log group name for the image builder where history of image builds can be analyzed."
5301
+ },
5302
+ "immutable": true,
5303
+ "locationInModule": {
5304
+ "filename": "src/providers/common.ts",
5305
+ "line": 205
5306
+ },
5307
+ "name": "imageBuilderLogGroup",
5308
+ "optional": true,
5309
+ "type": {
5310
+ "primitive": "string"
5311
+ }
5312
+ },
5313
+ {
5314
+ "abstract": true,
5315
+ "docs": {
5316
+ "stability": "experimental",
5317
+ "summary": "Image repository where runner image is pushed."
5318
+ },
5319
+ "immutable": true,
5320
+ "locationInModule": {
5321
+ "filename": "src/providers/common.ts",
5322
+ "line": 195
5323
+ },
5324
+ "name": "imageRepository",
5325
+ "optional": true,
5326
+ "type": {
5327
+ "primitive": "string"
5328
+ }
5329
+ },
5330
+ {
5331
+ "abstract": true,
5332
+ "docs": {
5333
+ "stability": "experimental",
5334
+ "summary": "Tag of image that should be used."
5335
+ },
5336
+ "immutable": true,
5337
+ "locationInModule": {
5338
+ "filename": "src/providers/common.ts",
5339
+ "line": 200
5340
+ },
5341
+ "name": "imageTag",
5342
+ "optional": true,
5343
+ "type": {
5344
+ "primitive": "string"
5345
+ }
5346
+ }
5347
+ ],
5348
+ "symbolId": "src/providers/common:IRunnerImageStatus"
5349
+ },
5350
+ "@cloudsnorkel/cdk-github-runners.IRunnerProvider": {
5351
+ "assembly": "@cloudsnorkel/cdk-github-runners",
5352
+ "docs": {
5353
+ "remarks": "Implementations create all required resources and return a step function task that starts those resources from {@link getStepFunctionTask}.",
5354
+ "stability": "experimental",
5355
+ "summary": "Interface for all runner providers."
5356
+ },
5357
+ "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
5358
+ "interfaces": [
5359
+ "aws-cdk-lib.aws_ec2.IConnectable",
5360
+ "aws-cdk-lib.aws_iam.IGrantable"
5361
+ ],
5362
+ "kind": "interface",
5363
+ "locationInModule": {
5364
+ "filename": "src/providers/common.ts",
5365
+ "line": 211
5366
+ },
5367
+ "methods": [
5368
+ {
5369
+ "abstract": true,
5370
+ "docs": {
5371
+ "remarks": "Called by GithubRunners and shouldn't be called manually.",
5372
+ "stability": "experimental",
5373
+ "summary": "Generate step function tasks that execute the runner."
5374
+ },
5375
+ "locationInModule": {
5376
+ "filename": "src/providers/common.ts",
5377
+ "line": 239
5378
+ },
5379
+ "name": "getStepFunctionTask",
5380
+ "parameters": [
5381
+ {
5382
+ "docs": {
5383
+ "summary": "specific build parameters."
5384
+ },
5385
+ "name": "parameters",
5386
+ "type": {
5387
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters"
5388
+ }
5389
+ }
5390
+ ],
5391
+ "returns": {
5392
+ "type": {
5393
+ "fqn": "aws-cdk-lib.aws_stepfunctions.IChainable"
5394
+ }
5395
+ }
5396
+ }
5397
+ ],
5398
+ "name": "IRunnerProvider",
5399
+ "properties": [
5400
+ {
5401
+ "abstract": true,
5402
+ "docs": {
5403
+ "remarks": "Can be Docker image, AMI, or something else.",
5404
+ "stability": "experimental",
5405
+ "summary": "Image used to create a new resource compute."
5406
+ },
5407
+ "immutable": true,
5408
+ "locationInModule": {
5409
+ "filename": "src/providers/common.ts",
5410
+ "line": 230
5411
+ },
5412
+ "name": "image",
5413
+ "type": {
5414
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImage"
5415
+ }
5416
+ },
5417
+ {
5418
+ "abstract": true,
5419
+ "docs": {
5420
+ "stability": "experimental",
5421
+ "summary": "GitHub Actions label associated with this runner provider."
5422
+ },
5423
+ "immutable": true,
5424
+ "locationInModule": {
5425
+ "filename": "src/providers/common.ts",
5426
+ "line": 215
5427
+ },
5428
+ "name": "label",
5429
+ "type": {
5430
+ "primitive": "string"
5431
+ }
5432
+ },
5433
+ {
5434
+ "abstract": true,
5435
+ "docs": {
5436
+ "stability": "experimental",
5437
+ "summary": "Security group associated with runners."
5438
+ },
5439
+ "immutable": true,
5440
+ "locationInModule": {
5441
+ "filename": "src/providers/common.ts",
5442
+ "line": 225
5443
+ },
5444
+ "name": "securityGroup",
5445
+ "optional": true,
5446
+ "type": {
5447
+ "fqn": "aws-cdk-lib.aws_ec2.ISecurityGroup"
5448
+ }
5449
+ },
5450
+ {
5451
+ "abstract": true,
5452
+ "docs": {
5453
+ "stability": "experimental",
5454
+ "summary": "VPC network in which runners will be placed."
5455
+ },
5456
+ "immutable": true,
5457
+ "locationInModule": {
5458
+ "filename": "src/providers/common.ts",
5459
+ "line": 220
5460
+ },
5461
+ "name": "vpc",
5462
+ "optional": true,
5463
+ "type": {
5464
+ "fqn": "aws-cdk-lib.aws_ec2.IVpc"
5465
+ }
5466
+ }
5467
+ ],
5468
+ "symbolId": "src/providers/common:IRunnerProvider"
5469
+ },
5470
+ "@cloudsnorkel/cdk-github-runners.ImageBuilderAsset": {
5471
+ "assembly": "@cloudsnorkel/cdk-github-runners",
5472
+ "datatype": true,
5473
+ "docs": {
5474
+ "stability": "experimental",
5475
+ "summary": "An asset including file or directory to place inside the built image."
5476
+ },
5477
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderAsset",
5478
+ "kind": "interface",
5479
+ "locationInModule": {
5480
+ "filename": "src/providers/image-builders/container.ts",
5481
+ "line": 147
5482
+ },
5483
+ "name": "ImageBuilderAsset",
5484
+ "properties": [
5485
+ {
5486
+ "abstract": true,
5487
+ "docs": {
5488
+ "stability": "experimental",
5489
+ "summary": "Asset to place in the image."
5490
+ },
5491
+ "immutable": true,
5492
+ "locationInModule": {
5493
+ "filename": "src/providers/image-builders/container.ts",
5494
+ "line": 156
5495
+ },
5496
+ "name": "asset",
5497
+ "type": {
5498
+ "fqn": "aws-cdk-lib.aws_s3_assets.Asset"
5499
+ }
5500
+ },
5501
+ {
5502
+ "abstract": true,
5503
+ "docs": {
5504
+ "stability": "experimental",
5505
+ "summary": "Path to place asset in the image."
5506
+ },
5507
+ "immutable": true,
5508
+ "locationInModule": {
5509
+ "filename": "src/providers/image-builders/container.ts",
5510
+ "line": 151
5511
+ },
5512
+ "name": "path",
5513
+ "type": {
5514
+ "primitive": "string"
5515
+ }
5516
+ }
5517
+ ],
5518
+ "symbolId": "src/providers/image-builders/container:ImageBuilderAsset"
5519
+ },
5520
+ "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent": {
5521
+ "assembly": "@cloudsnorkel/cdk-github-runners",
5522
+ "base": "aws-cdk-lib.Resource",
5523
+ "docs": {
5524
+ "remarks": "Components are the building blocks of images built by Image Builder.\n\nExample:\n\n```\nnew ImageBuilderComponent(this, 'AWS CLI', {\n platform: 'Windows',\n displayName: 'AWS CLI',\n description: 'Install latest version of AWS CLI',\n commands: [\n '$ErrorActionPreference = \\'Stop\\'',\n 'Start-Process msiexec.exe -Wait -ArgumentList \\'/i https://awscli.amazonaws.com/AWSCLIV2.msi /qn\\'',\n ],\n}\n```",
5525
+ "stability": "experimental",
5526
+ "summary": "Components are a set of commands to run and optional files to add to an image."
5527
+ },
5528
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent",
5529
+ "initializer": {
5530
+ "docs": {
5531
+ "stability": "experimental"
5532
+ },
5533
+ "locationInModule": {
5534
+ "filename": "src/providers/image-builders/container.ts",
5535
+ "line": 221
5536
+ },
5537
+ "parameters": [
5538
+ {
5539
+ "name": "scope",
5540
+ "type": {
5541
+ "fqn": "constructs.Construct"
5542
+ }
4567
5543
  },
4568
- "immutable": true,
4569
- "locationInModule": {
4570
- "filename": "src/runner.ts",
4571
- "line": 77
5544
+ {
5545
+ "name": "id",
5546
+ "type": {
5547
+ "primitive": "string"
5548
+ }
4572
5549
  },
4573
- "name": "extraCertificates",
4574
- "optional": true,
4575
- "type": {
4576
- "primitive": "string"
5550
+ {
5551
+ "name": "props",
5552
+ "type": {
5553
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties"
5554
+ }
4577
5555
  }
4578
- },
5556
+ ]
5557
+ },
5558
+ "kind": "class",
5559
+ "locationInModule": {
5560
+ "filename": "src/providers/image-builders/container.ts",
5561
+ "line": 208
5562
+ },
5563
+ "methods": [
4579
5564
  {
4580
- "abstract": true,
4581
5565
  "docs": {
4582
- "default": "CodeBuild, Lambda and Fargate runners with all the defaults (no VPC or default account VPC)",
4583
- "remarks": "At least one provider is required. Provider will be selected when its label matches the labels requested by the workflow job.",
4584
5566
  "stability": "experimental",
4585
- "summary": "List of runner providers to use."
5567
+ "summary": "Grants read permissions to the principal on the assets buckets."
4586
5568
  },
4587
- "immutable": true,
4588
5569
  "locationInModule": {
4589
- "filename": "src/runner.ts",
4590
- "line": 28
5570
+ "filename": "src/providers/image-builders/container.ts",
5571
+ "line": 313
4591
5572
  },
4592
- "name": "providers",
4593
- "optional": true,
4594
- "type": {
4595
- "collection": {
4596
- "elementtype": {
4597
- "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerProvider"
4598
- },
4599
- "kind": "array"
5573
+ "name": "grantAssetsRead",
5574
+ "parameters": [
5575
+ {
5576
+ "name": "grantee",
5577
+ "type": {
5578
+ "fqn": "aws-cdk-lib.aws_iam.IGrantable"
5579
+ }
4600
5580
  }
4601
- }
5581
+ ]
4602
5582
  },
4603
5583
  {
4604
- "abstract": true,
4605
5584
  "docs": {
4606
- "remarks": "Use this with to provide access to GitHub Enterprise Server hosted inside a VPC.",
4607
- "stability": "experimental",
4608
- "summary": "Security group attached to all management functions."
5585
+ "stability": "experimental"
4609
5586
  },
4610
- "immutable": true,
4611
5587
  "locationInModule": {
4612
- "filename": "src/runner.ts",
4613
- "line": 50
5588
+ "filename": "src/providers/image-builders/container.ts",
5589
+ "line": 114
4614
5590
  },
4615
- "name": "securityGroup",
4616
- "optional": true,
4617
- "type": {
4618
- "fqn": "aws-cdk-lib.aws_ec2.ISecurityGroup"
5591
+ "name": "version",
5592
+ "parameters": [
5593
+ {
5594
+ "name": "type",
5595
+ "type": {
5596
+ "primitive": "string"
5597
+ }
5598
+ },
5599
+ {
5600
+ "name": "name",
5601
+ "type": {
5602
+ "primitive": "string"
5603
+ }
5604
+ },
5605
+ {
5606
+ "name": "data",
5607
+ "type": {
5608
+ "primitive": "any"
5609
+ }
5610
+ }
5611
+ ],
5612
+ "protected": true,
5613
+ "returns": {
5614
+ "type": {
5615
+ "primitive": "string"
5616
+ }
4619
5617
  }
4620
- },
5618
+ }
5619
+ ],
5620
+ "name": "ImageBuilderComponent",
5621
+ "properties": [
4621
5622
  {
4622
- "abstract": true,
4623
5623
  "docs": {
4624
- "remarks": "Use this with GitHub Enterprise Server hosted that's inaccessible from outside the VPC.",
4625
5624
  "stability": "experimental",
4626
- "summary": "VPC used for all management functions."
5625
+ "summary": "Component ARN."
4627
5626
  },
4628
5627
  "immutable": true,
4629
5628
  "locationInModule": {
4630
- "filename": "src/runner.ts",
4631
- "line": 33
5629
+ "filename": "src/providers/image-builders/container.ts",
5630
+ "line": 212
4632
5631
  },
4633
- "name": "vpc",
4634
- "optional": true,
5632
+ "name": "arn",
4635
5633
  "type": {
4636
- "fqn": "aws-cdk-lib.aws_ec2.IVpc"
5634
+ "primitive": "string"
4637
5635
  }
4638
5636
  },
4639
5637
  {
4640
- "abstract": true,
4641
5638
  "docs": {
4642
- "remarks": "Use this with GitHub Enterprise Server hosted that's inaccessible from outside the VPC.",
4643
5639
  "stability": "experimental",
4644
- "summary": "VPC subnets used for all management functions."
5640
+ "summary": "Supported platform for the component."
4645
5641
  },
4646
5642
  "immutable": true,
4647
5643
  "locationInModule": {
4648
- "filename": "src/runner.ts",
4649
- "line": 38
5644
+ "filename": "src/providers/image-builders/container.ts",
5645
+ "line": 217
4650
5646
  },
4651
- "name": "vpcSubnets",
4652
- "optional": true,
5647
+ "name": "platform",
4653
5648
  "type": {
4654
- "fqn": "aws-cdk-lib.aws_ec2.SubnetSelection"
5649
+ "primitive": "string"
4655
5650
  }
4656
5651
  }
4657
5652
  ],
4658
- "symbolId": "src/runner:GitHubRunnersProps"
5653
+ "symbolId": "src/providers/image-builders/container:ImageBuilderComponent"
4659
5654
  },
4660
- "@cloudsnorkel/cdk-github-runners.IImageBuilder": {
5655
+ "@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties": {
4661
5656
  "assembly": "@cloudsnorkel/cdk-github-runners",
5657
+ "datatype": true,
4662
5658
  "docs": {
4663
- "remarks": "Anything that ends up with an ECR repository containing a Docker image that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing image and nothing else.\n\nIt's important that the specified image tag be available at the time the repository is available. Providers usually assume the image is ready and will fail if it's not.\n\nThe image can be further updated over time manually or using a schedule as long as it is always written to the same tag.",
4664
5659
  "stability": "experimental",
4665
- "summary": "Interface for constructs that build an image that can be used in {@link IRunnerProvider}."
5660
+ "summary": "Properties for ImageBuilderComponent construct."
4666
5661
  },
4667
- "fqn": "@cloudsnorkel/cdk-github-runners.IImageBuilder",
5662
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties",
4668
5663
  "kind": "interface",
4669
5664
  "locationInModule": {
4670
- "filename": "src/providers/common.ts",
4671
- "line": 129
5665
+ "filename": "src/providers/image-builders/container.ts",
5666
+ "line": 162
4672
5667
  },
4673
- "methods": [
5668
+ "name": "ImageBuilderComponentProperties",
5669
+ "properties": [
4674
5670
  {
4675
5671
  "abstract": true,
4676
5672
  "docs": {
4677
- "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.",
4678
- "returns": "image",
5673
+ "remarks": "On Linux, these are bash commands. On Windows, there are PowerShell commands.",
4679
5674
  "stability": "experimental",
4680
- "summary": "ECR repository containing the image."
5675
+ "summary": "Shell commands to run when adding this component to the image."
4681
5676
  },
5677
+ "immutable": true,
4682
5678
  "locationInModule": {
4683
- "filename": "src/providers/common.ts",
4684
- "line": 137
5679
+ "filename": "src/providers/image-builders/container.ts",
5680
+ "line": 183
4685
5681
  },
4686
- "name": "bind",
4687
- "returns": {
4688
- "type": {
4689
- "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImage"
5682
+ "name": "commands",
5683
+ "type": {
5684
+ "collection": {
5685
+ "elementtype": {
5686
+ "primitive": "string"
5687
+ },
5688
+ "kind": "array"
4690
5689
  }
4691
5690
  }
4692
- }
4693
- ],
4694
- "name": "IImageBuilder",
4695
- "symbolId": "src/providers/common:IImageBuilder"
4696
- },
4697
- "@cloudsnorkel/cdk-github-runners.IRunnerProvider": {
4698
- "assembly": "@cloudsnorkel/cdk-github-runners",
4699
- "docs": {
4700
- "remarks": "Implementations create all required resources and return a step function task that starts those resources from {@link getStepFunctionTask}.",
4701
- "stability": "experimental",
4702
- "summary": "Interface for all runner providers."
4703
- },
4704
- "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
4705
- "interfaces": [
4706
- "aws-cdk-lib.aws_ec2.IConnectable",
4707
- "aws-cdk-lib.aws_iam.IGrantable"
4708
- ],
4709
- "kind": "interface",
4710
- "locationInModule": {
4711
- "filename": "src/providers/common.ts",
4712
- "line": 193
4713
- },
4714
- "methods": [
5691
+ },
4715
5692
  {
4716
5693
  "abstract": true,
4717
5694
  "docs": {
4718
- "remarks": "Called by GithubRunners and shouldn't be called manually.",
4719
5695
  "stability": "experimental",
4720
- "summary": "Generate step function tasks that execute the runner."
5696
+ "summary": "Component description."
4721
5697
  },
5698
+ "immutable": true,
4722
5699
  "locationInModule": {
4723
- "filename": "src/providers/common.ts",
4724
- "line": 216
5700
+ "filename": "src/providers/image-builders/container.ts",
5701
+ "line": 176
4725
5702
  },
4726
- "name": "getStepFunctionTask",
4727
- "parameters": [
4728
- {
4729
- "docs": {
4730
- "summary": "specific build parameters."
4731
- },
4732
- "name": "parameters",
4733
- "type": {
4734
- "fqn": "@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters"
4735
- }
4736
- }
4737
- ],
4738
- "returns": {
4739
- "type": {
4740
- "fqn": "aws-cdk-lib.aws_stepfunctions.IChainable"
4741
- }
5703
+ "name": "description",
5704
+ "type": {
5705
+ "primitive": "string"
4742
5706
  }
4743
- }
4744
- ],
4745
- "name": "IRunnerProvider",
4746
- "properties": [
5707
+ },
4747
5708
  {
4748
5709
  "abstract": true,
4749
5710
  "docs": {
4750
5711
  "stability": "experimental",
4751
- "summary": "GitHub Actions label associated with this runner provider."
5712
+ "summary": "Component display name."
4752
5713
  },
4753
5714
  "immutable": true,
4754
5715
  "locationInModule": {
4755
- "filename": "src/providers/common.ts",
4756
- "line": 197
5716
+ "filename": "src/providers/image-builders/container.ts",
5717
+ "line": 171
4757
5718
  },
4758
- "name": "label",
5719
+ "name": "displayName",
4759
5720
  "type": {
4760
5721
  "primitive": "string"
4761
5722
  }
@@ -4763,39 +5724,44 @@
4763
5724
  {
4764
5725
  "abstract": true,
4765
5726
  "docs": {
5727
+ "remarks": "Must match the builder platform.",
4766
5728
  "stability": "experimental",
4767
- "summary": "Security group associated with runners."
5729
+ "summary": "Component platform."
4768
5730
  },
4769
5731
  "immutable": true,
4770
5732
  "locationInModule": {
4771
- "filename": "src/providers/common.ts",
4772
- "line": 207
5733
+ "filename": "src/providers/image-builders/container.ts",
5734
+ "line": 166
4773
5735
  },
4774
- "name": "securityGroup",
4775
- "optional": true,
5736
+ "name": "platform",
4776
5737
  "type": {
4777
- "fqn": "aws-cdk-lib.aws_ec2.ISecurityGroup"
5738
+ "primitive": "string"
4778
5739
  }
4779
5740
  },
4780
5741
  {
4781
5742
  "abstract": true,
4782
5743
  "docs": {
4783
5744
  "stability": "experimental",
4784
- "summary": "VPC network in which runners will be placed."
5745
+ "summary": "Optional assets to add to the built image."
4785
5746
  },
4786
5747
  "immutable": true,
4787
5748
  "locationInModule": {
4788
- "filename": "src/providers/common.ts",
4789
- "line": 202
5749
+ "filename": "src/providers/image-builders/container.ts",
5750
+ "line": 188
4790
5751
  },
4791
- "name": "vpc",
5752
+ "name": "assets",
4792
5753
  "optional": true,
4793
5754
  "type": {
4794
- "fqn": "aws-cdk-lib.aws_ec2.IVpc"
5755
+ "collection": {
5756
+ "elementtype": {
5757
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderAsset"
5758
+ },
5759
+ "kind": "array"
5760
+ }
4795
5761
  }
4796
5762
  }
4797
5763
  ],
4798
- "symbolId": "src/providers/common:IRunnerProvider"
5764
+ "symbolId": "src/providers/image-builders/container:ImageBuilderComponentProperties"
4799
5765
  },
4800
5766
  "@cloudsnorkel/cdk-github-runners.LambdaRunner": {
4801
5767
  "assembly": "@cloudsnorkel/cdk-github-runners",
@@ -4812,7 +5778,7 @@
4812
5778
  },
4813
5779
  "locationInModule": {
4814
5780
  "filename": "src/providers/lambda.ts",
4815
- "line": 135
5781
+ "line": 141
4816
5782
  },
4817
5783
  "parameters": [
4818
5784
  {
@@ -4841,7 +5807,7 @@
4841
5807
  "kind": "class",
4842
5808
  "locationInModule": {
4843
5809
  "filename": "src/providers/lambda.ts",
4844
- "line": 91
5810
+ "line": 92
4845
5811
  },
4846
5812
  "methods": [
4847
5813
  {
@@ -4852,7 +5818,7 @@
4852
5818
  },
4853
5819
  "locationInModule": {
4854
5820
  "filename": "src/providers/lambda.ts",
4855
- "line": 198
5821
+ "line": 221
4856
5822
  },
4857
5823
  "name": "getStepFunctionTask",
4858
5824
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -4886,7 +5852,7 @@
4886
5852
  "immutable": true,
4887
5853
  "locationInModule": {
4888
5854
  "filename": "src/providers/lambda.ts",
4889
- "line": 108
5855
+ "line": 109
4890
5856
  },
4891
5857
  "name": "LINUX_ARM64_DOCKERFILE_PATH",
4892
5858
  "static": true,
@@ -4904,7 +5870,7 @@
4904
5870
  "immutable": true,
4905
5871
  "locationInModule": {
4906
5872
  "filename": "src/providers/lambda.ts",
4907
- "line": 99
5873
+ "line": 100
4908
5874
  },
4909
5875
  "name": "LINUX_X64_DOCKERFILE_PATH",
4910
5876
  "static": true,
@@ -4920,7 +5886,7 @@
4920
5886
  "immutable": true,
4921
5887
  "locationInModule": {
4922
5888
  "filename": "src/providers/lambda.ts",
4923
- "line": 187
5889
+ "line": 210
4924
5890
  },
4925
5891
  "name": "connections",
4926
5892
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -4936,7 +5902,7 @@
4936
5902
  "immutable": true,
4937
5903
  "locationInModule": {
4938
5904
  "filename": "src/providers/lambda.ts",
4939
- "line": 113
5905
+ "line": 114
4940
5906
  },
4941
5907
  "name": "function",
4942
5908
  "type": {
@@ -4951,7 +5917,7 @@
4951
5917
  "immutable": true,
4952
5918
  "locationInModule": {
4953
5919
  "filename": "src/providers/lambda.ts",
4954
- "line": 133
5920
+ "line": 134
4955
5921
  },
4956
5922
  "name": "grantPrincipal",
4957
5923
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -4959,6 +5925,22 @@
4959
5925
  "fqn": "aws-cdk-lib.aws_iam.IPrincipal"
4960
5926
  }
4961
5927
  },
5928
+ {
5929
+ "docs": {
5930
+ "stability": "experimental",
5931
+ "summary": "Docker image used to start Lambda function."
5932
+ },
5933
+ "immutable": true,
5934
+ "locationInModule": {
5935
+ "filename": "src/providers/lambda.ts",
5936
+ "line": 139
5937
+ },
5938
+ "name": "image",
5939
+ "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
5940
+ "type": {
5941
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImage"
5942
+ }
5943
+ },
4962
5944
  {
4963
5945
  "docs": {
4964
5946
  "stability": "experimental",
@@ -4967,7 +5949,7 @@
4967
5949
  "immutable": true,
4968
5950
  "locationInModule": {
4969
5951
  "filename": "src/providers/lambda.ts",
4970
- "line": 118
5952
+ "line": 119
4971
5953
  },
4972
5954
  "name": "label",
4973
5955
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -4983,7 +5965,7 @@
4983
5965
  "immutable": true,
4984
5966
  "locationInModule": {
4985
5967
  "filename": "src/providers/lambda.ts",
4986
- "line": 128
5968
+ "line": 129
4987
5969
  },
4988
5970
  "name": "securityGroup",
4989
5971
  "optional": true,
@@ -5000,7 +5982,7 @@
5000
5982
  "immutable": true,
5001
5983
  "locationInModule": {
5002
5984
  "filename": "src/providers/lambda.ts",
5003
- "line": 123
5985
+ "line": 124
5004
5986
  },
5005
5987
  "name": "vpc",
5006
5988
  "optional": true,
@@ -5025,7 +6007,7 @@
5025
6007
  "kind": "interface",
5026
6008
  "locationInModule": {
5027
6009
  "filename": "src/providers/lambda.ts",
5028
- "line": 18
6010
+ "line": 19
5029
6011
  },
5030
6012
  "name": "LambdaRunnerProps",
5031
6013
  "properties": [
@@ -5039,7 +6021,7 @@
5039
6021
  "immutable": true,
5040
6022
  "locationInModule": {
5041
6023
  "filename": "src/providers/lambda.ts",
5042
- "line": 51
6024
+ "line": 52
5043
6025
  },
5044
6026
  "name": "ephemeralStorageSize",
5045
6027
  "optional": true,
@@ -5059,7 +6041,7 @@
5059
6041
  "immutable": true,
5060
6042
  "locationInModule": {
5061
6043
  "filename": "src/providers/lambda.ts",
5062
- "line": 27
6044
+ "line": 28
5063
6045
  },
5064
6046
  "name": "imageBuilder",
5065
6047
  "optional": true,
@@ -5077,7 +6059,7 @@
5077
6059
  "immutable": true,
5078
6060
  "locationInModule": {
5079
6061
  "filename": "src/providers/lambda.ts",
5080
- "line": 34
6062
+ "line": 35
5081
6063
  },
5082
6064
  "name": "label",
5083
6065
  "optional": true,
@@ -5096,7 +6078,7 @@
5096
6078
  "immutable": true,
5097
6079
  "locationInModule": {
5098
6080
  "filename": "src/providers/lambda.ts",
5099
- "line": 44
6081
+ "line": 45
5100
6082
  },
5101
6083
  "name": "memorySize",
5102
6084
  "optional": true,
@@ -5114,7 +6096,7 @@
5114
6096
  "immutable": true,
5115
6097
  "locationInModule": {
5116
6098
  "filename": "src/providers/lambda.ts",
5117
- "line": 74
6099
+ "line": 75
5118
6100
  },
5119
6101
  "name": "securityGroup",
5120
6102
  "optional": true,
@@ -5132,7 +6114,7 @@
5132
6114
  "immutable": true,
5133
6115
  "locationInModule": {
5134
6116
  "filename": "src/providers/lambda.ts",
5135
- "line": 81
6117
+ "line": 82
5136
6118
  },
5137
6119
  "name": "subnetSelection",
5138
6120
  "optional": true,
@@ -5151,7 +6133,7 @@
5151
6133
  "immutable": true,
5152
6134
  "locationInModule": {
5153
6135
  "filename": "src/providers/lambda.ts",
5154
- "line": 60
6136
+ "line": 61
5155
6137
  },
5156
6138
  "name": "timeout",
5157
6139
  "optional": true,
@@ -5169,7 +6151,7 @@
5169
6151
  "immutable": true,
5170
6152
  "locationInModule": {
5171
6153
  "filename": "src/providers/lambda.ts",
5172
- "line": 67
6154
+ "line": 68
5173
6155
  },
5174
6156
  "name": "vpc",
5175
6157
  "optional": true,
@@ -5297,7 +6279,7 @@
5297
6279
  "immutable": true,
5298
6280
  "locationInModule": {
5299
6281
  "filename": "src/providers/common.ts",
5300
- "line": 112
6282
+ "line": 105
5301
6283
  },
5302
6284
  "name": "architecture",
5303
6285
  "type": {
@@ -5307,66 +6289,66 @@
5307
6289
  {
5308
6290
  "abstract": true,
5309
6291
  "docs": {
5310
- "remarks": "WARNING: the digest might change when the builder automatically rebuilds the image on a schedule. Do not expect for this digest to stay the same between deploys.",
5311
6292
  "stability": "experimental",
5312
- "summary": "Image digest for providers that need to know the digest like Lambda."
6293
+ "summary": "ECR repository containing the image."
5313
6294
  },
5314
6295
  "immutable": true,
5315
6296
  "locationInModule": {
5316
6297
  "filename": "src/providers/common.ts",
5317
- "line": 107
6298
+ "line": 95
5318
6299
  },
5319
- "name": "imageDigest",
6300
+ "name": "imageRepository",
5320
6301
  "type": {
5321
- "primitive": "string"
6302
+ "fqn": "aws-cdk-lib.aws_ecr.IRepository"
5322
6303
  }
5323
6304
  },
5324
6305
  {
5325
6306
  "abstract": true,
5326
6307
  "docs": {
5327
6308
  "stability": "experimental",
5328
- "summary": "ECR repository containing the image."
6309
+ "summary": "Static image tag where the image will be pushed."
5329
6310
  },
5330
6311
  "immutable": true,
5331
6312
  "locationInModule": {
5332
6313
  "filename": "src/providers/common.ts",
5333
- "line": 95
6314
+ "line": 100
5334
6315
  },
5335
- "name": "imageRepository",
6316
+ "name": "imageTag",
5336
6317
  "type": {
5337
- "fqn": "aws-cdk-lib.aws_ecr.IRepository"
6318
+ "primitive": "string"
5338
6319
  }
5339
6320
  },
5340
6321
  {
5341
6322
  "abstract": true,
5342
6323
  "docs": {
5343
6324
  "stability": "experimental",
5344
- "summary": "Static image tag where the image will be pushed."
6325
+ "summary": "OS type of the image."
5345
6326
  },
5346
6327
  "immutable": true,
5347
6328
  "locationInModule": {
5348
6329
  "filename": "src/providers/common.ts",
5349
- "line": 100
6330
+ "line": 110
5350
6331
  },
5351
- "name": "imageTag",
6332
+ "name": "os",
5352
6333
  "type": {
5353
- "primitive": "string"
6334
+ "fqn": "@cloudsnorkel/cdk-github-runners.Os"
5354
6335
  }
5355
6336
  },
5356
6337
  {
5357
6338
  "abstract": true,
5358
6339
  "docs": {
5359
6340
  "stability": "experimental",
5360
- "summary": "OS type of the image."
6341
+ "summary": "Log group where image builds are logged."
5361
6342
  },
5362
6343
  "immutable": true,
5363
6344
  "locationInModule": {
5364
6345
  "filename": "src/providers/common.ts",
5365
- "line": 117
6346
+ "line": 115
5366
6347
  },
5367
- "name": "os",
6348
+ "name": "logGroup",
6349
+ "optional": true,
5368
6350
  "type": {
5369
- "fqn": "@cloudsnorkel/cdk-github-runners.Os"
6351
+ "fqn": "aws-cdk-lib.aws_logs.LogGroup"
5370
6352
  }
5371
6353
  }
5372
6354
  ],
@@ -5383,7 +6365,7 @@
5383
6365
  "kind": "interface",
5384
6366
  "locationInModule": {
5385
6367
  "filename": "src/providers/common.ts",
5386
- "line": 143
6368
+ "line": 141
5387
6369
  },
5388
6370
  "name": "RunnerProviderProps",
5389
6371
  "properties": [
@@ -5398,7 +6380,7 @@
5398
6380
  "immutable": true,
5399
6381
  "locationInModule": {
5400
6382
  "filename": "src/providers/common.ts",
5401
- "line": 151
6383
+ "line": 149
5402
6384
  },
5403
6385
  "name": "logRetention",
5404
6386
  "optional": true,
@@ -5421,7 +6403,7 @@
5421
6403
  "kind": "interface",
5422
6404
  "locationInModule": {
5423
6405
  "filename": "src/providers/common.ts",
5424
- "line": 163
6406
+ "line": 161
5425
6407
  },
5426
6408
  "name": "RunnerRuntimeParameters",
5427
6409
  "properties": [
@@ -5435,7 +6417,7 @@
5435
6417
  "immutable": true,
5436
6418
  "locationInModule": {
5437
6419
  "filename": "src/providers/common.ts",
5438
- "line": 177
6420
+ "line": 175
5439
6421
  },
5440
6422
  "name": "githubDomainPath",
5441
6423
  "type": {
@@ -5451,7 +6433,7 @@
5451
6433
  "immutable": true,
5452
6434
  "locationInModule": {
5453
6435
  "filename": "src/providers/common.ts",
5454
- "line": 182
6436
+ "line": 180
5455
6437
  },
5456
6438
  "name": "ownerPath",
5457
6439
  "type": {
@@ -5467,7 +6449,7 @@
5467
6449
  "immutable": true,
5468
6450
  "locationInModule": {
5469
6451
  "filename": "src/providers/common.ts",
5470
- "line": 187
6452
+ "line": 185
5471
6453
  },
5472
6454
  "name": "repoPath",
5473
6455
  "type": {
@@ -5484,7 +6466,7 @@
5484
6466
  "immutable": true,
5485
6467
  "locationInModule": {
5486
6468
  "filename": "src/providers/common.ts",
5487
- "line": 172
6469
+ "line": 170
5488
6470
  },
5489
6471
  "name": "runnerNamePath",
5490
6472
  "type": {
@@ -5500,7 +6482,7 @@
5500
6482
  "immutable": true,
5501
6483
  "locationInModule": {
5502
6484
  "filename": "src/providers/common.ts",
5503
- "line": 167
6485
+ "line": 165
5504
6486
  },
5505
6487
  "name": "runnerTokenPath",
5506
6488
  "type": {
@@ -5737,7 +6719,7 @@
5737
6719
  },
5738
6720
  "locationInModule": {
5739
6721
  "filename": "src/providers/image-builders/static.ts",
5740
- "line": 44
6722
+ "line": 43
5741
6723
  },
5742
6724
  "name": "fromDockerHub",
5743
6725
  "parameters": [
@@ -5854,6 +6836,6 @@
5854
6836
  "symbolId": "src/providers/image-builders/static:StaticRunnerImage"
5855
6837
  }
5856
6838
  },
5857
- "version": "0.3.2",
5858
- "fingerprint": "5LpDdECrJv22Gc6zQvmsw2Sh7T6mwuk2VTMzBpwEcHI="
6839
+ "version": "0.5.0",
6840
+ "fingerprint": "TrXXmr6DqZTAl+tOVxWtqOc8yYawCSk66gd7FL7DqLY="
5859
6841
  }