@cloudsnorkel/cdk-github-runners 0.13.2 → 0.13.4
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.
- package/.jsii +44 -44
- package/API.md +5 -5
- package/README.md +20 -5
- package/assets/delete-failed-runner.lambda/index.js +62 -703
- package/assets/idle-runner-repear.lambda/index.js +62 -703
- package/assets/image-builders/aws-image-builder/versioner.lambda/index.js +37 -653
- package/assets/setup.lambda/index.js +19 -38
- package/assets/status.lambda/index.js +62 -703
- package/assets/token-retriever.lambda/index.js +62 -703
- package/assets/webhook-handler.lambda/index.js +62 -703
- package/lib/access.js +1 -1
- package/lib/image-builders/api.js +1 -1
- package/lib/image-builders/aws-image-builder/builder.d.ts +1 -1
- package/lib/image-builders/aws-image-builder/builder.js +3 -3
- package/lib/image-builders/aws-image-builder/deprecated/ami.d.ts +1 -1
- package/lib/image-builders/aws-image-builder/deprecated/ami.js +2 -2
- package/lib/image-builders/aws-image-builder/deprecated/common.js +2 -2
- package/lib/image-builders/aws-image-builder/deprecated/container.d.ts +1 -1
- package/lib/image-builders/aws-image-builder/deprecated/container.js +2 -2
- package/lib/image-builders/aws-image-builder/deprecated/linux-components.js +1 -1
- package/lib/image-builders/aws-image-builder/deprecated/windows-components.js +1 -1
- package/lib/image-builders/codebuild-deprecated.js +1 -1
- package/lib/image-builders/common.d.ts +1 -1
- package/lib/image-builders/common.js +1 -1
- package/lib/image-builders/components.js +19 -3
- package/lib/image-builders/static.js +1 -1
- package/lib/providers/codebuild.js +2 -2
- package/lib/providers/common.js +3 -3
- package/lib/providers/ec2.d.ts +1 -1
- package/lib/providers/ec2.js +19 -16
- package/lib/providers/ecs.d.ts +1 -1
- package/lib/providers/ecs.js +3 -3
- package/lib/providers/fargate.js +2 -2
- package/lib/providers/lambda.js +2 -2
- package/lib/runner.js +1 -1
- package/lib/secrets.js +1 -1
- package/package.json +17 -17
package/.jsii
CHANGED
|
@@ -3699,7 +3699,7 @@
|
|
|
3699
3699
|
},
|
|
3700
3700
|
"name": "@cloudsnorkel/cdk-github-runners",
|
|
3701
3701
|
"readme": {
|
|
3702
|
-
"markdown": "# GitHub Self-Hosted Runners CDK Constructs\n\n[][7]\n[][6]\n[][8]\n[][11]\n[][12]\n[](https://github.com/CloudSnorkel/cdk-github-runners/actions/workflows/release.yml)\n[](https://github.com/CloudSnorkel/cdk-github-runners/blob/main/LICENSE)\n\nUse this CDK construct to create ephemeral [self-hosted GitHub runners][1] on-demand inside your AWS account.\n\n* Easy to configure GitHub integration with a web-based interface\n* Customizable runners with decent defaults\n* Multiple runner configurations controlled by labels\n* Everything fully hosted in your account\n* Automatically updated build environment with latest runner version\n\nSelf-hosted runners in AWS are useful when:\n\n* You need easy access to internal resources in your actions\n* You want to pre-install some software for your actions\n* You want to provide some basic AWS API access (but [aws-actions/configure-aws-credentials][2] has more security controls)\n* You are using GitHub Enterprise Server\n\nEphemeral (or on-demand) runners are the [recommended way by GitHub][14] for auto-scaling, and they make sure all jobs run with a clean image. Runners are started on-demand. You don't pay unless a job is running.\n\n## API\n\nThe best way to browse API documentation is on [Constructs Hub][13]. It is available in all supported programming languages.\n\n## Providers\n\nA runner provider creates compute resources on-demand and uses [actions/runner][5] to start a runner.\n\n| | EC2 | CodeBuild | Fargate | ECS | Lambda |\n|------------------|-------------------|----------------------------|----------------|----------------|---------------|\n| **Time limit** | Unlimited | 8 hours | Unlimited | Unlimited | 15 minutes |\n| **vCPUs** | Unlimited | 2, 4, 8, or 72 | 0.25 to 4 | Unlimited | 1 to 6 |\n| **RAM** | Unlimited | 3gb, 7gb, 15gb, or 145gb | 512mb to 30gb | Unlimited | 128mb to 10gb |\n| **Storage** | Unlimited | 50gb to 824gb | 20gb to 200gb | Unlimited | Up to 10gb |\n| **Architecture** | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 |\n| **sudo** | ✔ | ✔ | ✔ | ✔ | ❌ |\n| **Docker** | ✔ | ✔ (Linux only) | ❌ | ✔ | ❌ |\n| **Spot pricing** | ✔ | ❌ | ✔ | ✔ | ❌ |\n| **OS** | Linux, Windows | Linux, Windows | Linux, Windows | Linux, Windows | Linux |\n\nThe best provider to use mostly depends on your current infrastructure. When in doubt, CodeBuild is always a good choice. Execution history and logs are easy to view, and it has no restrictive limits unless you need to run for more than 8 hours.\n\n* EC2 is useful when you want runners to have complete access to the host\n* ECS is useful when you want to control the infrastructure, like leaving the runner host running for faster startups\n* Lambda is useful for short jobs that can work within time, size and readonly system constraints\n\nYou can also create your own provider by implementing `IRunnerProvider`.\n\n## Installation\n\n1. Install and use the appropriate package\n <details><summary>Python</summary>\n\n ### Install\n Available on [PyPI][6].\n ```bash\n pip install cloudsnorkel.cdk-github-runners\n ```\n ### Use\n ```python\n from cloudsnorkel.cdk_github_runners import GitHubRunners\n\n GitHubRunners(self, \"runners\")\n ```\n </details>\n <details><summary>TypeScript or JavaScript</summary>\n\n ### Install\n Available on [npm][7].\n ```bash\n npm i @cloudsnorkel/cdk-github-runners\n ```\n ### Use\n ```typescript\n import { GitHubRunners } from '@cloudsnorkel/cdk-github-runners';\n\n new GitHubRunners(this, \"runners\");\n ```\n </details>\n <details><summary>Java</summary>\n\n ### Install\n Available on [Maven][8].\n ```xml\n <dependency>\n <groupId>com.cloudsnorkel</groupId>\n <artifactId>cdk.github.runners</artifactId>\n </dependency>\n ```\n ### Use\n ```java\n import com.cloudsnorkel.cdk.github.runners.GitHubRunners;\n\n GitHubRunners.Builder.create(this, \"runners\").build();\n ```\n </details>\n <details><summary>Go</summary>\n\n ### Install\n Available on [GitHub][11].\n ```bash\n go get github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners\n ```\n ### Use\n ```go\n import \"github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners\"\n\n NewGitHubRunners(this, jsii.String(\"runners\"))\n ```\n </details>\n <details><summary>.NET</summary>\n\n ### Install\n Available on [Nuget][12].\n ```bash\n dotnet add package CloudSnorkel.Cdk.Github.Runners\n ```\n ### Use\n ```csharp\n using CloudSnorkel;\n\n new GitHubRunners(this, \"runners\");\n ```\n </details>\n2. Use `GitHubRunners` construct in your code (starting with default arguments is fine)\n3. Deploy your stack\n4. Look for the status command output similar to `aws --region us-east-1 lambda invoke --function-name status-XYZ123 status.json`\n ```\n ✅ github-runners-test\n\n ✨ Deployment time: 260.01s\n\n Outputs:\n github-runners-test.runnersstatuscommand4A30F0F5 = aws --region us-east-1 lambda invoke --function-name github-runners-test-runnersstatus1A5771C0-mvttg8oPQnQS status.json\n ```\n5. Execute the status command (you may need to specify `--profile` too) and open the resulting `status.json` file\n6. Open the URL in `github.setup.url` from `status.json` or [manually setup GitHub](SETUP_GITHUB.md) integration as an app or with personal access token\n7. Run status command again to confirm `github.auth.status` and `github.webhook.status` are OK\n8. Trigger a GitHub action that has a `self-hosted` label with `runs-on: [self-hosted, linux, codebuild]` or similar\n9. If the action is not successful, see [troubleshooting](#Troubleshooting)\n\n[](https://youtu.be/wlyv_3V8lIw)\n\n## Customizing\n\nThe default providers configured by `GitHubRunners` are useful for testing but probably not too much for actual production work. They run in the default VPC or no VPC and have no added IAM permissions. You would usually want to configure the providers yourself.\n\nFor example:\n\n```typescript\nlet vpc: ec2.Vpc;\nlet runnerSg: ec2.SecurityGroup;\nlet dbSg: ec2.SecurityGroup;\nlet bucket: s3.Bucket;\n\n// create a custom CodeBuild provider\nconst myProvider = new CodeBuildRunnerProvider(this, 'codebuild runner', {\n labels: ['my-codebuild'],\n vpc: vpc,\n securityGroups: [runnerSg],\n});\n// grant some permissions to the provider\nbucket.grantReadWrite(myProvider);\ndbSg.connections.allowFrom(runnerSg, ec2.Port.tcp(3306), 'allow runners to connect to MySQL database');\n\n// create the runner infrastructure\nnew GitHubRunners(this, 'runners', {\n providers: [myProvider],\n});\n```\n\nAnother way to customize runners is by modifying the image used to spin them up. The image contains the [runner][5], any required dependencies, and integration code with the provider. You may choose to customize this image by adding more packages, for example.\n\n```typescript\nconst myBuilder = FargateRunnerProvider.imageBuilder(this, 'image builder');\nmyBuilder.addComponent(\n RunnerImageComponent.custom({ commands: ['apt install -y nginx xz-utils'] }),\n);\n\nconst myProvider = new FargateRunnerProvider(this, 'fargate runner', {\n labels: ['customized-fargate'],\n imageBuilder: myBuilder,\n});\n\n// create the runner infrastructure\nnew GitHubRunners(this, 'runners', {\n providers: [myProvider],\n});\n```\n\nYour workflow will then look like:\n\n```yaml\nname: self-hosted example\non: push\njobs:\n self-hosted:\n runs-on: [self-hosted, customized-fargate]\n steps:\n - run: echo hello world\n```\n\nWindows images can also be customized the same way.\n\n```typescript\nconst myWindowsBuilder = FargateRunnerProvider.imageBuilder(this, 'Windows image builder', {\n architecture: Architecture.X86_64,\n os: Os.WINDOWS,\n});\nmyWindowsBuilder.addComponent(\n RunnerImageComponent.custom({\n name: 'Ninja',\n commands: [\n 'Invoke-WebRequest -UseBasicParsing -Uri \"https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip\" -OutFile ninja.zip',\n 'Expand-Archive ninja.zip -DestinationPath C:\\\\actions',\n 'del ninja.zip',\n ],\n }),\n);\n\nconst myProvider = new FargateRunnerProvider(this, 'fargate runner', {\n labels: ['customized-windows-fargate'],\n imageBuilder: myWindowsBuilder,\n});\n\nnew GitHubRunners(this, 'runners', {\n providers: [myProvider],\n});\n```\n\nThe runner OS and architecture is determined by the image it is set to use. For example, to create a Fargate runner provider for ARM64 set the `architecture` property for the image builder to `Architecture.ARM64` in the image builder properties.\n\n```typescript\nnew GitHubRunners(this, 'runners', {\n providers: [\n new FargateRunnerProvider(this, 'fargate runner', {\n labels: ['arm64', 'fargate'],\n imageBuilder: FargateRunnerProvider.imageBuilder(this, 'image builder', {\n architecture: Architecture.ARM64,\n os: Os.LINUX_UBUNTU,\n }),\n }),\n ],\n});\n```\n\n## Architecture\n\n\n\n## Troubleshooting\n\nRunners are started in response to a webhook coming in from GitHub. If there are any issues starting the runner like missing capacity or transient API issues, the provider will keep retrying for 24 hours. Configuration issue related errors like pointing to a missing AMI will not be retried. GitHub itself will cancel the job if it can't find a runner for 24 hours. If your jobs don't start, follow the steps below to examine all parts of this workflow.\n\n1. Always start with the status function, make sure no errors are reported, and confirm all status codes are OK\n2. Make sure `runs-on` in the workflow matches the expected labels set in the runner provider\n3. Diagnose relevant executions of the orchestrator step function by visiting the URL in `troubleshooting.stepFunctionUrl` from `status.json`\n 1. If the execution failed, check your runner provider configuration for errors\n 2. If the execution is still running for a long time, check the execution events to see why runner starting is being retried\n 3. If there are no relevant executions, move to the next step\n4. Confirm the webhook Lambda was called by visiting the URL in `troubleshooting.webhookHandlerUrl` from `status.json`\n 1. If it's not called or logs errors, confirm the webhook settings on the GitHub side\n 2. If you see too many errors, make sure you're only sending `workflow_job` events\n5. When using GitHub app, make sure there are active installations in `github.auth.app.installations`\n\nAll logs are saved in CloudWatch.\n* Log group names can be found in `status.json` for each provider, image builder, and other parts of the system\n* Some useful Logs Insights queries can be enabled with `GitHubRunners.createLogsInsightsQueries()`\n\nTo get `status.json`, check out the CloudFormation stack output for a command that generates it. The command looks like:\n\n```\naws --region us-east-1 lambda invoke --function-name status-XYZ123 status.json\n```\n\n## Monitoring\n\nThere are two important ways to monitor your runners:\n\n1. Make sure runners don't fail to start. When that happens, jobs may sit and wait. Use `GitHubRunners.metricFailed()` to get a metric for the number of failed runner starts. You should use this metric to trigger an alarm.\n2. Make sure runner images don't fail to build. Failed runner image builds mean you will get stuck with out-of-date software on your runners. It may lead to security vulnerabilities, or it may lead to slower runner start-ups as the runner software itself needs to be updated. Use `GitHubRunners.failedImageBuildsTopic()` to get SNS topic that gets notified of failed runner image builds. You should subscribe to this topic.\n\nOther useful metrics to track:\n\n1. Use `GitHubRunners.metricJobCompleted()` to get a metric for the number of completed jobs broken down by labels and job success.\n2. Use `GitHubRunners.metricTime()` to get a metric for the total time a runner is running. This includes the overhead of starting the runner.\n\n## Other Options\n\n1. [philips-labs/terraform-aws-github-runner][3] if you're using Terraform\n2. [actions/actions-runner-controller][4] if you're using Kubernetes\n\n\n[1]: https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners\n[2]: https://github.com/marketplace/actions/configure-aws-credentials-for-github-actions\n[3]: https://github.com/philips-labs/terraform-aws-github-runner\n[4]: https://github.com/actions/actions-runner-controller\n[5]: https://github.com/actions/runner\n[6]: https://pypi.org/project/cloudsnorkel.cdk-github-runners\n[7]: https://www.npmjs.com/package/@cloudsnorkel/cdk-github-runners\n[8]: https://central.sonatype.com/artifact/com.cloudsnorkel/cdk.github.runners/\n[9]: https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps\n[10]: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token\n[11]: https://pkg.go.dev/github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners\n[12]: https://www.nuget.org/packages/CloudSnorkel.Cdk.Github.Runners/\n[13]: https://constructs.dev/packages/@cloudsnorkel/cdk-github-runners/\n[14]: https://docs.github.com/en/actions/hosting-your-own-runners/autoscaling-with-self-hosted-runners#using-ephemeral-runners-for-autoscaling\n"
|
|
3702
|
+
"markdown": "# GitHub Self-Hosted Runners CDK Constructs\n\n[][7]\n[][6]\n[][8]\n[][11]\n[][12]\n[](https://github.com/CloudSnorkel/cdk-github-runners/actions/workflows/release.yml)\n[](https://github.com/CloudSnorkel/cdk-github-runners/blob/main/LICENSE)\n\nUse this CDK construct to create ephemeral [self-hosted GitHub runners][1] on-demand inside your AWS account.\n\n* 🧩 Easy to configure GitHub integration with a web-based interface\n* 🧠 Customizable runners with decent defaults\n* 🏃🏻 Multiple runner configurations controlled by labels\n* 🔐 Everything fully hosted in your account\n* 🔃 Automatically updated build environment with latest runner version\n\nSelf-hosted runners in AWS are useful when:\n\n* You need easy access to internal resources in your actions\n* You want to pre-install some software for your actions\n* You want to provide some basic AWS API access (but [aws-actions/configure-aws-credentials][2] has more security controls)\n* You are using GitHub Enterprise Server\n\nEphemeral (or on-demand) runners are the [recommended way by GitHub][14] for auto-scaling, and they make sure all jobs run with a clean image. Runners are started on-demand. You don't pay unless a job is running.\n\n## API\n\nThe best way to browse API documentation is on [Constructs Hub][13]. It is available in all supported programming languages.\n\n## Providers\n\nA runner provider creates compute resources on-demand and uses [actions/runner][5] to start a runner.\n\n| | EC2 | CodeBuild | Fargate | ECS | Lambda |\n|------------------|-------------------|----------------------------|----------------|----------------|---------------|\n| **Time limit** | Unlimited | 8 hours | Unlimited | Unlimited | 15 minutes |\n| **vCPUs** | Unlimited | 2, 4, 8, or 72 | 0.25 to 4 | Unlimited | 1 to 6 |\n| **RAM** | Unlimited | 3gb, 7gb, 15gb, or 145gb | 512mb to 30gb | Unlimited | 128mb to 10gb |\n| **Storage** | Unlimited | 50gb to 824gb | 20gb to 200gb | Unlimited | Up to 10gb |\n| **Architecture** | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 |\n| **sudo** | ✔ | ✔ | ✔ | ✔ | ❌ |\n| **Docker** | ✔ | ✔ (Linux only) | ❌ | ✔ | ❌ |\n| **Spot pricing** | ✔ | ❌ | ✔ | ✔ | ❌ |\n| **OS** | Linux, Windows | Linux, Windows | Linux, Windows | Linux, Windows | Linux |\n\nThe best provider to use mostly depends on your current infrastructure. When in doubt, CodeBuild is always a good choice. Execution history and logs are easy to view, and it has no restrictive limits unless you need to run for more than 8 hours.\n\n* EC2 is useful when you want runners to have complete access to the host\n* ECS is useful when you want to control the infrastructure, like leaving the runner host running for faster startups\n* Lambda is useful for short jobs that can work within time, size and readonly system constraints\n\nYou can also create your own provider by implementing `IRunnerProvider`.\n\n## Installation\n\n1. Install and use the appropriate package\n <details><summary>Python</summary>\n\n ### Install\n Available on [PyPI][6].\n ```bash\n pip install cloudsnorkel.cdk-github-runners\n ```\n ### Use\n ```python\n from cloudsnorkel.cdk_github_runners import GitHubRunners\n\n GitHubRunners(self, \"runners\")\n ```\n </details>\n <details><summary>TypeScript or JavaScript</summary>\n\n ### Install\n Available on [npm][7].\n ```bash\n npm i @cloudsnorkel/cdk-github-runners\n ```\n ### Use\n ```typescript\n import { GitHubRunners } from '@cloudsnorkel/cdk-github-runners';\n\n new GitHubRunners(this, \"runners\");\n ```\n </details>\n <details><summary>Java</summary>\n\n ### Install\n Available on [Maven][8].\n ```xml\n <dependency>\n <groupId>com.cloudsnorkel</groupId>\n <artifactId>cdk.github.runners</artifactId>\n </dependency>\n ```\n ### Use\n ```java\n import com.cloudsnorkel.cdk.github.runners.GitHubRunners;\n\n GitHubRunners.Builder.create(this, \"runners\").build();\n ```\n </details>\n <details><summary>Go</summary>\n\n ### Install\n Available on [GitHub][11].\n ```bash\n go get github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners\n ```\n ### Use\n ```go\n import \"github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners\"\n\n NewGitHubRunners(this, jsii.String(\"runners\"))\n ```\n </details>\n <details><summary>.NET</summary>\n\n ### Install\n Available on [Nuget][12].\n ```bash\n dotnet add package CloudSnorkel.Cdk.Github.Runners\n ```\n ### Use\n ```csharp\n using CloudSnorkel;\n\n new GitHubRunners(this, \"runners\");\n ```\n </details>\n2. Use `GitHubRunners` construct in your code (starting with default arguments is fine)\n3. Deploy your stack\n4. Look for the status command output similar to `aws --region us-east-1 lambda invoke --function-name status-XYZ123 status.json`\n ```\n ✅ github-runners-test\n\n ✨ Deployment time: 260.01s\n\n Outputs:\n github-runners-test.runnersstatuscommand4A30F0F5 = aws --region us-east-1 lambda invoke --function-name github-runners-test-runnersstatus1A5771C0-mvttg8oPQnQS status.json\n ```\n5. Execute the status command (you may need to specify `--profile` too) and open the resulting `status.json` file\n6. Open the URL in `github.setup.url` from `status.json` or [manually setup GitHub](SETUP_GITHUB.md) integration as an app or with personal access token\n7. Run status command again to confirm `github.auth.status` and `github.webhook.status` are OK\n8. Trigger a GitHub action that has a `self-hosted` label with `runs-on: [self-hosted, linux, codebuild]` or similar\n9. If the action is not successful, see [troubleshooting](#Troubleshooting)\n\n[](https://youtu.be/wlyv_3V8lIw)\n\n## Customizing\n\nThe default providers configured by `GitHubRunners` are useful for testing but probably not too much for actual production work. They run in the default VPC or no VPC and have no added IAM permissions. You would usually want to configure the providers yourself.\n\nFor example:\n\n```typescript\nlet vpc: ec2.Vpc;\nlet runnerSg: ec2.SecurityGroup;\nlet dbSg: ec2.SecurityGroup;\nlet bucket: s3.Bucket;\n\n// create a custom CodeBuild provider\nconst myProvider = new CodeBuildRunnerProvider(this, 'codebuild runner', {\n labels: ['my-codebuild'],\n vpc: vpc,\n securityGroups: [runnerSg],\n});\n// grant some permissions to the provider\nbucket.grantReadWrite(myProvider);\ndbSg.connections.allowFrom(runnerSg, ec2.Port.tcp(3306), 'allow runners to connect to MySQL database');\n\n// create the runner infrastructure\nnew GitHubRunners(this, 'runners', {\n providers: [myProvider],\n});\n```\n\nAnother way to customize runners is by modifying the image used to spin them up. The image contains the [runner][5], any required dependencies, and integration code with the provider. You may choose to customize this image by adding more packages, for example.\n\n```typescript\nconst myBuilder = FargateRunnerProvider.imageBuilder(this, 'image builder');\nmyBuilder.addComponent(\n RunnerImageComponent.custom({ commands: ['apt install -y nginx xz-utils'] }),\n);\n\nconst myProvider = new FargateRunnerProvider(this, 'fargate runner', {\n labels: ['customized-fargate'],\n imageBuilder: myBuilder,\n});\n\n// create the runner infrastructure\nnew GitHubRunners(this, 'runners', {\n providers: [myProvider],\n});\n```\n\nYour workflow will then look like:\n\n```yaml\nname: self-hosted example\non: push\njobs:\n self-hosted:\n runs-on: [self-hosted, customized-fargate]\n steps:\n - run: echo hello world\n```\n\nWindows images can also be customized the same way.\n\n```typescript\nconst myWindowsBuilder = FargateRunnerProvider.imageBuilder(this, 'Windows image builder', {\n architecture: Architecture.X86_64,\n os: Os.WINDOWS,\n});\nmyWindowsBuilder.addComponent(\n RunnerImageComponent.custom({\n name: 'Ninja',\n commands: [\n 'Invoke-WebRequest -UseBasicParsing -Uri \"https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip\" -OutFile ninja.zip',\n 'Expand-Archive ninja.zip -DestinationPath C:\\\\actions',\n 'del ninja.zip',\n ],\n }),\n);\n\nconst myProvider = new FargateRunnerProvider(this, 'fargate runner', {\n labels: ['customized-windows-fargate'],\n imageBuilder: myWindowsBuilder,\n});\n\nnew GitHubRunners(this, 'runners', {\n providers: [myProvider],\n});\n```\n\nThe runner OS and architecture is determined by the image it is set to use. For example, to create a Fargate runner provider for ARM64 set the `architecture` property for the image builder to `Architecture.ARM64` in the image builder properties.\n\n```typescript\nnew GitHubRunners(this, 'runners', {\n providers: [\n new FargateRunnerProvider(this, 'fargate runner', {\n labels: ['arm64', 'fargate'],\n imageBuilder: FargateRunnerProvider.imageBuilder(this, 'image builder', {\n architecture: Architecture.ARM64,\n os: Os.LINUX_UBUNTU,\n }),\n }),\n ],\n});\n```\n\n## Architecture\n\n\n\n## Troubleshooting\n\nRunners are started in response to a webhook coming in from GitHub. If there are any issues starting the runner like missing capacity or transient API issues, the provider will keep retrying for 24 hours. Configuration issue related errors like pointing to a missing AMI will not be retried. GitHub itself will cancel the job if it can't find a runner for 24 hours. If your jobs don't start, follow the steps below to examine all parts of this workflow.\n\n1. Always start with the status function, make sure no errors are reported, and confirm all status codes are OK\n2. Make sure `runs-on` in the workflow matches the expected labels set in the runner provider\n3. Diagnose relevant executions of the orchestrator step function by visiting the URL in `troubleshooting.stepFunctionUrl` from `status.json`\n 1. If the execution failed, check your runner provider configuration for errors\n 2. If the execution is still running for a long time, check the execution events to see why runner starting is being retried\n 3. If there are no relevant executions, move to the next step\n4. Confirm the webhook Lambda was called by visiting the URL in `troubleshooting.webhookHandlerUrl` from `status.json`\n 1. If it's not called or logs errors, confirm the webhook settings on the GitHub side\n 2. If you see too many errors, make sure you're only sending `workflow_job` events\n5. When using GitHub app, make sure there are active installations in `github.auth.app.installations`\n\nAll logs are saved in CloudWatch.\n* Log group names can be found in `status.json` for each provider, image builder, and other parts of the system\n* Some useful Logs Insights queries can be enabled with `GitHubRunners.createLogsInsightsQueries()`\n\nTo get `status.json`, check out the CloudFormation stack output for a command that generates it. The command looks like:\n\n```\naws --region us-east-1 lambda invoke --function-name status-XYZ123 status.json\n```\n\n## Monitoring\n\nThere are two important ways to monitor your runners:\n\n1. Make sure runners don't fail to start. When that happens, jobs may sit and wait. Use `GitHubRunners.metricFailed()` to get a metric for the number of failed runner starts. You should use this metric to trigger an alarm.\n2. Make sure runner images don't fail to build. Failed runner image builds mean you will get stuck with out-of-date software on your runners. It may lead to security vulnerabilities, or it may lead to slower runner start-ups as the runner software itself needs to be updated. Use `GitHubRunners.failedImageBuildsTopic()` to get SNS topic that gets notified of failed runner image builds. You should subscribe to this topic.\n\nOther useful metrics to track:\n\n1. Use `GitHubRunners.metricJobCompleted()` to get a metric for the number of completed jobs broken down by labels and job success.\n2. Use `GitHubRunners.metricTime()` to get a metric for the total time a runner is running. This includes the overhead of starting the runner.\n\n## Contributing\n\nIf you use and love this project, please consider contributing.\n\n1. 🪳 If you see something, say something. [Issues][16] help improve the quality of the project.\n * Include relevant logs and package versions for bugs.\n * When possible, describe the use-case behind feature requests.\n1. 🛠️ [Pull requests][17] are welcome.\n * Run `npm run build` before submitting to make sure all tests pass.\n * Allow edits from maintainers so small adjustments can be made easily.\n1. 💵 Consider [sponsoring][15] the project to show your support and optionally get your name listed below.\n\n## Other Options\n\n1. [philips-labs/terraform-aws-github-runner][3] if you're using Terraform\n2. [actions/actions-runner-controller][4] if you're using Kubernetes\n\n\n[1]: https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners\n[2]: https://github.com/marketplace/actions/configure-aws-credentials-for-github-actions\n[3]: https://github.com/philips-labs/terraform-aws-github-runner\n[4]: https://github.com/actions/actions-runner-controller\n[5]: https://github.com/actions/runner\n[6]: https://pypi.org/project/cloudsnorkel.cdk-github-runners\n[7]: https://www.npmjs.com/package/@cloudsnorkel/cdk-github-runners\n[8]: https://central.sonatype.com/artifact/com.cloudsnorkel/cdk.github.runners/\n[9]: https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps\n[10]: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token\n[11]: https://pkg.go.dev/github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners\n[12]: https://www.nuget.org/packages/CloudSnorkel.Cdk.Github.Runners/\n[13]: https://constructs.dev/packages/@cloudsnorkel/cdk-github-runners/\n[14]: https://docs.github.com/en/actions/hosting-your-own-runners/autoscaling-with-self-hosted-runners#using-ephemeral-runners-for-autoscaling\n[15]: https://github.com/sponsors/CloudSnorkel\n[16]: https://github.com/CloudSnorkel/cdk-github-runners/issues\n[17]: https://github.com/CloudSnorkel/cdk-github-runners/pulls\n"
|
|
3703
3703
|
},
|
|
3704
3704
|
"repository": {
|
|
3705
3705
|
"type": "git",
|
|
@@ -4198,7 +4198,7 @@
|
|
|
4198
4198
|
{
|
|
4199
4199
|
"abstract": true,
|
|
4200
4200
|
"docs": {
|
|
4201
|
-
"default": "
|
|
4201
|
+
"default": "m6i.large",
|
|
4202
4202
|
"stability": "experimental",
|
|
4203
4203
|
"summary": "The instance type used to build the image."
|
|
4204
4204
|
},
|
|
@@ -4680,7 +4680,7 @@
|
|
|
4680
4680
|
{
|
|
4681
4681
|
"abstract": true,
|
|
4682
4682
|
"docs": {
|
|
4683
|
-
"default": "
|
|
4683
|
+
"default": "m6i.large",
|
|
4684
4684
|
"stability": "experimental",
|
|
4685
4685
|
"summary": "The instance type used to build the image."
|
|
4686
4686
|
},
|
|
@@ -6402,7 +6402,7 @@
|
|
|
6402
6402
|
{
|
|
6403
6403
|
"abstract": true,
|
|
6404
6404
|
"docs": {
|
|
6405
|
-
"default": "
|
|
6405
|
+
"default": "m6i.large",
|
|
6406
6406
|
"stability": "experimental",
|
|
6407
6407
|
"summary": "The instance type used to build the image."
|
|
6408
6408
|
},
|
|
@@ -6624,7 +6624,7 @@
|
|
|
6624
6624
|
},
|
|
6625
6625
|
"locationInModule": {
|
|
6626
6626
|
"filename": "src/providers/ec2.ts",
|
|
6627
|
-
"line":
|
|
6627
|
+
"line": 349
|
|
6628
6628
|
},
|
|
6629
6629
|
"parameters": [
|
|
6630
6630
|
{
|
|
@@ -6651,7 +6651,7 @@
|
|
|
6651
6651
|
"kind": "class",
|
|
6652
6652
|
"locationInModule": {
|
|
6653
6653
|
"filename": "src/providers/ec2.ts",
|
|
6654
|
-
"line":
|
|
6654
|
+
"line": 562
|
|
6655
6655
|
},
|
|
6656
6656
|
"name": "Ec2Runner",
|
|
6657
6657
|
"symbolId": "src/providers/ec2:Ec2Runner"
|
|
@@ -6671,7 +6671,7 @@
|
|
|
6671
6671
|
},
|
|
6672
6672
|
"locationInModule": {
|
|
6673
6673
|
"filename": "src/providers/ec2.ts",
|
|
6674
|
-
"line":
|
|
6674
|
+
"line": 349
|
|
6675
6675
|
},
|
|
6676
6676
|
"parameters": [
|
|
6677
6677
|
{
|
|
@@ -6701,7 +6701,7 @@
|
|
|
6701
6701
|
"kind": "class",
|
|
6702
6702
|
"locationInModule": {
|
|
6703
6703
|
"filename": "src/providers/ec2.ts",
|
|
6704
|
-
"line":
|
|
6704
|
+
"line": 279
|
|
6705
6705
|
},
|
|
6706
6706
|
"methods": [
|
|
6707
6707
|
{
|
|
@@ -6712,7 +6712,7 @@
|
|
|
6712
6712
|
},
|
|
6713
6713
|
"locationInModule": {
|
|
6714
6714
|
"filename": "src/providers/ec2.ts",
|
|
6715
|
-
"line":
|
|
6715
|
+
"line": 298
|
|
6716
6716
|
},
|
|
6717
6717
|
"name": "imageBuilder",
|
|
6718
6718
|
"parameters": [
|
|
@@ -6751,7 +6751,7 @@
|
|
|
6751
6751
|
},
|
|
6752
6752
|
"locationInModule": {
|
|
6753
6753
|
"filename": "src/providers/ec2.ts",
|
|
6754
|
-
"line":
|
|
6754
|
+
"line": 404
|
|
6755
6755
|
},
|
|
6756
6756
|
"name": "getStepFunctionTask",
|
|
6757
6757
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -6780,7 +6780,7 @@
|
|
|
6780
6780
|
},
|
|
6781
6781
|
"locationInModule": {
|
|
6782
6782
|
"filename": "src/providers/ec2.ts",
|
|
6783
|
-
"line":
|
|
6783
|
+
"line": 502
|
|
6784
6784
|
},
|
|
6785
6785
|
"name": "grantStateMachine",
|
|
6786
6786
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -6849,7 +6849,7 @@
|
|
|
6849
6849
|
},
|
|
6850
6850
|
"locationInModule": {
|
|
6851
6851
|
"filename": "src/providers/ec2.ts",
|
|
6852
|
-
"line":
|
|
6852
|
+
"line": 532
|
|
6853
6853
|
},
|
|
6854
6854
|
"name": "status",
|
|
6855
6855
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -6878,7 +6878,7 @@
|
|
|
6878
6878
|
"immutable": true,
|
|
6879
6879
|
"locationInModule": {
|
|
6880
6880
|
"filename": "src/providers/ec2.ts",
|
|
6881
|
-
"line":
|
|
6881
|
+
"line": 554
|
|
6882
6882
|
},
|
|
6883
6883
|
"name": "connections",
|
|
6884
6884
|
"overrides": "aws-cdk-lib.aws_ec2.IConnectable",
|
|
@@ -6894,7 +6894,7 @@
|
|
|
6894
6894
|
"immutable": true,
|
|
6895
6895
|
"locationInModule": {
|
|
6896
6896
|
"filename": "src/providers/ec2.ts",
|
|
6897
|
-
"line":
|
|
6897
|
+
"line": 324
|
|
6898
6898
|
},
|
|
6899
6899
|
"name": "grantPrincipal",
|
|
6900
6900
|
"overrides": "aws-cdk-lib.aws_iam.IGrantable",
|
|
@@ -6910,7 +6910,7 @@
|
|
|
6910
6910
|
"immutable": true,
|
|
6911
6911
|
"locationInModule": {
|
|
6912
6912
|
"filename": "src/providers/ec2.ts",
|
|
6913
|
-
"line":
|
|
6913
|
+
"line": 319
|
|
6914
6914
|
},
|
|
6915
6915
|
"name": "labels",
|
|
6916
6916
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -6932,7 +6932,7 @@
|
|
|
6932
6932
|
"immutable": true,
|
|
6933
6933
|
"locationInModule": {
|
|
6934
6934
|
"filename": "src/providers/ec2.ts",
|
|
6935
|
-
"line":
|
|
6935
|
+
"line": 331
|
|
6936
6936
|
},
|
|
6937
6937
|
"name": "logGroup",
|
|
6938
6938
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -6948,7 +6948,7 @@
|
|
|
6948
6948
|
"immutable": true,
|
|
6949
6949
|
"locationInModule": {
|
|
6950
6950
|
"filename": "src/providers/ec2.ts",
|
|
6951
|
-
"line":
|
|
6951
|
+
"line": 333
|
|
6952
6952
|
},
|
|
6953
6953
|
"name": "retryableErrors",
|
|
6954
6954
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -6978,7 +6978,7 @@
|
|
|
6978
6978
|
"kind": "interface",
|
|
6979
6979
|
"locationInModule": {
|
|
6980
6980
|
"filename": "src/providers/ec2.ts",
|
|
6981
|
-
"line":
|
|
6981
|
+
"line": 180
|
|
6982
6982
|
},
|
|
6983
6983
|
"name": "Ec2RunnerProviderProps",
|
|
6984
6984
|
"properties": [
|
|
@@ -6991,7 +6991,7 @@
|
|
|
6991
6991
|
"immutable": true,
|
|
6992
6992
|
"locationInModule": {
|
|
6993
6993
|
"filename": "src/providers/ec2.ts",
|
|
6994
|
-
"line":
|
|
6994
|
+
"line": 193
|
|
6995
6995
|
},
|
|
6996
6996
|
"name": "amiBuilder",
|
|
6997
6997
|
"optional": true,
|
|
@@ -7010,7 +7010,7 @@
|
|
|
7010
7010
|
"immutable": true,
|
|
7011
7011
|
"locationInModule": {
|
|
7012
7012
|
"filename": "src/providers/ec2.ts",
|
|
7013
|
-
"line":
|
|
7013
|
+
"line": 188
|
|
7014
7014
|
},
|
|
7015
7015
|
"name": "imageBuilder",
|
|
7016
7016
|
"optional": true,
|
|
@@ -7021,14 +7021,14 @@
|
|
|
7021
7021
|
{
|
|
7022
7022
|
"abstract": true,
|
|
7023
7023
|
"docs": {
|
|
7024
|
-
"default": "
|
|
7024
|
+
"default": "m6i.large",
|
|
7025
7025
|
"stability": "experimental",
|
|
7026
7026
|
"summary": "Instance type for launched runner instances."
|
|
7027
7027
|
},
|
|
7028
7028
|
"immutable": true,
|
|
7029
7029
|
"locationInModule": {
|
|
7030
7030
|
"filename": "src/providers/ec2.ts",
|
|
7031
|
-
"line":
|
|
7031
|
+
"line": 211
|
|
7032
7032
|
},
|
|
7033
7033
|
"name": "instanceType",
|
|
7034
7034
|
"optional": true,
|
|
@@ -7047,7 +7047,7 @@
|
|
|
7047
7047
|
"immutable": true,
|
|
7048
7048
|
"locationInModule": {
|
|
7049
7049
|
"filename": "src/providers/ec2.ts",
|
|
7050
|
-
"line":
|
|
7050
|
+
"line": 204
|
|
7051
7051
|
},
|
|
7052
7052
|
"name": "labels",
|
|
7053
7053
|
"optional": true,
|
|
@@ -7071,7 +7071,7 @@
|
|
|
7071
7071
|
"immutable": true,
|
|
7072
7072
|
"locationInModule": {
|
|
7073
7073
|
"filename": "src/providers/ec2.ts",
|
|
7074
|
-
"line":
|
|
7074
|
+
"line": 227
|
|
7075
7075
|
},
|
|
7076
7076
|
"name": "securityGroup",
|
|
7077
7077
|
"optional": true,
|
|
@@ -7089,7 +7089,7 @@
|
|
|
7089
7089
|
"immutable": true,
|
|
7090
7090
|
"locationInModule": {
|
|
7091
7091
|
"filename": "src/providers/ec2.ts",
|
|
7092
|
-
"line":
|
|
7092
|
+
"line": 234
|
|
7093
7093
|
},
|
|
7094
7094
|
"name": "securityGroups",
|
|
7095
7095
|
"optional": true,
|
|
@@ -7113,7 +7113,7 @@
|
|
|
7113
7113
|
"immutable": true,
|
|
7114
7114
|
"locationInModule": {
|
|
7115
7115
|
"filename": "src/providers/ec2.ts",
|
|
7116
|
-
"line":
|
|
7116
|
+
"line": 264
|
|
7117
7117
|
},
|
|
7118
7118
|
"name": "spot",
|
|
7119
7119
|
"optional": true,
|
|
@@ -7131,7 +7131,7 @@
|
|
|
7131
7131
|
"immutable": true,
|
|
7132
7132
|
"locationInModule": {
|
|
7133
7133
|
"filename": "src/providers/ec2.ts",
|
|
7134
|
-
"line":
|
|
7134
|
+
"line": 271
|
|
7135
7135
|
},
|
|
7136
7136
|
"name": "spotMaxPrice",
|
|
7137
7137
|
"optional": true,
|
|
@@ -7150,7 +7150,7 @@
|
|
|
7150
7150
|
"immutable": true,
|
|
7151
7151
|
"locationInModule": {
|
|
7152
7152
|
"filename": "src/providers/ec2.ts",
|
|
7153
|
-
"line":
|
|
7153
|
+
"line": 218
|
|
7154
7154
|
},
|
|
7155
7155
|
"name": "storageSize",
|
|
7156
7156
|
"optional": true,
|
|
@@ -7169,7 +7169,7 @@
|
|
|
7169
7169
|
"immutable": true,
|
|
7170
7170
|
"locationInModule": {
|
|
7171
7171
|
"filename": "src/providers/ec2.ts",
|
|
7172
|
-
"line":
|
|
7172
|
+
"line": 243
|
|
7173
7173
|
},
|
|
7174
7174
|
"name": "subnet",
|
|
7175
7175
|
"optional": true,
|
|
@@ -7188,7 +7188,7 @@
|
|
|
7188
7188
|
"immutable": true,
|
|
7189
7189
|
"locationInModule": {
|
|
7190
7190
|
"filename": "src/providers/ec2.ts",
|
|
7191
|
-
"line":
|
|
7191
|
+
"line": 257
|
|
7192
7192
|
},
|
|
7193
7193
|
"name": "subnetSelection",
|
|
7194
7194
|
"optional": true,
|
|
@@ -7206,7 +7206,7 @@
|
|
|
7206
7206
|
"immutable": true,
|
|
7207
7207
|
"locationInModule": {
|
|
7208
7208
|
"filename": "src/providers/ec2.ts",
|
|
7209
|
-
"line":
|
|
7209
|
+
"line": 250
|
|
7210
7210
|
},
|
|
7211
7211
|
"name": "vpc",
|
|
7212
7212
|
"optional": true,
|
|
@@ -7659,7 +7659,7 @@
|
|
|
7659
7659
|
{
|
|
7660
7660
|
"abstract": true,
|
|
7661
7661
|
"docs": {
|
|
7662
|
-
"default": "
|
|
7662
|
+
"default": "m6i.large or m6g.large",
|
|
7663
7663
|
"remarks": "Only used when creating a new cluster.",
|
|
7664
7664
|
"stability": "experimental",
|
|
7665
7665
|
"summary": "Instance type of ECS cluster instances."
|
|
@@ -12629,7 +12629,7 @@
|
|
|
12629
12629
|
},
|
|
12630
12630
|
"locationInModule": {
|
|
12631
12631
|
"filename": "src/image-builders/components.ts",
|
|
12632
|
-
"line":
|
|
12632
|
+
"line": 371
|
|
12633
12633
|
},
|
|
12634
12634
|
"name": "docker",
|
|
12635
12635
|
"returns": {
|
|
@@ -12647,7 +12647,7 @@
|
|
|
12647
12647
|
},
|
|
12648
12648
|
"locationInModule": {
|
|
12649
12649
|
"filename": "src/image-builders/components.ts",
|
|
12650
|
-
"line":
|
|
12650
|
+
"line": 447
|
|
12651
12651
|
},
|
|
12652
12652
|
"name": "dockerInDocker",
|
|
12653
12653
|
"returns": {
|
|
@@ -12665,7 +12665,7 @@
|
|
|
12665
12665
|
},
|
|
12666
12666
|
"locationInModule": {
|
|
12667
12667
|
"filename": "src/image-builders/components.ts",
|
|
12668
|
-
"line":
|
|
12668
|
+
"line": 550
|
|
12669
12669
|
},
|
|
12670
12670
|
"name": "environmentVariables",
|
|
12671
12671
|
"parameters": [
|
|
@@ -12696,7 +12696,7 @@
|
|
|
12696
12696
|
},
|
|
12697
12697
|
"locationInModule": {
|
|
12698
12698
|
"filename": "src/image-builders/components.ts",
|
|
12699
|
-
"line":
|
|
12699
|
+
"line": 457
|
|
12700
12700
|
},
|
|
12701
12701
|
"name": "extraCertificates",
|
|
12702
12702
|
"parameters": [
|
|
@@ -12797,7 +12797,7 @@
|
|
|
12797
12797
|
},
|
|
12798
12798
|
"locationInModule": {
|
|
12799
12799
|
"filename": "src/image-builders/components.ts",
|
|
12800
|
-
"line":
|
|
12800
|
+
"line": 507
|
|
12801
12801
|
},
|
|
12802
12802
|
"name": "lambdaEntrypoint",
|
|
12803
12803
|
"returns": {
|
|
@@ -12849,7 +12849,7 @@
|
|
|
12849
12849
|
},
|
|
12850
12850
|
"locationInModule": {
|
|
12851
12851
|
"filename": "src/image-builders/components.ts",
|
|
12852
|
-
"line":
|
|
12852
|
+
"line": 587
|
|
12853
12853
|
},
|
|
12854
12854
|
"name": "getAssets",
|
|
12855
12855
|
"parameters": [
|
|
@@ -12886,7 +12886,7 @@
|
|
|
12886
12886
|
},
|
|
12887
12887
|
"locationInModule": {
|
|
12888
12888
|
"filename": "src/image-builders/components.ts",
|
|
12889
|
-
"line":
|
|
12889
|
+
"line": 582
|
|
12890
12890
|
},
|
|
12891
12891
|
"name": "getCommands",
|
|
12892
12892
|
"parameters": [
|
|
@@ -12922,7 +12922,7 @@
|
|
|
12922
12922
|
},
|
|
12923
12923
|
"locationInModule": {
|
|
12924
12924
|
"filename": "src/image-builders/components.ts",
|
|
12925
|
-
"line":
|
|
12925
|
+
"line": 596
|
|
12926
12926
|
},
|
|
12927
12927
|
"name": "getDockerCommands",
|
|
12928
12928
|
"parameters": [
|
|
@@ -12957,7 +12957,7 @@
|
|
|
12957
12957
|
},
|
|
12958
12958
|
"locationInModule": {
|
|
12959
12959
|
"filename": "src/image-builders/components.ts",
|
|
12960
|
-
"line":
|
|
12960
|
+
"line": 603
|
|
12961
12961
|
},
|
|
12962
12962
|
"name": "shouldReboot",
|
|
12963
12963
|
"parameters": [
|
|
@@ -12993,7 +12993,7 @@
|
|
|
12993
12993
|
"immutable": true,
|
|
12994
12994
|
"locationInModule": {
|
|
12995
12995
|
"filename": "src/image-builders/components.ts",
|
|
12996
|
-
"line":
|
|
12996
|
+
"line": 577
|
|
12997
12997
|
},
|
|
12998
12998
|
"name": "name",
|
|
12999
12999
|
"type": {
|
|
@@ -13893,6 +13893,6 @@
|
|
|
13893
13893
|
"symbolId": "src/image-builders/aws-image-builder/deprecated/windows-components:WindowsComponents"
|
|
13894
13894
|
}
|
|
13895
13895
|
},
|
|
13896
|
-
"version": "0.13.
|
|
13897
|
-
"fingerprint": "
|
|
13896
|
+
"version": "0.13.4",
|
|
13897
|
+
"fingerprint": "ilWg1JnGFSUrNM2xzBP6+3BhOtejUPQr8xXcXHtufmE="
|
|
13898
13898
|
}
|
package/API.md
CHANGED
|
@@ -4884,7 +4884,7 @@ public readonly instanceType: InstanceType;
|
|
|
4884
4884
|
```
|
|
4885
4885
|
|
|
4886
4886
|
- *Type:* aws-cdk-lib.aws_ec2.InstanceType
|
|
4887
|
-
- *Default:*
|
|
4887
|
+
- *Default:* m6i.large
|
|
4888
4888
|
|
|
4889
4889
|
The instance type used to build the image.
|
|
4890
4890
|
|
|
@@ -5145,7 +5145,7 @@ public readonly instanceType: InstanceType;
|
|
|
5145
5145
|
```
|
|
5146
5146
|
|
|
5147
5147
|
- *Type:* aws-cdk-lib.aws_ec2.InstanceType
|
|
5148
|
-
- *Default:*
|
|
5148
|
+
- *Default:* m6i.large
|
|
5149
5149
|
|
|
5150
5150
|
The instance type used to build the image.
|
|
5151
5151
|
|
|
@@ -5701,7 +5701,7 @@ public readonly instanceType: InstanceType;
|
|
|
5701
5701
|
```
|
|
5702
5702
|
|
|
5703
5703
|
- *Type:* aws-cdk-lib.aws_ec2.InstanceType
|
|
5704
|
-
- *Default:*
|
|
5704
|
+
- *Default:* m6i.large
|
|
5705
5705
|
|
|
5706
5706
|
The instance type used to build the image.
|
|
5707
5707
|
|
|
@@ -5949,7 +5949,7 @@ public readonly instanceType: InstanceType;
|
|
|
5949
5949
|
```
|
|
5950
5950
|
|
|
5951
5951
|
- *Type:* aws-cdk-lib.aws_ec2.InstanceType
|
|
5952
|
-
- *Default:*
|
|
5952
|
+
- *Default:* m6i.large
|
|
5953
5953
|
|
|
5954
5954
|
Instance type for launched runner instances.
|
|
5955
5955
|
|
|
@@ -6250,7 +6250,7 @@ public readonly instanceType: InstanceType;
|
|
|
6250
6250
|
```
|
|
6251
6251
|
|
|
6252
6252
|
- *Type:* aws-cdk-lib.aws_ec2.InstanceType
|
|
6253
|
-
- *Default:*
|
|
6253
|
+
- *Default:* m6i.large or m6g.large
|
|
6254
6254
|
|
|
6255
6255
|
Instance type of ECS cluster instances.
|
|
6256
6256
|
|
package/README.md
CHANGED
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
|
|
11
11
|
Use this CDK construct to create ephemeral [self-hosted GitHub runners][1] on-demand inside your AWS account.
|
|
12
12
|
|
|
13
|
-
* Easy to configure GitHub integration with a web-based interface
|
|
14
|
-
* Customizable runners with decent defaults
|
|
15
|
-
* Multiple runner configurations controlled by labels
|
|
16
|
-
* Everything fully hosted in your account
|
|
17
|
-
* Automatically updated build environment with latest runner version
|
|
13
|
+
* 🧩 Easy to configure GitHub integration with a web-based interface
|
|
14
|
+
* 🧠 Customizable runners with decent defaults
|
|
15
|
+
* 🏃🏻 Multiple runner configurations controlled by labels
|
|
16
|
+
* 🔐 Everything fully hosted in your account
|
|
17
|
+
* 🔃 Automatically updated build environment with latest runner version
|
|
18
18
|
|
|
19
19
|
Self-hosted runners in AWS are useful when:
|
|
20
20
|
|
|
@@ -292,6 +292,18 @@ Other useful metrics to track:
|
|
|
292
292
|
1. Use `GitHubRunners.metricJobCompleted()` to get a metric for the number of completed jobs broken down by labels and job success.
|
|
293
293
|
2. Use `GitHubRunners.metricTime()` to get a metric for the total time a runner is running. This includes the overhead of starting the runner.
|
|
294
294
|
|
|
295
|
+
## Contributing
|
|
296
|
+
|
|
297
|
+
If you use and love this project, please consider contributing.
|
|
298
|
+
|
|
299
|
+
1. 🪳 If you see something, say something. [Issues][16] help improve the quality of the project.
|
|
300
|
+
* Include relevant logs and package versions for bugs.
|
|
301
|
+
* When possible, describe the use-case behind feature requests.
|
|
302
|
+
1. 🛠️ [Pull requests][17] are welcome.
|
|
303
|
+
* Run `npm run build` before submitting to make sure all tests pass.
|
|
304
|
+
* Allow edits from maintainers so small adjustments can be made easily.
|
|
305
|
+
1. 💵 Consider [sponsoring][15] the project to show your support and optionally get your name listed below.
|
|
306
|
+
|
|
295
307
|
## Other Options
|
|
296
308
|
|
|
297
309
|
1. [philips-labs/terraform-aws-github-runner][3] if you're using Terraform
|
|
@@ -312,3 +324,6 @@ Other useful metrics to track:
|
|
|
312
324
|
[12]: https://www.nuget.org/packages/CloudSnorkel.Cdk.Github.Runners/
|
|
313
325
|
[13]: https://constructs.dev/packages/@cloudsnorkel/cdk-github-runners/
|
|
314
326
|
[14]: https://docs.github.com/en/actions/hosting-your-own-runners/autoscaling-with-self-hosted-runners#using-ephemeral-runners-for-autoscaling
|
|
327
|
+
[15]: https://github.com/sponsors/CloudSnorkel
|
|
328
|
+
[16]: https://github.com/CloudSnorkel/cdk-github-runners/issues
|
|
329
|
+
[17]: https://github.com/CloudSnorkel/cdk-github-runners/pulls
|