@cloudsnorkel/cdk-github-runners 0.3.0 → 0.4.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 (48) hide show
  1. package/.gitattributes +3 -0
  2. package/.jsii +1488 -374
  3. package/API.md +1174 -86
  4. package/README.md +19 -17
  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 +4276 -2096
  10. package/lib/lambdas/setup/index.html +37 -0
  11. package/lib/lambdas/setup/index.js +166 -266
  12. package/lib/lambdas/status/index.js +4311 -2101
  13. package/lib/lambdas/token-retriever/index.js +4276 -2096
  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 +28 -1
  19. package/lib/providers/common.js +4 -4
  20. package/lib/providers/docker-images/codebuild/linux-arm64/Dockerfile +5 -1
  21. package/lib/providers/docker-images/codebuild/linux-x64/Dockerfile +5 -1
  22. package/lib/providers/docker-images/fargate/linux-arm64/Dockerfile +5 -1
  23. package/lib/providers/docker-images/fargate/linux-x64/Dockerfile +5 -1
  24. package/lib/providers/docker-images/lambda/linux-arm64/Dockerfile +4 -0
  25. package/lib/providers/docker-images/lambda/linux-x64/Dockerfile +4 -0
  26. package/lib/providers/fargate.d.ts +5 -1
  27. package/lib/providers/fargate.js +3 -3
  28. package/lib/providers/image-builders/codebuild.d.ts +10 -2
  29. package/lib/providers/image-builders/codebuild.js +20 -5
  30. package/lib/providers/image-builders/container.d.ts +220 -0
  31. package/lib/providers/image-builders/container.js +508 -0
  32. package/lib/providers/image-builders/static.js +2 -3
  33. package/lib/providers/lambda.d.ts +5 -1
  34. package/lib/providers/lambda.js +19 -8
  35. package/lib/runner.d.ts +54 -7
  36. package/lib/runner.js +59 -21
  37. package/lib/secrets.js +1 -1
  38. package/lib/utils.js +2 -2
  39. package/package.json +34 -15
  40. package/setup/index.html +12 -0
  41. package/setup/src/App.svelte +291 -0
  42. package/setup/src/app.scss +15 -0
  43. package/setup/src/main.ts +8 -0
  44. package/setup/src/vite-env.d.ts +2 -0
  45. package/setup/svelte.config.mjs +7 -0
  46. package/setup/tsconfig.json +21 -0
  47. package/setup/tsconfig.node.json +8 -0
  48. package/setup/vite.config.ts +15 -0
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.61.0 (build abf4039)",
3013
+ "jsiiVersion": "1.65.0 (build 7a02b7f)",
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)][6]\n[![PyPI](https://img.shields.io/pypi/v/cloudsnorkel.cdk-github-runners?label=pypi&logo=pypi)][7]\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: 'my-codebuild',\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, my-codebuild]\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://www.npmjs.com/package/@cloudsnorkel/cdk-github-runners\n[7]: https://pypi.org/project/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"
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 | 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
  },
@@ -3167,6 +3206,29 @@
3167
3206
  "line": 149
3168
3207
  },
3169
3208
  "methods": [
3209
+ {
3210
+ "docs": {
3211
+ "remarks": "All first party Dockerfiles support this. Others may not.",
3212
+ "stability": "experimental",
3213
+ "summary": "Add extra trusted certificates. This helps deal with self-signed certificates for GitHub Enterprise Server."
3214
+ },
3215
+ "locationInModule": {
3216
+ "filename": "src/providers/image-builders/codebuild.ts",
3217
+ "line": 271
3218
+ },
3219
+ "name": "addExtraCertificates",
3220
+ "parameters": [
3221
+ {
3222
+ "docs": {
3223
+ "summary": "path to directory containing a file called certs.pem containing all the required certificates."
3224
+ },
3225
+ "name": "path",
3226
+ "type": {
3227
+ "primitive": "string"
3228
+ }
3229
+ }
3230
+ ]
3231
+ },
3170
3232
  {
3171
3233
  "docs": {
3172
3234
  "stability": "experimental",
@@ -3271,7 +3333,7 @@
3271
3333
  },
3272
3334
  "locationInModule": {
3273
3335
  "filename": "src/providers/image-builders/codebuild.ts",
3274
- "line": 267
3336
+ "line": 281
3275
3337
  },
3276
3338
  "name": "bind",
3277
3339
  "overrides": "@cloudsnorkel/cdk-github-runners.IImageBuilder",
@@ -3555,7 +3617,7 @@
3555
3617
  "docs": {
3556
3618
  "default": "no VPC",
3557
3619
  "stability": "experimental",
3558
- "summary": "VPC to launch the runners in."
3620
+ "summary": "VPC to build the image in."
3559
3621
  },
3560
3622
  "immutable": true,
3561
3623
  "locationInModule": {
@@ -3586,7 +3648,7 @@
3586
3648
  },
3587
3649
  "locationInModule": {
3588
3650
  "filename": "src/providers/codebuild.ts",
3589
- "line": 133
3651
+ "line": 138
3590
3652
  },
3591
3653
  "parameters": [
3592
3654
  {
@@ -3626,7 +3688,7 @@
3626
3688
  },
3627
3689
  "locationInModule": {
3628
3690
  "filename": "src/providers/codebuild.ts",
3629
- "line": 233
3691
+ "line": 249
3630
3692
  },
3631
3693
  "name": "getStepFunctionTask",
3632
3694
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -3694,7 +3756,7 @@
3694
3756
  "immutable": true,
3695
3757
  "locationInModule": {
3696
3758
  "filename": "src/providers/codebuild.ts",
3697
- "line": 273
3759
+ "line": 289
3698
3760
  },
3699
3761
  "name": "connections",
3700
3762
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -3718,6 +3780,22 @@
3718
3780
  "fqn": "aws-cdk-lib.aws_iam.IPrincipal"
3719
3781
  }
3720
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
+ },
3721
3799
  {
3722
3800
  "docs": {
3723
3801
  "stability": "experimental",
@@ -3935,22 +4013,22 @@
3935
4013
  ],
3936
4014
  "symbolId": "src/providers/codebuild:CodeBuildRunnerProps"
3937
4015
  },
3938
- "@cloudsnorkel/cdk-github-runners.FargateRunner": {
4016
+ "@cloudsnorkel/cdk-github-runners.ContainerImageBuilder": {
3939
4017
  "assembly": "@cloudsnorkel/cdk-github-runners",
3940
4018
  "base": "constructs.Construct",
3941
4019
  "docs": {
3942
- "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.\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, 'Fargate provider', {\n label: 'windows-codebuild',\n imageBuilder: builder,\n});\n```",
3943
4021
  "stability": "experimental",
3944
- "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."
3945
4023
  },
3946
- "fqn": "@cloudsnorkel/cdk-github-runners.FargateRunner",
4024
+ "fqn": "@cloudsnorkel/cdk-github-runners.ContainerImageBuilder",
3947
4025
  "initializer": {
3948
4026
  "docs": {
3949
4027
  "stability": "experimental"
3950
4028
  },
3951
4029
  "locationInModule": {
3952
- "filename": "src/providers/fargate.ts",
3953
- "line": 229
4030
+ "filename": "src/providers/image-builders/container.ts",
4031
+ "line": 422
3954
4032
  },
3955
4033
  "parameters": [
3956
4034
  {
@@ -3967,409 +4045,442 @@
3967
4045
  },
3968
4046
  {
3969
4047
  "name": "props",
4048
+ "optional": true,
3970
4049
  "type": {
3971
- "fqn": "@cloudsnorkel/cdk-github-runners.FargateRunnerProps"
4050
+ "fqn": "@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps"
3972
4051
  }
3973
4052
  }
3974
4053
  ]
3975
4054
  },
3976
4055
  "interfaces": [
3977
- "@cloudsnorkel/cdk-github-runners.IRunnerProvider"
4056
+ "@cloudsnorkel/cdk-github-runners.IImageBuilder"
3978
4057
  ],
3979
4058
  "kind": "class",
3980
4059
  "locationInModule": {
3981
- "filename": "src/providers/fargate.ts",
3982
- "line": 160
4060
+ "filename": "src/providers/image-builders/container.ts",
4061
+ "line": 402
3983
4062
  },
3984
4063
  "methods": [
3985
4064
  {
3986
4065
  "docs": {
3987
- "remarks": "Called by GithubRunners and shouldn't be called manually.",
3988
4066
  "stability": "experimental",
3989
- "summary": "Generate step function task(s) to start a new runner."
4067
+ "summary": "Add a component to be installed."
3990
4068
  },
3991
4069
  "locationInModule": {
3992
- "filename": "src/providers/fargate.ts",
3993
- "line": 298
4070
+ "filename": "src/providers/image-builders/container.ts",
4071
+ "line": 564
3994
4072
  },
3995
- "name": "getStepFunctionTask",
3996
- "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",
3997
4094
  "parameters": [
3998
4095
  {
3999
4096
  "docs": {
4000
- "summary": "workflow job details."
4097
+ "summary": "path to directory containing a file called certs.pem containing all the required certificates."
4001
4098
  },
4002
- "name": "parameters",
4099
+ "name": "path",
4003
4100
  "type": {
4004
- "fqn": "@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters"
4101
+ "primitive": "string"
4005
4102
  }
4006
4103
  }
4007
- ],
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",
4008
4117
  "returns": {
4009
4118
  "type": {
4010
- "fqn": "aws-cdk-lib.aws_stepfunctions.IChainable"
4119
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImage"
4011
4120
  }
4012
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
+ ]
4013
4142
  }
4014
4143
  ],
4015
- "name": "FargateRunner",
4144
+ "name": "ContainerImageBuilder",
4016
4145
  "properties": [
4017
4146
  {
4018
- "const": true,
4019
4147
  "docs": {
4020
- "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.",
4021
- "stability": "experimental",
4022
- "summary": "Path to Dockerfile for Linux ARM64 with all the requirement for Fargate runner."
4148
+ "stability": "experimental"
4023
4149
  },
4024
4150
  "immutable": true,
4025
4151
  "locationInModule": {
4026
- "filename": "src/providers/fargate.ts",
4027
- "line": 177
4152
+ "filename": "src/providers/image-builders/container.ts",
4153
+ "line": 403
4028
4154
  },
4029
- "name": "LINUX_ARM64_DOCKERFILE_PATH",
4030
- "static": true,
4155
+ "name": "architecture",
4031
4156
  "type": {
4032
- "primitive": "string"
4157
+ "fqn": "@cloudsnorkel/cdk-github-runners.Architecture"
4033
4158
  }
4034
4159
  },
4035
4160
  {
4036
- "const": true,
4037
4161
  "docs": {
4038
- "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.",
4039
- "stability": "experimental",
4040
- "summary": "Path to Dockerfile for Linux x64 with all the requirement for Fargate runner."
4162
+ "stability": "experimental"
4041
4163
  },
4042
4164
  "immutable": true,
4043
4165
  "locationInModule": {
4044
- "filename": "src/providers/fargate.ts",
4045
- "line": 168
4166
+ "filename": "src/providers/image-builders/container.ts",
4167
+ "line": 407
4046
4168
  },
4047
- "name": "LINUX_X64_DOCKERFILE_PATH",
4048
- "static": true,
4169
+ "name": "description",
4049
4170
  "type": {
4050
4171
  "primitive": "string"
4051
4172
  }
4052
4173
  },
4053
4174
  {
4054
4175
  "docs": {
4055
- "stability": "experimental",
4056
- "summary": "Whether task will have a public IP."
4176
+ "stability": "experimental"
4057
4177
  },
4058
4178
  "immutable": true,
4059
4179
  "locationInModule": {
4060
- "filename": "src/providers/fargate.ts",
4061
- "line": 212
4180
+ "filename": "src/providers/image-builders/container.ts",
4181
+ "line": 417
4062
4182
  },
4063
- "name": "assignPublicIp",
4183
+ "name": "instanceTypes",
4064
4184
  "type": {
4065
- "primitive": "boolean"
4185
+ "collection": {
4186
+ "elementtype": {
4187
+ "primitive": "string"
4188
+ },
4189
+ "kind": "array"
4190
+ }
4066
4191
  }
4067
4192
  },
4068
4193
  {
4069
4194
  "docs": {
4070
- "stability": "experimental",
4071
- "summary": "Cluster hosting the task hosting the runner."
4195
+ "stability": "experimental"
4072
4196
  },
4073
4197
  "immutable": true,
4074
4198
  "locationInModule": {
4075
- "filename": "src/providers/fargate.ts",
4076
- "line": 182
4199
+ "filename": "src/providers/image-builders/container.ts",
4200
+ "line": 420
4077
4201
  },
4078
- "name": "cluster",
4202
+ "name": "logRemovalPolicy",
4079
4203
  "type": {
4080
- "fqn": "aws-cdk-lib.aws_ecs.Cluster"
4204
+ "fqn": "aws-cdk-lib.RemovalPolicy"
4081
4205
  }
4082
4206
  },
4083
4207
  {
4084
4208
  "docs": {
4085
- "stability": "experimental",
4086
- "summary": "The network connections associated with this resource."
4209
+ "stability": "experimental"
4087
4210
  },
4088
4211
  "immutable": true,
4089
4212
  "locationInModule": {
4090
- "filename": "src/providers/fargate.ts",
4091
- "line": 222
4213
+ "filename": "src/providers/image-builders/container.ts",
4214
+ "line": 419
4092
4215
  },
4093
- "name": "connections",
4094
- "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
4216
+ "name": "logRetention",
4095
4217
  "type": {
4096
- "fqn": "aws-cdk-lib.aws_ec2.Connections"
4218
+ "fqn": "aws-cdk-lib.aws_logs.RetentionDays"
4097
4219
  }
4098
4220
  },
4099
4221
  {
4100
4222
  "docs": {
4101
- "stability": "experimental",
4102
- "summary": "Container definition hosting the runner."
4223
+ "stability": "experimental"
4103
4224
  },
4104
4225
  "immutable": true,
4105
4226
  "locationInModule": {
4106
- "filename": "src/providers/fargate.ts",
4107
- "line": 192
4227
+ "filename": "src/providers/image-builders/container.ts",
4228
+ "line": 404
4108
4229
  },
4109
- "name": "container",
4230
+ "name": "os",
4110
4231
  "type": {
4111
- "fqn": "aws-cdk-lib.aws_ecs.ContainerDefinition"
4232
+ "fqn": "@cloudsnorkel/cdk-github-runners.Os"
4112
4233
  }
4113
4234
  },
4114
4235
  {
4115
4236
  "docs": {
4116
- "stability": "experimental",
4117
- "summary": "Grant principal used to add permissions to the runner role."
4237
+ "stability": "experimental"
4118
4238
  },
4119
4239
  "immutable": true,
4120
4240
  "locationInModule": {
4121
- "filename": "src/providers/fargate.ts",
4122
- "line": 217
4241
+ "filename": "src/providers/image-builders/container.ts",
4242
+ "line": 405
4123
4243
  },
4124
- "name": "grantPrincipal",
4125
- "overrides": "aws-cdk-lib.aws_iam.IGrantable",
4244
+ "name": "platform",
4126
4245
  "type": {
4127
- "fqn": "aws-cdk-lib.aws_iam.IPrincipal"
4246
+ "primitive": "string"
4128
4247
  }
4129
4248
  },
4130
4249
  {
4131
4250
  "docs": {
4132
- "stability": "experimental",
4133
- "summary": "Label associated with this provider."
4251
+ "stability": "experimental"
4134
4252
  },
4135
4253
  "immutable": true,
4136
4254
  "locationInModule": {
4137
- "filename": "src/providers/fargate.ts",
4138
- "line": 197
4255
+ "filename": "src/providers/image-builders/container.ts",
4256
+ "line": 418
4139
4257
  },
4140
- "name": "label",
4141
- "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
4258
+ "name": "rebuildInterval",
4142
4259
  "type": {
4143
- "primitive": "string"
4260
+ "fqn": "aws-cdk-lib.Duration"
4144
4261
  }
4145
4262
  },
4146
4263
  {
4147
4264
  "docs": {
4148
- "stability": "experimental",
4149
- "summary": "Use spot pricing for Fargate tasks."
4265
+ "stability": "experimental"
4150
4266
  },
4151
4267
  "immutable": true,
4152
4268
  "locationInModule": {
4153
- "filename": "src/providers/fargate.ts",
4154
- "line": 227
4269
+ "filename": "src/providers/image-builders/container.ts",
4270
+ "line": 411
4155
4271
  },
4156
- "name": "spot",
4272
+ "name": "repository",
4157
4273
  "type": {
4158
- "primitive": "boolean"
4274
+ "fqn": "aws-cdk-lib.aws_ecr.IRepository"
4159
4275
  }
4160
4276
  },
4161
4277
  {
4162
4278
  "docs": {
4163
- "stability": "experimental",
4164
- "summary": "Fargate task hosting the runner."
4279
+ "stability": "experimental"
4165
4280
  },
4166
4281
  "immutable": true,
4167
4282
  "locationInModule": {
4168
- "filename": "src/providers/fargate.ts",
4169
- "line": 187
4283
+ "filename": "src/providers/image-builders/container.ts",
4284
+ "line": 409
4170
4285
  },
4171
- "name": "task",
4286
+ "name": "runnerVersion",
4172
4287
  "type": {
4173
- "fqn": "aws-cdk-lib.aws_ecs.FargateTaskDefinition"
4288
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerVersion"
4174
4289
  }
4175
4290
  },
4176
4291
  {
4177
4292
  "docs": {
4178
- "stability": "experimental",
4179
- "summary": "Security group attached to the task."
4293
+ "stability": "experimental"
4180
4294
  },
4181
4295
  "immutable": true,
4182
4296
  "locationInModule": {
4183
- "filename": "src/providers/fargate.ts",
4184
- "line": 207
4297
+ "filename": "src/providers/image-builders/container.ts",
4298
+ "line": 416
4185
4299
  },
4186
- "name": "securityGroup",
4300
+ "name": "securityGroupIds",
4187
4301
  "optional": true,
4188
- "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
4189
4302
  "type": {
4190
- "fqn": "aws-cdk-lib.aws_ec2.ISecurityGroup"
4303
+ "collection": {
4304
+ "elementtype": {
4305
+ "primitive": "string"
4306
+ },
4307
+ "kind": "array"
4308
+ }
4191
4309
  }
4192
4310
  },
4193
4311
  {
4194
4312
  "docs": {
4195
- "stability": "experimental",
4196
- "summary": "VPC used for hosting the task."
4313
+ "stability": "experimental"
4197
4314
  },
4198
4315
  "immutable": true,
4199
4316
  "locationInModule": {
4200
- "filename": "src/providers/fargate.ts",
4201
- "line": 202
4317
+ "filename": "src/providers/image-builders/container.ts",
4318
+ "line": 415
4202
4319
  },
4203
- "name": "vpc",
4320
+ "name": "subnetId",
4204
4321
  "optional": true,
4205
- "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
4206
4322
  "type": {
4207
- "fqn": "aws-cdk-lib.aws_ec2.IVpc"
4323
+ "primitive": "string"
4208
4324
  }
4209
4325
  }
4210
4326
  ],
4211
- "symbolId": "src/providers/fargate:FargateRunner"
4327
+ "symbolId": "src/providers/image-builders/container:ContainerImageBuilder"
4212
4328
  },
4213
- "@cloudsnorkel/cdk-github-runners.FargateRunnerProps": {
4329
+ "@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps": {
4214
4330
  "assembly": "@cloudsnorkel/cdk-github-runners",
4215
4331
  "datatype": true,
4216
4332
  "docs": {
4217
4333
  "stability": "experimental",
4218
- "summary": "Properties for FargateRunner."
4334
+ "summary": "Properties for ContainerImageBuilder construct."
4219
4335
  },
4220
- "fqn": "@cloudsnorkel/cdk-github-runners.FargateRunnerProps",
4221
- "interfaces": [
4222
- "@cloudsnorkel/cdk-github-runners.RunnerProviderProps"
4223
- ],
4336
+ "fqn": "@cloudsnorkel/cdk-github-runners.ContainerImageBuilderProps",
4224
4337
  "kind": "interface",
4225
4338
  "locationInModule": {
4226
- "filename": "src/providers/fargate.ts",
4227
- "line": 19
4339
+ "filename": "src/providers/image-builders/container.ts",
4340
+ "line": 27
4228
4341
  },
4229
- "name": "FargateRunnerProps",
4342
+ "name": "ContainerImageBuilderProps",
4230
4343
  "properties": [
4231
4344
  {
4232
4345
  "abstract": true,
4233
4346
  "docs": {
4234
- "default": "true",
4235
- "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",
4236
4348
  "stability": "experimental",
4237
- "summary": "Assign public IP to the runner task."
4349
+ "summary": "Image architecture."
4238
4350
  },
4239
4351
  "immutable": true,
4240
4352
  "locationInModule": {
4241
- "filename": "src/providers/fargate.ts",
4242
- "line": 72
4353
+ "filename": "src/providers/image-builders/container.ts",
4354
+ "line": 33
4243
4355
  },
4244
- "name": "assignPublicIp",
4356
+ "name": "architecture",
4245
4357
  "optional": true,
4246
4358
  "type": {
4247
- "primitive": "boolean"
4359
+ "fqn": "@cloudsnorkel/cdk-github-runners.Architecture"
4248
4360
  }
4249
4361
  },
4250
4362
  {
4251
4363
  "abstract": true,
4252
4364
  "docs": {
4253
- "default": "a new cluster",
4365
+ "default": "m5.large",
4254
4366
  "stability": "experimental",
4255
- "summary": "Existing Fargate cluster to use."
4367
+ "summary": "The instance type used to build the image."
4256
4368
  },
4257
4369
  "immutable": true,
4258
4370
  "locationInModule": {
4259
- "filename": "src/providers/fargate.ts",
4260
- "line": 63
4371
+ "filename": "src/providers/image-builders/container.ts",
4372
+ "line": 84
4261
4373
  },
4262
- "name": "cluster",
4374
+ "name": "instanceType",
4263
4375
  "optional": true,
4264
4376
  "type": {
4265
- "fqn": "aws-cdk-lib.aws_ecs.Cluster"
4377
+ "fqn": "aws-cdk-lib.aws_ec2.InstanceType"
4266
4378
  }
4267
4379
  },
4268
4380
  {
4269
4381
  "abstract": true,
4270
4382
  "docs": {
4271
- "default": "1024",
4272
- "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.",
4273
4385
  "stability": "experimental",
4274
- "summary": "The number of cpu units used by the task."
4386
+ "summary": "Removal policy for logs of image builds."
4275
4387
  },
4276
4388
  "immutable": true,
4277
4389
  "locationInModule": {
4278
- "filename": "src/providers/fargate.ts",
4279
- "line": 91
4390
+ "filename": "src/providers/image-builders/container.ts",
4391
+ "line": 102
4280
4392
  },
4281
- "name": "cpu",
4393
+ "name": "logRemovalPolicy",
4282
4394
  "optional": true,
4283
4395
  "type": {
4284
- "primitive": "number"
4396
+ "fqn": "aws-cdk-lib.RemovalPolicy"
4285
4397
  }
4286
4398
  },
4287
4399
  {
4288
4400
  "abstract": true,
4289
4401
  "docs": {
4290
- "default": "20",
4291
- "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`.",
4292
4404
  "stability": "experimental",
4293
- "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."
4294
4406
  },
4295
4407
  "immutable": true,
4296
4408
  "locationInModule": {
4297
- "filename": "src/providers/fargate.ts",
4298
- "line": 118
4409
+ "filename": "src/providers/image-builders/container.ts",
4410
+ "line": 93
4299
4411
  },
4300
- "name": "ephemeralStorageGiB",
4412
+ "name": "logRetention",
4301
4413
  "optional": true,
4302
4414
  "type": {
4303
- "primitive": "number"
4415
+ "fqn": "aws-cdk-lib.aws_logs.RetentionDays"
4304
4416
  }
4305
4417
  },
4306
4418
  {
4307
4419
  "abstract": true,
4308
4420
  "docs": {
4309
- "default": "image builder with `FargateRunner.LINUX_X64_DOCKERFILE_PATH` as Dockerfile",
4310
- "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",
4311
4422
  "stability": "experimental",
4312
- "summary": "Provider running an image to run inside CodeBuild with GitHub runner pre-configured."
4423
+ "summary": "Image OS."
4313
4424
  },
4314
4425
  "immutable": true,
4315
4426
  "locationInModule": {
4316
- "filename": "src/providers/fargate.ts",
4317
- "line": 35
4427
+ "filename": "src/providers/image-builders/container.ts",
4428
+ "line": 40
4318
4429
  },
4319
- "name": "imageBuilder",
4430
+ "name": "os",
4320
4431
  "optional": true,
4321
4432
  "type": {
4322
- "fqn": "@cloudsnorkel/cdk-github-runners.IImageBuilder"
4433
+ "fqn": "@cloudsnorkel/cdk-github-runners.Os"
4323
4434
  }
4324
4435
  },
4325
4436
  {
4326
4437
  "abstract": true,
4327
4438
  "docs": {
4328
- "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.",
4329
4441
  "stability": "experimental",
4330
- "summary": "GitHub Actions label used for this provider."
4442
+ "summary": "Schedule the image to be rebuilt every given interval."
4331
4443
  },
4332
4444
  "immutable": true,
4333
4445
  "locationInModule": {
4334
- "filename": "src/providers/fargate.ts",
4335
- "line": 42
4446
+ "filename": "src/providers/image-builders/container.ts",
4447
+ "line": 56
4336
4448
  },
4337
- "name": "label",
4449
+ "name": "rebuildInterval",
4338
4450
  "optional": true,
4339
4451
  "type": {
4340
- "primitive": "string"
4452
+ "fqn": "aws-cdk-lib.Duration"
4341
4453
  }
4342
4454
  },
4343
4455
  {
4344
4456
  "abstract": true,
4345
4457
  "docs": {
4346
- "default": "2048",
4347
- "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",
4348
4459
  "stability": "experimental",
4349
- "summary": "The amount (in MiB) of memory used by the task."
4460
+ "summary": "Version of GitHub Runners to install."
4350
4461
  },
4351
4462
  "immutable": true,
4352
4463
  "locationInModule": {
4353
- "filename": "src/providers/fargate.ts",
4354
- "line": 109
4464
+ "filename": "src/providers/image-builders/container.ts",
4465
+ "line": 47
4355
4466
  },
4356
- "name": "memoryLimitMiB",
4467
+ "name": "runnerVersion",
4357
4468
  "optional": true,
4358
4469
  "type": {
4359
- "primitive": "number"
4470
+ "fqn": "@cloudsnorkel/cdk-github-runners.RunnerVersion"
4360
4471
  }
4361
4472
  },
4362
4473
  {
4363
4474
  "abstract": true,
4364
4475
  "docs": {
4365
- "default": "a new security group",
4476
+ "default": "default account security group",
4366
4477
  "stability": "experimental",
4367
- "summary": "Security Group to assign to the task."
4478
+ "summary": "Security Group to assign to this instance."
4368
4479
  },
4369
4480
  "immutable": true,
4370
4481
  "locationInModule": {
4371
- "filename": "src/providers/fargate.ts",
4372
- "line": 56
4482
+ "filename": "src/providers/image-builders/container.ts",
4483
+ "line": 70
4373
4484
  },
4374
4485
  "name": "securityGroup",
4375
4486
  "optional": true,
@@ -4380,20 +4491,19 @@
4380
4491
  {
4381
4492
  "abstract": true,
4382
4493
  "docs": {
4383
- "default": "false",
4384
- "remarks": "* Runners may fail to start due to missing capacity.\n* Runners might be stopped prematurely with spot pricing.",
4494
+ "default": "default VPC subnet",
4385
4495
  "stability": "experimental",
4386
- "summary": "Use Fargate spot capacity provider to save money."
4496
+ "summary": "Where to place the network interfaces within the VPC."
4387
4497
  },
4388
4498
  "immutable": true,
4389
4499
  "locationInModule": {
4390
- "filename": "src/providers/fargate.ts",
4391
- "line": 128
4500
+ "filename": "src/providers/image-builders/container.ts",
4501
+ "line": 77
4392
4502
  },
4393
- "name": "spot",
4503
+ "name": "subnetSelection",
4394
4504
  "optional": true,
4395
4505
  "type": {
4396
- "primitive": "boolean"
4506
+ "fqn": "aws-cdk-lib.aws_ec2.SubnetSelection"
4397
4507
  }
4398
4508
  },
4399
4509
  {
@@ -4405,8 +4515,8 @@
4405
4515
  },
4406
4516
  "immutable": true,
4407
4517
  "locationInModule": {
4408
- "filename": "src/providers/fargate.ts",
4409
- "line": 49
4518
+ "filename": "src/providers/image-builders/container.ts",
4519
+ "line": 63
4410
4520
  },
4411
4521
  "name": "vpc",
4412
4522
  "optional": true,
@@ -4415,24 +4525,1014 @@
4415
4525
  }
4416
4526
  }
4417
4527
  ],
4418
- "symbolId": "src/providers/fargate:FargateRunnerProps"
4528
+ "symbolId": "src/providers/image-builders/container:ContainerImageBuilderProps"
4529
+ },
4530
+ "@cloudsnorkel/cdk-github-runners.FargateRunner": {
4531
+ "assembly": "@cloudsnorkel/cdk-github-runners",
4532
+ "base": "constructs.Construct",
4533
+ "docs": {
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.",
4535
+ "stability": "experimental",
4536
+ "summary": "GitHub Actions runner provider using Fargate to execute the actions."
4537
+ },
4538
+ "fqn": "@cloudsnorkel/cdk-github-runners.FargateRunner",
4539
+ "initializer": {
4540
+ "docs": {
4541
+ "stability": "experimental"
4542
+ },
4543
+ "locationInModule": {
4544
+ "filename": "src/providers/fargate.ts",
4545
+ "line": 235
4546
+ },
4547
+ "parameters": [
4548
+ {
4549
+ "name": "scope",
4550
+ "type": {
4551
+ "fqn": "constructs.Construct"
4552
+ }
4553
+ },
4554
+ {
4555
+ "name": "id",
4556
+ "type": {
4557
+ "primitive": "string"
4558
+ }
4559
+ },
4560
+ {
4561
+ "name": "props",
4562
+ "type": {
4563
+ "fqn": "@cloudsnorkel/cdk-github-runners.FargateRunnerProps"
4564
+ }
4565
+ }
4566
+ ]
4567
+ },
4568
+ "interfaces": [
4569
+ "@cloudsnorkel/cdk-github-runners.IRunnerProvider"
4570
+ ],
4571
+ "kind": "class",
4572
+ "locationInModule": {
4573
+ "filename": "src/providers/fargate.ts",
4574
+ "line": 161
4575
+ },
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": 304
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",
4608
+ "properties": [
4609
+ {
4610
+ "const": true,
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.",
4613
+ "stability": "experimental",
4614
+ "summary": "Path to Dockerfile for Linux ARM64 with all the requirement for Fargate runner."
4615
+ },
4616
+ "immutable": true,
4617
+ "locationInModule": {
4618
+ "filename": "src/providers/fargate.ts",
4619
+ "line": 178
4620
+ },
4621
+ "name": "LINUX_ARM64_DOCKERFILE_PATH",
4622
+ "static": true,
4623
+ "type": {
4624
+ "primitive": "string"
4625
+ }
4626
+ },
4627
+ {
4628
+ "const": true,
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.",
4631
+ "stability": "experimental",
4632
+ "summary": "Path to Dockerfile for Linux x64 with all the requirement for Fargate runner."
4633
+ },
4634
+ "immutable": true,
4635
+ "locationInModule": {
4636
+ "filename": "src/providers/fargate.ts",
4637
+ "line": 169
4638
+ },
4639
+ "name": "LINUX_X64_DOCKERFILE_PATH",
4640
+ "static": true,
4641
+ "type": {
4642
+ "primitive": "string"
4643
+ }
4644
+ },
4645
+ {
4646
+ "docs": {
4647
+ "stability": "experimental",
4648
+ "summary": "Whether task will have a public IP."
4649
+ },
4650
+ "immutable": true,
4651
+ "locationInModule": {
4652
+ "filename": "src/providers/fargate.ts",
4653
+ "line": 213
4654
+ },
4655
+ "name": "assignPublicIp",
4656
+ "type": {
4657
+ "primitive": "boolean"
4658
+ }
4659
+ },
4660
+ {
4661
+ "docs": {
4662
+ "stability": "experimental",
4663
+ "summary": "Cluster hosting the task hosting the runner."
4664
+ },
4665
+ "immutable": true,
4666
+ "locationInModule": {
4667
+ "filename": "src/providers/fargate.ts",
4668
+ "line": 183
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": 223
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": 193
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": 218
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": 233
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": 198
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": 228
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": 188
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": 208
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": 203
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": 136
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": 144
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": 200
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": 214
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": 204
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": 209
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": 220
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": 248
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": 239
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": 224
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": 234
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": 229
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"
4419
5519
  },
4420
- "@cloudsnorkel/cdk-github-runners.GitHubRunners": {
5520
+ "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent": {
4421
5521
  "assembly": "@cloudsnorkel/cdk-github-runners",
4422
- "base": "constructs.Construct",
5522
+ "base": "aws-cdk-lib.Resource",
4423
5523
  "docs": {
4424
- "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(stack, '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(stack, 'vpc', { vpcId: 'vpc-1234567' });\nconst runnerSg = new ec2.SecurityGroup(stack, 'runner security group', { vpc: vpc });\nconst dbSg = ec2.SecurityGroup.fromSecurityGroupId(stack, 'database security group', 'sg-1234567');\nconst bucket = new s3.Bucket(stack, 'runner bucket');\n\n// create a custom CodeBuild provider\nconst myProvider = new CodeBuildRunner(\n stack, '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 stack,\n 'runners',\n {\n providers: [myProvider],\n }\n);\n```",
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```",
4425
5525
  "stability": "experimental",
4426
- "summary": "Create all the required infrastructure to provide self-hosted GitHub runners."
5526
+ "summary": "Components are a set of commands to run and optional files to add to an image."
4427
5527
  },
4428
- "fqn": "@cloudsnorkel/cdk-github-runners.GitHubRunners",
5528
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent",
4429
5529
  "initializer": {
4430
5530
  "docs": {
4431
5531
  "stability": "experimental"
4432
5532
  },
4433
5533
  "locationInModule": {
4434
- "filename": "src/runner.ts",
4435
- "line": 83
5534
+ "filename": "src/providers/image-builders/container.ts",
5535
+ "line": 221
4436
5536
  },
4437
5537
  "parameters": [
4438
5538
  {
@@ -4449,199 +5549,174 @@
4449
5549
  },
4450
5550
  {
4451
5551
  "name": "props",
4452
- "optional": true,
4453
5552
  "type": {
4454
- "fqn": "@cloudsnorkel/cdk-github-runners.GitHubRunnersProps"
5553
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties"
4455
5554
  }
4456
5555
  }
4457
5556
  ]
4458
5557
  },
4459
5558
  "kind": "class",
4460
5559
  "locationInModule": {
4461
- "filename": "src/runner.ts",
4462
- "line": 65
5560
+ "filename": "src/providers/image-builders/container.ts",
5561
+ "line": 208
4463
5562
  },
4464
- "name": "GitHubRunners",
5563
+ "methods": [
5564
+ {
5565
+ "docs": {
5566
+ "stability": "experimental",
5567
+ "summary": "Grants read permissions to the principal on the assets buckets."
5568
+ },
5569
+ "locationInModule": {
5570
+ "filename": "src/providers/image-builders/container.ts",
5571
+ "line": 313
5572
+ },
5573
+ "name": "grantAssetsRead",
5574
+ "parameters": [
5575
+ {
5576
+ "name": "grantee",
5577
+ "type": {
5578
+ "fqn": "aws-cdk-lib.aws_iam.IGrantable"
5579
+ }
5580
+ }
5581
+ ]
5582
+ },
5583
+ {
5584
+ "docs": {
5585
+ "stability": "experimental"
5586
+ },
5587
+ "locationInModule": {
5588
+ "filename": "src/providers/image-builders/container.ts",
5589
+ "line": 114
5590
+ },
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
+ }
5617
+ }
5618
+ }
5619
+ ],
5620
+ "name": "ImageBuilderComponent",
4465
5621
  "properties": [
4466
5622
  {
4467
5623
  "docs": {
4468
5624
  "stability": "experimental",
4469
- "summary": "Configured runner providers."
5625
+ "summary": "Component ARN."
4470
5626
  },
4471
5627
  "immutable": true,
4472
5628
  "locationInModule": {
4473
- "filename": "src/runner.ts",
4474
- "line": 72
5629
+ "filename": "src/providers/image-builders/container.ts",
5630
+ "line": 212
4475
5631
  },
4476
- "name": "providers",
5632
+ "name": "arn",
4477
5633
  "type": {
4478
- "collection": {
4479
- "elementtype": {
4480
- "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerProvider"
4481
- },
4482
- "kind": "array"
4483
- }
5634
+ "primitive": "string"
4484
5635
  }
4485
5636
  },
4486
5637
  {
4487
5638
  "docs": {
4488
5639
  "stability": "experimental",
4489
- "summary": "Secrets for GitHub communication including webhook secret and runner authentication."
5640
+ "summary": "Supported platform for the component."
4490
5641
  },
4491
5642
  "immutable": true,
4492
5643
  "locationInModule": {
4493
- "filename": "src/runner.ts",
4494
- "line": 77
5644
+ "filename": "src/providers/image-builders/container.ts",
5645
+ "line": 217
4495
5646
  },
4496
- "name": "secrets",
5647
+ "name": "platform",
4497
5648
  "type": {
4498
- "fqn": "@cloudsnorkel/cdk-github-runners.Secrets"
5649
+ "primitive": "string"
4499
5650
  }
4500
5651
  }
4501
5652
  ],
4502
- "symbolId": "src/runner:GitHubRunners"
5653
+ "symbolId": "src/providers/image-builders/container:ImageBuilderComponent"
4503
5654
  },
4504
- "@cloudsnorkel/cdk-github-runners.GitHubRunnersProps": {
5655
+ "@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties": {
4505
5656
  "assembly": "@cloudsnorkel/cdk-github-runners",
4506
5657
  "datatype": true,
4507
5658
  "docs": {
4508
5659
  "stability": "experimental",
4509
- "summary": "Properties for GitHubRunners."
5660
+ "summary": "Properties for ImageBuilderComponent construct."
4510
5661
  },
4511
- "fqn": "@cloudsnorkel/cdk-github-runners.GitHubRunnersProps",
5662
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderComponentProperties",
4512
5663
  "kind": "interface",
4513
5664
  "locationInModule": {
4514
- "filename": "src/runner.ts",
4515
- "line": 16
5665
+ "filename": "src/providers/image-builders/container.ts",
5666
+ "line": 162
4516
5667
  },
4517
- "name": "GitHubRunnersProps",
5668
+ "name": "ImageBuilderComponentProperties",
4518
5669
  "properties": [
4519
5670
  {
4520
5671
  "abstract": true,
4521
5672
  "docs": {
4522
- "default": "CodeBuild, Lambda and Fargate runners with all the defaults (no VPC or default account VPC)",
4523
- "remarks": "At least one provider is required. Provider will be selected when its label matches the labels requested by the workflow job.",
5673
+ "remarks": "On Linux, these are bash commands. On Windows, there are PowerShell commands.",
4524
5674
  "stability": "experimental",
4525
- "summary": "List of runner providers to use."
5675
+ "summary": "Shell commands to run when adding this component to the image."
4526
5676
  },
4527
5677
  "immutable": true,
4528
5678
  "locationInModule": {
4529
- "filename": "src/runner.ts",
4530
- "line": 22
5679
+ "filename": "src/providers/image-builders/container.ts",
5680
+ "line": 183
4531
5681
  },
4532
- "name": "providers",
4533
- "optional": true,
5682
+ "name": "commands",
4534
5683
  "type": {
4535
5684
  "collection": {
4536
5685
  "elementtype": {
4537
- "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerProvider"
5686
+ "primitive": "string"
4538
5687
  },
4539
5688
  "kind": "array"
4540
5689
  }
4541
5690
  }
4542
- }
4543
- ],
4544
- "symbolId": "src/runner:GitHubRunnersProps"
4545
- },
4546
- "@cloudsnorkel/cdk-github-runners.IImageBuilder": {
4547
- "assembly": "@cloudsnorkel/cdk-github-runners",
4548
- "docs": {
4549
- "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.",
4550
- "stability": "experimental",
4551
- "summary": "Interface for constructs that build an image that can be used in {@link IRunnerProvider}."
4552
- },
4553
- "fqn": "@cloudsnorkel/cdk-github-runners.IImageBuilder",
4554
- "kind": "interface",
4555
- "locationInModule": {
4556
- "filename": "src/providers/common.ts",
4557
- "line": 129
4558
- },
4559
- "methods": [
4560
- {
4561
- "abstract": true,
4562
- "docs": {
4563
- "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.",
4564
- "returns": "image",
4565
- "stability": "experimental",
4566
- "summary": "ECR repository containing the image."
4567
- },
4568
- "locationInModule": {
4569
- "filename": "src/providers/common.ts",
4570
- "line": 137
4571
- },
4572
- "name": "bind",
4573
- "returns": {
4574
- "type": {
4575
- "fqn": "@cloudsnorkel/cdk-github-runners.RunnerImage"
4576
- }
4577
- }
4578
- }
4579
- ],
4580
- "name": "IImageBuilder",
4581
- "symbolId": "src/providers/common:IImageBuilder"
4582
- },
4583
- "@cloudsnorkel/cdk-github-runners.IRunnerProvider": {
4584
- "assembly": "@cloudsnorkel/cdk-github-runners",
4585
- "docs": {
4586
- "remarks": "Implementations create all required resources and return a step function task that starts those resources from {@link getStepFunctionTask}.",
4587
- "stability": "experimental",
4588
- "summary": "Interface for all runner providers."
4589
- },
4590
- "fqn": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
4591
- "interfaces": [
4592
- "aws-cdk-lib.aws_ec2.IConnectable",
4593
- "aws-cdk-lib.aws_iam.IGrantable"
4594
- ],
4595
- "kind": "interface",
4596
- "locationInModule": {
4597
- "filename": "src/providers/common.ts",
4598
- "line": 193
4599
- },
4600
- "methods": [
5691
+ },
4601
5692
  {
4602
5693
  "abstract": true,
4603
5694
  "docs": {
4604
- "remarks": "Called by GithubRunners and shouldn't be called manually.",
4605
5695
  "stability": "experimental",
4606
- "summary": "Generate step function tasks that execute the runner."
5696
+ "summary": "Component description."
4607
5697
  },
5698
+ "immutable": true,
4608
5699
  "locationInModule": {
4609
- "filename": "src/providers/common.ts",
4610
- "line": 216
5700
+ "filename": "src/providers/image-builders/container.ts",
5701
+ "line": 176
4611
5702
  },
4612
- "name": "getStepFunctionTask",
4613
- "parameters": [
4614
- {
4615
- "docs": {
4616
- "summary": "specific build parameters."
4617
- },
4618
- "name": "parameters",
4619
- "type": {
4620
- "fqn": "@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters"
4621
- }
4622
- }
4623
- ],
4624
- "returns": {
4625
- "type": {
4626
- "fqn": "aws-cdk-lib.aws_stepfunctions.IChainable"
4627
- }
5703
+ "name": "description",
5704
+ "type": {
5705
+ "primitive": "string"
4628
5706
  }
4629
- }
4630
- ],
4631
- "name": "IRunnerProvider",
4632
- "properties": [
5707
+ },
4633
5708
  {
4634
5709
  "abstract": true,
4635
5710
  "docs": {
4636
5711
  "stability": "experimental",
4637
- "summary": "GitHub Actions label associated with this runner provider."
5712
+ "summary": "Component display name."
4638
5713
  },
4639
5714
  "immutable": true,
4640
5715
  "locationInModule": {
4641
- "filename": "src/providers/common.ts",
4642
- "line": 197
5716
+ "filename": "src/providers/image-builders/container.ts",
5717
+ "line": 171
4643
5718
  },
4644
- "name": "label",
5719
+ "name": "displayName",
4645
5720
  "type": {
4646
5721
  "primitive": "string"
4647
5722
  }
@@ -4649,39 +5724,44 @@
4649
5724
  {
4650
5725
  "abstract": true,
4651
5726
  "docs": {
5727
+ "remarks": "Must match the builder platform.",
4652
5728
  "stability": "experimental",
4653
- "summary": "Security group associated with runners."
5729
+ "summary": "Component platform."
4654
5730
  },
4655
5731
  "immutable": true,
4656
5732
  "locationInModule": {
4657
- "filename": "src/providers/common.ts",
4658
- "line": 207
5733
+ "filename": "src/providers/image-builders/container.ts",
5734
+ "line": 166
4659
5735
  },
4660
- "name": "securityGroup",
4661
- "optional": true,
5736
+ "name": "platform",
4662
5737
  "type": {
4663
- "fqn": "aws-cdk-lib.aws_ec2.ISecurityGroup"
5738
+ "primitive": "string"
4664
5739
  }
4665
5740
  },
4666
5741
  {
4667
5742
  "abstract": true,
4668
5743
  "docs": {
4669
5744
  "stability": "experimental",
4670
- "summary": "VPC network in which runners will be placed."
5745
+ "summary": "Optional assets to add to the built image."
4671
5746
  },
4672
5747
  "immutable": true,
4673
5748
  "locationInModule": {
4674
- "filename": "src/providers/common.ts",
4675
- "line": 202
5749
+ "filename": "src/providers/image-builders/container.ts",
5750
+ "line": 188
4676
5751
  },
4677
- "name": "vpc",
5752
+ "name": "assets",
4678
5753
  "optional": true,
4679
5754
  "type": {
4680
- "fqn": "aws-cdk-lib.aws_ec2.IVpc"
5755
+ "collection": {
5756
+ "elementtype": {
5757
+ "fqn": "@cloudsnorkel/cdk-github-runners.ImageBuilderAsset"
5758
+ },
5759
+ "kind": "array"
5760
+ }
4681
5761
  }
4682
5762
  }
4683
5763
  ],
4684
- "symbolId": "src/providers/common:IRunnerProvider"
5764
+ "symbolId": "src/providers/image-builders/container:ImageBuilderComponentProperties"
4685
5765
  },
4686
5766
  "@cloudsnorkel/cdk-github-runners.LambdaRunner": {
4687
5767
  "assembly": "@cloudsnorkel/cdk-github-runners",
@@ -4698,7 +5778,7 @@
4698
5778
  },
4699
5779
  "locationInModule": {
4700
5780
  "filename": "src/providers/lambda.ts",
4701
- "line": 135
5781
+ "line": 141
4702
5782
  },
4703
5783
  "parameters": [
4704
5784
  {
@@ -4727,7 +5807,7 @@
4727
5807
  "kind": "class",
4728
5808
  "locationInModule": {
4729
5809
  "filename": "src/providers/lambda.ts",
4730
- "line": 91
5810
+ "line": 92
4731
5811
  },
4732
5812
  "methods": [
4733
5813
  {
@@ -4738,7 +5818,7 @@
4738
5818
  },
4739
5819
  "locationInModule": {
4740
5820
  "filename": "src/providers/lambda.ts",
4741
- "line": 198
5821
+ "line": 215
4742
5822
  },
4743
5823
  "name": "getStepFunctionTask",
4744
5824
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -4772,7 +5852,7 @@
4772
5852
  "immutable": true,
4773
5853
  "locationInModule": {
4774
5854
  "filename": "src/providers/lambda.ts",
4775
- "line": 108
5855
+ "line": 109
4776
5856
  },
4777
5857
  "name": "LINUX_ARM64_DOCKERFILE_PATH",
4778
5858
  "static": true,
@@ -4790,7 +5870,7 @@
4790
5870
  "immutable": true,
4791
5871
  "locationInModule": {
4792
5872
  "filename": "src/providers/lambda.ts",
4793
- "line": 99
5873
+ "line": 100
4794
5874
  },
4795
5875
  "name": "LINUX_X64_DOCKERFILE_PATH",
4796
5876
  "static": true,
@@ -4806,7 +5886,7 @@
4806
5886
  "immutable": true,
4807
5887
  "locationInModule": {
4808
5888
  "filename": "src/providers/lambda.ts",
4809
- "line": 187
5889
+ "line": 204
4810
5890
  },
4811
5891
  "name": "connections",
4812
5892
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -4822,7 +5902,7 @@
4822
5902
  "immutable": true,
4823
5903
  "locationInModule": {
4824
5904
  "filename": "src/providers/lambda.ts",
4825
- "line": 113
5905
+ "line": 114
4826
5906
  },
4827
5907
  "name": "function",
4828
5908
  "type": {
@@ -4837,7 +5917,7 @@
4837
5917
  "immutable": true,
4838
5918
  "locationInModule": {
4839
5919
  "filename": "src/providers/lambda.ts",
4840
- "line": 133
5920
+ "line": 134
4841
5921
  },
4842
5922
  "name": "grantPrincipal",
4843
5923
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -4845,6 +5925,22 @@
4845
5925
  "fqn": "aws-cdk-lib.aws_iam.IPrincipal"
4846
5926
  }
4847
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
+ },
4848
5944
  {
4849
5945
  "docs": {
4850
5946
  "stability": "experimental",
@@ -4853,7 +5949,7 @@
4853
5949
  "immutable": true,
4854
5950
  "locationInModule": {
4855
5951
  "filename": "src/providers/lambda.ts",
4856
- "line": 118
5952
+ "line": 119
4857
5953
  },
4858
5954
  "name": "label",
4859
5955
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -4869,7 +5965,7 @@
4869
5965
  "immutable": true,
4870
5966
  "locationInModule": {
4871
5967
  "filename": "src/providers/lambda.ts",
4872
- "line": 128
5968
+ "line": 129
4873
5969
  },
4874
5970
  "name": "securityGroup",
4875
5971
  "optional": true,
@@ -4886,7 +5982,7 @@
4886
5982
  "immutable": true,
4887
5983
  "locationInModule": {
4888
5984
  "filename": "src/providers/lambda.ts",
4889
- "line": 123
5985
+ "line": 124
4890
5986
  },
4891
5987
  "name": "vpc",
4892
5988
  "optional": true,
@@ -4911,7 +6007,7 @@
4911
6007
  "kind": "interface",
4912
6008
  "locationInModule": {
4913
6009
  "filename": "src/providers/lambda.ts",
4914
- "line": 18
6010
+ "line": 19
4915
6011
  },
4916
6012
  "name": "LambdaRunnerProps",
4917
6013
  "properties": [
@@ -4925,7 +6021,7 @@
4925
6021
  "immutable": true,
4926
6022
  "locationInModule": {
4927
6023
  "filename": "src/providers/lambda.ts",
4928
- "line": 51
6024
+ "line": 52
4929
6025
  },
4930
6026
  "name": "ephemeralStorageSize",
4931
6027
  "optional": true,
@@ -4945,7 +6041,7 @@
4945
6041
  "immutable": true,
4946
6042
  "locationInModule": {
4947
6043
  "filename": "src/providers/lambda.ts",
4948
- "line": 27
6044
+ "line": 28
4949
6045
  },
4950
6046
  "name": "imageBuilder",
4951
6047
  "optional": true,
@@ -4963,7 +6059,7 @@
4963
6059
  "immutable": true,
4964
6060
  "locationInModule": {
4965
6061
  "filename": "src/providers/lambda.ts",
4966
- "line": 34
6062
+ "line": 35
4967
6063
  },
4968
6064
  "name": "label",
4969
6065
  "optional": true,
@@ -4982,7 +6078,7 @@
4982
6078
  "immutable": true,
4983
6079
  "locationInModule": {
4984
6080
  "filename": "src/providers/lambda.ts",
4985
- "line": 44
6081
+ "line": 45
4986
6082
  },
4987
6083
  "name": "memorySize",
4988
6084
  "optional": true,
@@ -5000,7 +6096,7 @@
5000
6096
  "immutable": true,
5001
6097
  "locationInModule": {
5002
6098
  "filename": "src/providers/lambda.ts",
5003
- "line": 74
6099
+ "line": 75
5004
6100
  },
5005
6101
  "name": "securityGroup",
5006
6102
  "optional": true,
@@ -5018,7 +6114,7 @@
5018
6114
  "immutable": true,
5019
6115
  "locationInModule": {
5020
6116
  "filename": "src/providers/lambda.ts",
5021
- "line": 81
6117
+ "line": 82
5022
6118
  },
5023
6119
  "name": "subnetSelection",
5024
6120
  "optional": true,
@@ -5037,7 +6133,7 @@
5037
6133
  "immutable": true,
5038
6134
  "locationInModule": {
5039
6135
  "filename": "src/providers/lambda.ts",
5040
- "line": 60
6136
+ "line": 61
5041
6137
  },
5042
6138
  "name": "timeout",
5043
6139
  "optional": true,
@@ -5055,7 +6151,7 @@
5055
6151
  "immutable": true,
5056
6152
  "locationInModule": {
5057
6153
  "filename": "src/providers/lambda.ts",
5058
- "line": 67
6154
+ "line": 68
5059
6155
  },
5060
6156
  "name": "vpc",
5061
6157
  "optional": true,
@@ -5183,7 +6279,7 @@
5183
6279
  "immutable": true,
5184
6280
  "locationInModule": {
5185
6281
  "filename": "src/providers/common.ts",
5186
- "line": 112
6282
+ "line": 114
5187
6283
  },
5188
6284
  "name": "architecture",
5189
6285
  "type": {
@@ -5193,16 +6289,31 @@
5193
6289
  {
5194
6290
  "abstract": true,
5195
6291
  "docs": {
5196
- "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.",
5197
6292
  "stability": "experimental",
5198
- "summary": "Image digest for providers that need to know the digest like Lambda."
6293
+ "summary": "ECR repository containing the image."
5199
6294
  },
5200
6295
  "immutable": true,
5201
6296
  "locationInModule": {
5202
6297
  "filename": "src/providers/common.ts",
5203
- "line": 107
6298
+ "line": 95
5204
6299
  },
5205
- "name": "imageDigest",
6300
+ "name": "imageRepository",
6301
+ "type": {
6302
+ "fqn": "aws-cdk-lib.aws_ecr.IRepository"
6303
+ }
6304
+ },
6305
+ {
6306
+ "abstract": true,
6307
+ "docs": {
6308
+ "stability": "experimental",
6309
+ "summary": "Static image tag where the image will be pushed."
6310
+ },
6311
+ "immutable": true,
6312
+ "locationInModule": {
6313
+ "filename": "src/providers/common.ts",
6314
+ "line": 100
6315
+ },
6316
+ "name": "imageTag",
5206
6317
  "type": {
5207
6318
  "primitive": "string"
5208
6319
  }
@@ -5211,30 +6322,32 @@
5211
6322
  "abstract": true,
5212
6323
  "docs": {
5213
6324
  "stability": "experimental",
5214
- "summary": "ECR repository containing the image."
6325
+ "summary": "OS type of the image."
5215
6326
  },
5216
6327
  "immutable": true,
5217
6328
  "locationInModule": {
5218
6329
  "filename": "src/providers/common.ts",
5219
- "line": 95
6330
+ "line": 119
5220
6331
  },
5221
- "name": "imageRepository",
6332
+ "name": "os",
5222
6333
  "type": {
5223
- "fqn": "aws-cdk-lib.aws_ecr.IRepository"
6334
+ "fqn": "@cloudsnorkel/cdk-github-runners.Os"
5224
6335
  }
5225
6336
  },
5226
6337
  {
5227
6338
  "abstract": true,
5228
6339
  "docs": {
6340
+ "remarks": "If the digest is not specified, imageTag must always point to a new tag on update. If not, the build may try to use the old image.\n\nWARNING: 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.",
5229
6341
  "stability": "experimental",
5230
- "summary": "Static image tag where the image will be pushed."
6342
+ "summary": "Image digest for providers that need to know the digest like Lambda."
5231
6343
  },
5232
6344
  "immutable": true,
5233
6345
  "locationInModule": {
5234
6346
  "filename": "src/providers/common.ts",
5235
- "line": 100
6347
+ "line": 109
5236
6348
  },
5237
- "name": "imageTag",
6349
+ "name": "imageDigest",
6350
+ "optional": true,
5238
6351
  "type": {
5239
6352
  "primitive": "string"
5240
6353
  }
@@ -5243,16 +6356,17 @@
5243
6356
  "abstract": true,
5244
6357
  "docs": {
5245
6358
  "stability": "experimental",
5246
- "summary": "OS type of the image."
6359
+ "summary": "Log group where image builds are logged."
5247
6360
  },
5248
6361
  "immutable": true,
5249
6362
  "locationInModule": {
5250
6363
  "filename": "src/providers/common.ts",
5251
- "line": 117
6364
+ "line": 124
5252
6365
  },
5253
- "name": "os",
6366
+ "name": "logGroup",
6367
+ "optional": true,
5254
6368
  "type": {
5255
- "fqn": "@cloudsnorkel/cdk-github-runners.Os"
6369
+ "fqn": "aws-cdk-lib.aws_logs.LogGroup"
5256
6370
  }
5257
6371
  }
5258
6372
  ],
@@ -5269,7 +6383,7 @@
5269
6383
  "kind": "interface",
5270
6384
  "locationInModule": {
5271
6385
  "filename": "src/providers/common.ts",
5272
- "line": 143
6386
+ "line": 150
5273
6387
  },
5274
6388
  "name": "RunnerProviderProps",
5275
6389
  "properties": [
@@ -5284,7 +6398,7 @@
5284
6398
  "immutable": true,
5285
6399
  "locationInModule": {
5286
6400
  "filename": "src/providers/common.ts",
5287
- "line": 151
6401
+ "line": 158
5288
6402
  },
5289
6403
  "name": "logRetention",
5290
6404
  "optional": true,
@@ -5307,7 +6421,7 @@
5307
6421
  "kind": "interface",
5308
6422
  "locationInModule": {
5309
6423
  "filename": "src/providers/common.ts",
5310
- "line": 163
6424
+ "line": 170
5311
6425
  },
5312
6426
  "name": "RunnerRuntimeParameters",
5313
6427
  "properties": [
@@ -5321,7 +6435,7 @@
5321
6435
  "immutable": true,
5322
6436
  "locationInModule": {
5323
6437
  "filename": "src/providers/common.ts",
5324
- "line": 177
6438
+ "line": 184
5325
6439
  },
5326
6440
  "name": "githubDomainPath",
5327
6441
  "type": {
@@ -5337,7 +6451,7 @@
5337
6451
  "immutable": true,
5338
6452
  "locationInModule": {
5339
6453
  "filename": "src/providers/common.ts",
5340
- "line": 182
6454
+ "line": 189
5341
6455
  },
5342
6456
  "name": "ownerPath",
5343
6457
  "type": {
@@ -5353,7 +6467,7 @@
5353
6467
  "immutable": true,
5354
6468
  "locationInModule": {
5355
6469
  "filename": "src/providers/common.ts",
5356
- "line": 187
6470
+ "line": 194
5357
6471
  },
5358
6472
  "name": "repoPath",
5359
6473
  "type": {
@@ -5370,7 +6484,7 @@
5370
6484
  "immutable": true,
5371
6485
  "locationInModule": {
5372
6486
  "filename": "src/providers/common.ts",
5373
- "line": 172
6487
+ "line": 179
5374
6488
  },
5375
6489
  "name": "runnerNamePath",
5376
6490
  "type": {
@@ -5386,7 +6500,7 @@
5386
6500
  "immutable": true,
5387
6501
  "locationInModule": {
5388
6502
  "filename": "src/providers/common.ts",
5389
- "line": 167
6503
+ "line": 174
5390
6504
  },
5391
6505
  "name": "runnerTokenPath",
5392
6506
  "type": {
@@ -5623,7 +6737,7 @@
5623
6737
  },
5624
6738
  "locationInModule": {
5625
6739
  "filename": "src/providers/image-builders/static.ts",
5626
- "line": 44
6740
+ "line": 43
5627
6741
  },
5628
6742
  "name": "fromDockerHub",
5629
6743
  "parameters": [
@@ -5740,6 +6854,6 @@
5740
6854
  "symbolId": "src/providers/image-builders/static:StaticRunnerImage"
5741
6855
  }
5742
6856
  },
5743
- "version": "0.3.0",
5744
- "fingerprint": "BbcPeU/UMTYhijuLgnABdbWc76bh1KhE/IYBv9sCMz8="
5745
- }
6857
+ "version": "0.4.0",
6858
+ "fingerprint": "OnQ8gp6EqMIbSnMbq8KwwAQg4rS47KAGjpDJMeE1XEA="
6859
+ }