@cloudsnorkel/cdk-github-runners 0.5.5 → 0.5.7

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 CHANGED
@@ -3034,7 +3034,7 @@
3034
3034
  },
3035
3035
  "name": "@cloudsnorkel/cdk-github-runners",
3036
3036
  "readme": {
3037
- "markdown": "# GitHub Self-Hosted Runners CDK Constructs\n\n[![NPM](https://img.shields.io/npm/v/@cloudsnorkel/cdk-github-runners?label=npm&logo=npm)][7]\n[![PyPI](https://img.shields.io/pypi/v/cloudsnorkel.cdk-github-runners?label=pypi&logo=pypi)][6]\n[![Maven Central](https://img.shields.io/maven-central/v/com.cloudsnorkel/cdk.github.runners.svg?label=Maven%20Central&logo=java)][8]\n[![Go](https://img.shields.io/github/v/tag/CloudSnorkel/cdk-github-runners?color=red&label=go&logo=go)][11]\n[![Nuget](https://img.shields.io/nuget/v/CloudSnorkel.Cdk.Github.Runners?color=red&&logo=nuget)][12]\n[![Release](https://github.com/CloudSnorkel/cdk-github-runners/actions/workflows/release.yml/badge.svg)](https://github.com/CloudSnorkel/cdk-github-runners/actions/workflows/release.yml)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/CloudSnorkel/cdk-github-runners/blob/main/LICENSE)\n\nUse this CDK construct to create ephemeral [self-hosted GitHub runners][1] on-demand inside your AWS account.\n\n* Easy to configure GitHub integration with a web-based interface\n* Customizable runners with decent defaults\n* Multiple runner configurations controlled by labels\n* Everything fully hosted in your account\n* Automatically updated build environment with latest runner version\n\nSelf-hosted runners in AWS are useful when:\n\n* You need easy access to internal resources in your actions\n* You want to pre-install some software for your actions\n* You want to provide some basic AWS API access (but [aws-actions/configure-aws-credentials][2] has more security controls)\n\nEphemeral (or on-demand) runners are the [recommended way by GitHub][14] for auto-scaling, and they make sure all jobs run with a clean image. Runners are started on-demand. You don't pay unless a job is running.\n\n## API\n\nThe best way to browse API documentation is on [Constructs Hub][13]. It is available in all supported programming languages.\n\n## Providers\n\nA runner provider creates compute resources on-demand and uses [actions/runner][5] to start a runner.\n\n| | CodeBuild | Fargate | Lambda |\n|------------------|----------------------------|----------------|---------------|\n| **Time limit** | 8 hours | Unlimited | 15 minutes |\n| **vCPUs** | 2, 4, 8, or 72 | 0.25 to 4 | 1 to 6 |\n| **RAM** | 3gb, 7gb, 15gb, or 145gb | 512mb to 30gb | 128mb to 10gb |\n| **Storage** | 50gb to 824gb | 20gb to 200gb | Up to 10gb |\n| **Architecture** | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 |\n| **sudo** | ✔ | ✔ | ❌ |\n| **Docker** | ✔ (Linux only) | ❌ | ❌ |\n| **Spot pricing** | ❌ | ✔ | ❌ |\n| **OS** | Linux, Windows | Linux, Windows | Linux |\n\nThe best provider to use mostly depends on your current infrastructure. When in doubt, CodeBuild is always a good choice. Execution history and logs are easy to view, and it has no restrictive limits unless you need to run for more than 8 hours.\n\nYou can also create your own provider by implementing `IRunnerProvider`.\n\n## Installation\n\n1. Confirm you're using CDK v2\n2. Install the appropriate package\n 1. [Python][6]\n ```\n pip install cloudsnorkel.cdk-github-runners\n ```\n 2. [TypeScript or JavaScript][7]\n ```\n npm i @cloudsnorkel/cdk-github-runners\n ```\n 3. [Java][8]\n ```xml\n <dependency>\n <groupId>com.cloudsnorkel</groupId>\n <artifactId>cdk.github.runners</artifactId>\n </dependency>\n ```\n 4. [Go][11]\n ```\n go get github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners\n ```\n 5. [.NET][12]\n ```\n dotnet add package CloudSnorkel.Cdk.Github.Runners\n ```\n3. Use `GitHubRunners` construct in your code (starting with default arguments is fine)\n4. Deploy your stack\n5. Look for the status command output similar to `aws --region us-east-1 lambda invoke --function-name status-XYZ123 status.json`\n6. Execute the status command (you may need to specify `--profile` too) and open the resulting `status.json` file\n7. Open the URL in `github.setup.url` from `status.json` or [manually setup GitHub](SETUP_GITHUB.md) integration as an app or with personal access token\n8. Run status command again to confirm `github.auth.status` and `github.webhook.status` are OK\n9. Trigger a GitHub action that has a `self-hosted` label with `runs-on: [self-hosted, linux, codebuild]` or similar\n10. If the action is not successful, see [troubleshooting](#Troubleshooting)\n\n[![Demo](demo-thumbnail.jpg)](https://youtu.be/wlyv_3V8lIw)\n\n## Customizing\n\nThe default providers configured by `GitHubRunners` are useful for testing but probably not too much for actual production work. They run in the default VPC or no VPC and have no added IAM permissions. You would usually want to configure the providers yourself.\n\nFor example:\n\n```typescript\nlet vpc: ec2.Vpc;\nlet runnerSg: ec2.SecurityGroup;\nlet dbSg: ec2.SecurityGroup;\nlet bucket: s3.Bucket;\n\n// create a custom CodeBuild provider\nconst myProvider = new CodeBuildRunner(this, 'codebuild runner', {\n label: 'my-codebuild',\n vpc: vpc,\n securityGroup: runnerSg,\n});\n// grant some permissions to the provider\nbucket.grantReadWrite(myProvider);\ndbSg.connections.allowFrom(runnerSg, ec2.Port.tcp(3306), 'allow runners to connect to MySQL database');\n\n// create the runner infrastructure\nnew GitHubRunners(this, 'runners', {\n providers: [myProvider],\n});\n```\n\nAnother way to customize runners is by modifying the image used to spin them up. The image contains the [runner][5], any required dependencies, and integration code with the provider. You may choose to customize this image by adding more packages, for example.\n\n```typescript\nconst myBuilder = new CodeBuildImageBuilder(this, 'image builder', {\n dockerfilePath: FargateRunner.LINUX_X64_DOCKERFILE_PATH,\n runnerVersion: RunnerVersion.specific('2.291.0'),\n rebuildInterval: Duration.days(14),\n});\nmyBuilder.setBuildArg('EXTRA_PACKAGES', 'nginx xz-utils');\n\nconst myProvider = new FargateRunner(this, 'fargate runner', {\n label: 'customized-fargate',\n vpc: vpc,\n securityGroup: runnerSg,\n imageBuilder: myBuilder,\n});\n\n// create the runner infrastructure\nnew GitHubRunners(stack, 'runners', {\n providers: [myProvider],\n});\n```\n\nYour workflow will then look like:\n\n```yaml\nname: self-hosted example\non: push\njobs:\n self-hosted:\n runs-on: [self-hosted, customized-fargate]\n steps:\n - run: echo hello world\n```\n\nWindows images must be built with AWS Image Builder.\n\n```typescript\nconst myWindowsBuilder = new ContainerImageBuilder(this, 'Windows image builder', {\n architecture: Architecture.X86_64,\n os: Os.WINDOWS,\n runnerVersion: RunnerVersion.specific('2.291.0'),\n rebuildInterval: Duration.days(14),\n});\nmyWindowsBuilder.addComponent(new ImageBuilderComponent(this, 'Ninja Component',\n {\n displayName: 'Ninja',\n description: 'Download and install Ninja build system',\n platform: 'Windows',\n commands: [\n 'Invoke-WebRequest -UseBasicParsing -Uri \"https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip\" -OutFile ninja.zip',\n 'Expand-Archive ninja.zip -DestinationPath C:\\\\actions',\n 'del ninja.zip',\n ],\n }\n));\n\nconst myProvider = new FargateRunner(this, 'fargate runner', {\n label: 'customized-windows-fargate',\n vpc: vpc,\n securityGroup: runnerSg,\n imageBuiler: myWindowsBuilder,\n});\n\n// create the runner infrastructure\nnew GitHubRunners(stack, 'runners', {\n providers: [myProvider],\n});\n```\n\n## Architecture\n\n![Architecture diagram](architecture.svg)\n\n## Troubleshooting\n\n1. Always start with the status function, make sure no errors are reported, and confirm all status codes are OK\n2. Confirm the webhook Lambda was called by visiting the URL in `troubleshooting.webhookHandlerUrl` from `status.json`\n 1. If it's not called or logs errors, confirm the webhook settings on the GitHub side\n 2. If you see too many errors, make sure you're only sending `workflow_job` events\n3. When using GitHub app, make sure there are active installation in `github.auth.app.installations`\n4. Check execution details of the orchestrator step function by visiting the URL in `troubleshooting.stepFunctionUrl` from `status.json`\n 1. Use the details tab to find the specific execution of the provider (Lambda, CodeBuild, Fargate, etc.)\n 2. Every step function execution should be successful, even if the runner action inside it failed\n\n## Other Options\n\n1. [philips-labs/terraform-aws-github-runner][3] if you're using Terraform\n2. [actions-runner-controller/actions-runner-controller][4] if you're using Kubernetes\n\n\n[1]: https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners\n[2]: https://github.com/marketplace/actions/configure-aws-credentials-action-for-github-actions\n[3]: https://github.com/philips-labs/terraform-aws-github-runner\n[4]: https://github.com/actions-runner-controller/actions-runner-controller\n[5]: https://github.com/actions/runner\n[6]: https://pypi.org/project/cloudsnorkel.cdk-github-runners\n[7]: https://www.npmjs.com/package/@cloudsnorkel/cdk-github-runners\n[8]: https://search.maven.org/search?q=g:%22com.cloudsnorkel%22%20AND%20a:%22cdk.github.runners%22\n[9]: https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps\n[10]: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token\n[11]: https://pkg.go.dev/github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners\n[12]: https://www.nuget.org/packages/CloudSnorkel.Cdk.Github.Runners/\n[13]: https://constructs.dev/packages/@cloudsnorkel/cdk-github-runners/\n[14]: https://docs.github.com/en/actions/hosting-your-own-runners/autoscaling-with-self-hosted-runners#using-ephemeral-runners-for-autoscaling\n"
3037
+ "markdown": "# GitHub Self-Hosted Runners CDK Constructs\n\n[![NPM](https://img.shields.io/npm/v/@cloudsnorkel/cdk-github-runners?label=npm&logo=npm)][7]\n[![PyPI](https://img.shields.io/pypi/v/cloudsnorkel.cdk-github-runners?label=pypi&logo=pypi)][6]\n[![Maven Central](https://img.shields.io/maven-central/v/com.cloudsnorkel/cdk.github.runners.svg?label=Maven%20Central&logo=java)][8]\n[![Go](https://img.shields.io/github/v/tag/CloudSnorkel/cdk-github-runners?color=red&label=go&logo=go)][11]\n[![Nuget](https://img.shields.io/nuget/v/CloudSnorkel.Cdk.Github.Runners?color=red&&logo=nuget)][12]\n[![Release](https://github.com/CloudSnorkel/cdk-github-runners/actions/workflows/release.yml/badge.svg)](https://github.com/CloudSnorkel/cdk-github-runners/actions/workflows/release.yml)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/CloudSnorkel/cdk-github-runners/blob/main/LICENSE)\n\nUse this CDK construct to create ephemeral [self-hosted GitHub runners][1] on-demand inside your AWS account.\n\n* Easy to configure GitHub integration with a web-based interface\n* Customizable runners with decent defaults\n* Multiple runner configurations controlled by labels\n* Everything fully hosted in your account\n* Automatically updated build environment with latest runner version\n\nSelf-hosted runners in AWS are useful when:\n\n* You need easy access to internal resources in your actions\n* You want to pre-install some software for your actions\n* You want to provide some basic AWS API access (but [aws-actions/configure-aws-credentials][2] has more security controls)\n\nEphemeral (or on-demand) runners are the [recommended way by GitHub][14] for auto-scaling, and they make sure all jobs run with a clean image. Runners are started on-demand. You don't pay unless a job is running.\n\n## API\n\nThe best way to browse API documentation is on [Constructs Hub][13]. It is available in all supported programming languages.\n\n## Providers\n\nA runner provider creates compute resources on-demand and uses [actions/runner][5] to start a runner.\n\n| | CodeBuild | Fargate | Lambda |\n|------------------|----------------------------|----------------|---------------|\n| **Time limit** | 8 hours | Unlimited | 15 minutes |\n| **vCPUs** | 2, 4, 8, or 72 | 0.25 to 4 | 1 to 6 |\n| **RAM** | 3gb, 7gb, 15gb, or 145gb | 512mb to 30gb | 128mb to 10gb |\n| **Storage** | 50gb to 824gb | 20gb to 200gb | Up to 10gb |\n| **Architecture** | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 |\n| **sudo** | ✔ | ✔ | ❌ |\n| **Docker** | ✔ (Linux only) | ❌ | ❌ |\n| **Spot pricing** | ❌ | ✔ | ❌ |\n| **OS** | Linux, Windows | Linux, Windows | Linux |\n\nThe best provider to use mostly depends on your current infrastructure. When in doubt, CodeBuild is always a good choice. Execution history and logs are easy to view, and it has no restrictive limits unless you need to run for more than 8 hours.\n\nYou can also create your own provider by implementing `IRunnerProvider`.\n\n## Installation\n\n1. Confirm you're using CDK v2\n2. Install the appropriate package\n 1. [Python][6]\n ```\n pip install cloudsnorkel.cdk-github-runners\n ```\n 2. [TypeScript or JavaScript][7]\n ```\n npm i @cloudsnorkel/cdk-github-runners\n ```\n 3. [Java][8]\n ```xml\n <dependency>\n <groupId>com.cloudsnorkel</groupId>\n <artifactId>cdk.github.runners</artifactId>\n </dependency>\n ```\n 4. [Go][11]\n ```\n go get github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners\n ```\n 5. [.NET][12]\n ```\n dotnet add package CloudSnorkel.Cdk.Github.Runners\n ```\n3. Use `GitHubRunners` construct in your code (starting with default arguments is fine)\n4. Deploy your stack\n5. Look for the status command output similar to `aws --region us-east-1 lambda invoke --function-name status-XYZ123 status.json`\n6. Execute the status command (you may need to specify `--profile` too) and open the resulting `status.json` file\n7. Open the URL in `github.setup.url` from `status.json` or [manually setup GitHub](SETUP_GITHUB.md) integration as an app or with personal access token\n8. Run status command again to confirm `github.auth.status` and `github.webhook.status` are OK\n9. Trigger a GitHub action that has a `self-hosted` label with `runs-on: [self-hosted, linux, codebuild]` or similar\n10. If the action is not successful, see [troubleshooting](#Troubleshooting)\n\n[![Demo](demo-thumbnail.jpg)](https://youtu.be/wlyv_3V8lIw)\n\n## Customizing\n\nThe default providers configured by `GitHubRunners` are useful for testing but probably not too much for actual production work. They run in the default VPC or no VPC and have no added IAM permissions. You would usually want to configure the providers yourself.\n\nFor example:\n\n```typescript\nlet vpc: ec2.Vpc;\nlet runnerSg: ec2.SecurityGroup;\nlet dbSg: ec2.SecurityGroup;\nlet bucket: s3.Bucket;\n\n// create a custom CodeBuild provider\nconst myProvider = new CodeBuildRunner(this, 'codebuild runner', {\n label: 'my-codebuild',\n vpc: vpc,\n securityGroup: runnerSg,\n});\n// grant some permissions to the provider\nbucket.grantReadWrite(myProvider);\ndbSg.connections.allowFrom(runnerSg, ec2.Port.tcp(3306), 'allow runners to connect to MySQL database');\n\n// create the runner infrastructure\nnew GitHubRunners(this, 'runners', {\n providers: [myProvider],\n});\n```\n\nAnother way to customize runners is by modifying the image used to spin them up. The image contains the [runner][5], any required dependencies, and integration code with the provider. You may choose to customize this image by adding more packages, for example.\n\n```typescript\nconst myBuilder = new CodeBuildImageBuilder(this, 'image builder', {\n dockerfilePath: FargateRunner.LINUX_X64_DOCKERFILE_PATH,\n runnerVersion: RunnerVersion.specific('2.291.0'),\n rebuildInterval: Duration.days(14),\n});\nmyBuilder.setBuildArg('EXTRA_PACKAGES', 'nginx xz-utils');\n\nconst myProvider = new FargateRunner(this, 'fargate runner', {\n label: 'customized-fargate',\n vpc: vpc,\n securityGroup: runnerSg,\n imageBuilder: myBuilder,\n});\n\n// create the runner infrastructure\nnew GitHubRunners(stack, 'runners', {\n providers: [myProvider],\n});\n```\n\nYour workflow will then look like:\n\n```yaml\nname: self-hosted example\non: push\njobs:\n self-hosted:\n runs-on: [self-hosted, customized-fargate]\n steps:\n - run: echo hello world\n```\n\nWindows images must be built with AWS Image Builder.\n\n```typescript\nconst myWindowsBuilder = new ContainerImageBuilder(this, 'Windows image builder', {\n architecture: Architecture.X86_64,\n os: Os.WINDOWS,\n runnerVersion: RunnerVersion.specific('2.291.0'),\n rebuildInterval: Duration.days(14),\n});\nmyWindowsBuilder.addComponent(new ImageBuilderComponent(this, 'Ninja Component',\n {\n displayName: 'Ninja',\n description: 'Download and install Ninja build system',\n platform: 'Windows',\n commands: [\n 'Invoke-WebRequest -UseBasicParsing -Uri \"https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip\" -OutFile ninja.zip',\n 'Expand-Archive ninja.zip -DestinationPath C:\\\\actions',\n 'del ninja.zip',\n ],\n }\n));\n\nconst myProvider = new FargateRunner(this, 'fargate runner', {\n label: 'customized-windows-fargate',\n vpc: vpc,\n securityGroup: runnerSg,\n imageBuiler: myWindowsBuilder,\n});\n\n// create the runner infrastructure\nnew GitHubRunners(stack, 'runners', {\n providers: [myProvider],\n});\n```\n\n## Architecture\n\n![Architecture diagram](architecture.svg)\n\n## Troubleshooting\n\n1. Always start with the status function, make sure no errors are reported, and confirm all status codes are OK\n2. If jobs are stuck on pending:\n 1. Make sure `runs-on` in the workflow matches the expected labels set in the runner provider\n 2. If it happens every time, cancel the job and start it again\n4. Confirm the webhook Lambda was called by visiting the URL in `troubleshooting.webhookHandlerUrl` from `status.json`\n 1. If it's not called or logs errors, confirm the webhook settings on the GitHub side\n 2. If you see too many errors, make sure you're only sending `workflow_job` events\n5. When using GitHub app, make sure there are active installation in `github.auth.app.installations`\n6. Check execution details of the orchestrator step function by visiting the URL in `troubleshooting.stepFunctionUrl` from `status.json`\n 1. Use the details tab to find the specific execution of the provider (Lambda, CodeBuild, Fargate, etc.)\n 2. Every step function execution should be successful, even if the runner action inside it failed\n\n## Other Options\n\n1. [philips-labs/terraform-aws-github-runner][3] if you're using Terraform\n2. [actions-runner-controller/actions-runner-controller][4] if you're using Kubernetes\n\n\n[1]: https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners\n[2]: https://github.com/marketplace/actions/configure-aws-credentials-action-for-github-actions\n[3]: https://github.com/philips-labs/terraform-aws-github-runner\n[4]: https://github.com/actions-runner-controller/actions-runner-controller\n[5]: https://github.com/actions/runner\n[6]: https://pypi.org/project/cloudsnorkel.cdk-github-runners\n[7]: https://www.npmjs.com/package/@cloudsnorkel/cdk-github-runners\n[8]: https://search.maven.org/search?q=g:%22com.cloudsnorkel%22%20AND%20a:%22cdk.github.runners%22\n[9]: https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps\n[10]: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token\n[11]: https://pkg.go.dev/github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners\n[12]: https://www.nuget.org/packages/CloudSnorkel.Cdk.Github.Runners/\n[13]: https://constructs.dev/packages/@cloudsnorkel/cdk-github-runners/\n[14]: https://docs.github.com/en/actions/hosting-your-own-runners/autoscaling-with-self-hosted-runners#using-ephemeral-runners-for-autoscaling\n"
3038
3038
  },
3039
3039
  "repository": {
3040
3040
  "type": "git",
@@ -3075,7 +3075,7 @@
3075
3075
  "kind": "class",
3076
3076
  "locationInModule": {
3077
3077
  "filename": "src/providers/common.ts",
3078
- "line": 32
3078
+ "line": 33
3079
3079
  },
3080
3080
  "methods": [
3081
3081
  {
@@ -3085,7 +3085,7 @@
3085
3085
  },
3086
3086
  "locationInModule": {
3087
3087
  "filename": "src/providers/common.ts",
3088
- "line": 55
3088
+ "line": 56
3089
3089
  },
3090
3090
  "name": "is",
3091
3091
  "parameters": [
@@ -3117,7 +3117,7 @@
3117
3117
  "immutable": true,
3118
3118
  "locationInModule": {
3119
3119
  "filename": "src/providers/common.ts",
3120
- "line": 36
3120
+ "line": 37
3121
3121
  },
3122
3122
  "name": "ARM64",
3123
3123
  "static": true,
@@ -3134,7 +3134,7 @@
3134
3134
  "immutable": true,
3135
3135
  "locationInModule": {
3136
3136
  "filename": "src/providers/common.ts",
3137
- "line": 41
3137
+ "line": 42
3138
3138
  },
3139
3139
  "name": "X86_64",
3140
3140
  "static": true,
@@ -3149,7 +3149,7 @@
3149
3149
  "immutable": true,
3150
3150
  "locationInModule": {
3151
3151
  "filename": "src/providers/common.ts",
3152
- "line": 47
3152
+ "line": 48
3153
3153
  },
3154
3154
  "name": "name",
3155
3155
  "type": {
@@ -3648,7 +3648,7 @@
3648
3648
  },
3649
3649
  "locationInModule": {
3650
3650
  "filename": "src/providers/codebuild.ts",
3651
- "line": 138
3651
+ "line": 150
3652
3652
  },
3653
3653
  "parameters": [
3654
3654
  {
@@ -3677,7 +3677,7 @@
3677
3677
  "kind": "class",
3678
3678
  "locationInModule": {
3679
3679
  "filename": "src/providers/codebuild.ts",
3680
- "line": 81
3680
+ "line": 93
3681
3681
  },
3682
3682
  "methods": [
3683
3683
  {
@@ -3688,7 +3688,7 @@
3688
3688
  },
3689
3689
  "locationInModule": {
3690
3690
  "filename": "src/providers/codebuild.ts",
3691
- "line": 251
3691
+ "line": 263
3692
3692
  },
3693
3693
  "name": "getStepFunctionTask",
3694
3694
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -3708,6 +3708,54 @@
3708
3708
  "fqn": "aws-cdk-lib.aws_stepfunctions.IChainable"
3709
3709
  }
3710
3710
  }
3711
+ },
3712
+ {
3713
+ "docs": {
3714
+ "stability": "experimental"
3715
+ },
3716
+ "locationInModule": {
3717
+ "filename": "src/providers/common.ts",
3718
+ "line": 253
3719
+ },
3720
+ "name": "labelsFromProperties",
3721
+ "parameters": [
3722
+ {
3723
+ "name": "defaultLabel",
3724
+ "type": {
3725
+ "primitive": "string"
3726
+ }
3727
+ },
3728
+ {
3729
+ "name": "propsLabel",
3730
+ "optional": true,
3731
+ "type": {
3732
+ "primitive": "string"
3733
+ }
3734
+ },
3735
+ {
3736
+ "name": "propsLabels",
3737
+ "optional": true,
3738
+ "type": {
3739
+ "collection": {
3740
+ "elementtype": {
3741
+ "primitive": "string"
3742
+ },
3743
+ "kind": "array"
3744
+ }
3745
+ }
3746
+ }
3747
+ ],
3748
+ "protected": true,
3749
+ "returns": {
3750
+ "type": {
3751
+ "collection": {
3752
+ "elementtype": {
3753
+ "primitive": "string"
3754
+ },
3755
+ "kind": "array"
3756
+ }
3757
+ }
3758
+ }
3711
3759
  }
3712
3760
  ],
3713
3761
  "name": "CodeBuildRunner",
@@ -3715,14 +3763,14 @@
3715
3763
  {
3716
3764
  "const": true,
3717
3765
  "docs": {
3718
- "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.\n* `DOCKER_CHANNEL` overrides the channel from which Docker will be downloaded. Defaults to `\"stsable\"`.\n* `DIND_COMMIT` overrides the commit where dind is found.\n* `DOCKER_VERSION` overrides the installed Docker version.\n* `DOCKER_COMPOSE_VERSION` overrides the installed docker-compose version.",
3766
+ "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.\n* `DOCKER_CHANNEL` overrides the channel from which Docker will be downloaded. Defaults to `\"stable\"`.\n* `DIND_COMMIT` overrides the commit where dind is found.\n* `DOCKER_VERSION` overrides the installed Docker version.\n* `DOCKER_COMPOSE_VERSION` overrides the installed docker-compose version.",
3719
3767
  "stability": "experimental",
3720
3768
  "summary": "Path to Dockerfile for Linux ARM64 with all the requirements for CodeBuild runner."
3721
3769
  },
3722
3770
  "immutable": true,
3723
3771
  "locationInModule": {
3724
3772
  "filename": "src/providers/codebuild.ts",
3725
- "line": 106
3773
+ "line": 118
3726
3774
  },
3727
3775
  "name": "LINUX_ARM64_DOCKERFILE_PATH",
3728
3776
  "static": true,
@@ -3733,14 +3781,14 @@
3733
3781
  {
3734
3782
  "const": true,
3735
3783
  "docs": {
3736
- "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.\n* `DOCKER_CHANNEL` overrides the channel from which Docker will be downloaded. Defaults to `\"stsable\"`.\n* `DIND_COMMIT` overrides the commit where dind is found.\n* `DOCKER_VERSION` overrides the installed Docker version.\n* `DOCKER_COMPOSE_VERSION` overrides the installed docker-compose version.",
3784
+ "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.\n* `DOCKER_CHANNEL` overrides the channel from which Docker will be downloaded. Defaults to `\"stable\"`.\n* `DIND_COMMIT` overrides the commit where dind is found.\n* `DOCKER_VERSION` overrides the installed Docker version.\n* `DOCKER_COMPOSE_VERSION` overrides the installed docker-compose version.",
3737
3785
  "stability": "experimental",
3738
3786
  "summary": "Path to Dockerfile for Linux x64 with all the requirements for CodeBuild runner."
3739
3787
  },
3740
3788
  "immutable": true,
3741
3789
  "locationInModule": {
3742
3790
  "filename": "src/providers/codebuild.ts",
3743
- "line": 93
3791
+ "line": 105
3744
3792
  },
3745
3793
  "name": "LINUX_X64_DOCKERFILE_PATH",
3746
3794
  "static": true,
@@ -3756,7 +3804,7 @@
3756
3804
  "immutable": true,
3757
3805
  "locationInModule": {
3758
3806
  "filename": "src/providers/codebuild.ts",
3759
- "line": 291
3807
+ "line": 303
3760
3808
  },
3761
3809
  "name": "connections",
3762
3810
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -3772,7 +3820,7 @@
3772
3820
  "immutable": true,
3773
3821
  "locationInModule": {
3774
3822
  "filename": "src/providers/codebuild.ts",
3775
- "line": 131
3823
+ "line": 143
3776
3824
  },
3777
3825
  "name": "grantPrincipal",
3778
3826
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -3788,7 +3836,7 @@
3788
3836
  "immutable": true,
3789
3837
  "locationInModule": {
3790
3838
  "filename": "src/providers/codebuild.ts",
3791
- "line": 136
3839
+ "line": 148
3792
3840
  },
3793
3841
  "name": "image",
3794
3842
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -3799,17 +3847,22 @@
3799
3847
  {
3800
3848
  "docs": {
3801
3849
  "stability": "experimental",
3802
- "summary": "Label associated with this provider."
3850
+ "summary": "Labels associated with this provider."
3803
3851
  },
3804
3852
  "immutable": true,
3805
3853
  "locationInModule": {
3806
3854
  "filename": "src/providers/codebuild.ts",
3807
- "line": 116
3855
+ "line": 128
3808
3856
  },
3809
- "name": "label",
3857
+ "name": "labels",
3810
3858
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
3811
3859
  "type": {
3812
- "primitive": "string"
3860
+ "collection": {
3861
+ "elementtype": {
3862
+ "primitive": "string"
3863
+ },
3864
+ "kind": "array"
3865
+ }
3813
3866
  }
3814
3867
  },
3815
3868
  {
@@ -3820,7 +3873,7 @@
3820
3873
  "immutable": true,
3821
3874
  "locationInModule": {
3822
3875
  "filename": "src/providers/codebuild.ts",
3823
- "line": 111
3876
+ "line": 123
3824
3877
  },
3825
3878
  "name": "project",
3826
3879
  "type": {
@@ -3835,7 +3888,7 @@
3835
3888
  "immutable": true,
3836
3889
  "locationInModule": {
3837
3890
  "filename": "src/providers/codebuild.ts",
3838
- "line": 126
3891
+ "line": 138
3839
3892
  },
3840
3893
  "name": "securityGroup",
3841
3894
  "optional": true,
@@ -3852,7 +3905,7 @@
3852
3905
  "immutable": true,
3853
3906
  "locationInModule": {
3854
3907
  "filename": "src/providers/codebuild.ts",
3855
- "line": 121
3908
+ "line": 133
3856
3909
  },
3857
3910
  "name": "vpc",
3858
3911
  "optional": true,
@@ -3892,7 +3945,7 @@
3892
3945
  "immutable": true,
3893
3946
  "locationInModule": {
3894
3947
  "filename": "src/providers/codebuild.ts",
3895
- "line": 62
3948
+ "line": 74
3896
3949
  },
3897
3950
  "name": "computeType",
3898
3951
  "optional": true,
@@ -3922,14 +3975,15 @@
3922
3975
  {
3923
3976
  "abstract": true,
3924
3977
  "docs": {
3925
- "default": "'codebuild'",
3926
- "stability": "experimental",
3978
+ "default": "undefined",
3979
+ "deprecated": "use {@link labels} instead",
3980
+ "stability": "deprecated",
3927
3981
  "summary": "GitHub Actions label used for this provider."
3928
3982
  },
3929
3983
  "immutable": true,
3930
3984
  "locationInModule": {
3931
3985
  "filename": "src/providers/codebuild.ts",
3932
- "line": 33
3986
+ "line": 34
3933
3987
  },
3934
3988
  "name": "label",
3935
3989
  "optional": true,
@@ -3937,6 +3991,30 @@
3937
3991
  "primitive": "string"
3938
3992
  }
3939
3993
  },
3994
+ {
3995
+ "abstract": true,
3996
+ "docs": {
3997
+ "default": "['codebuild']",
3998
+ "remarks": "These labels are used to identify which provider should spawn a new on-demand runner. Every job sends a webhook with the labels it's looking for\nbased on runs-on. We match the labels from the webhook with the labels specified here. If all the labels specified here are present in the\njob's labels, this provider will be chosen and spawn a new runner.",
3999
+ "stability": "experimental",
4000
+ "summary": "GitHub Actions labels used for this provider."
4001
+ },
4002
+ "immutable": true,
4003
+ "locationInModule": {
4004
+ "filename": "src/providers/codebuild.ts",
4005
+ "line": 45
4006
+ },
4007
+ "name": "labels",
4008
+ "optional": true,
4009
+ "type": {
4010
+ "collection": {
4011
+ "elementtype": {
4012
+ "primitive": "string"
4013
+ },
4014
+ "kind": "array"
4015
+ }
4016
+ }
4017
+ },
3940
4018
  {
3941
4019
  "abstract": true,
3942
4020
  "docs": {
@@ -3947,7 +4025,7 @@
3947
4025
  "immutable": true,
3948
4026
  "locationInModule": {
3949
4027
  "filename": "src/providers/codebuild.ts",
3950
- "line": 47
4028
+ "line": 59
3951
4029
  },
3952
4030
  "name": "securityGroup",
3953
4031
  "optional": true,
@@ -3965,7 +4043,7 @@
3965
4043
  "immutable": true,
3966
4044
  "locationInModule": {
3967
4045
  "filename": "src/providers/codebuild.ts",
3968
- "line": 54
4046
+ "line": 66
3969
4047
  },
3970
4048
  "name": "subnetSelection",
3971
4049
  "optional": true,
@@ -3984,7 +4062,7 @@
3984
4062
  "immutable": true,
3985
4063
  "locationInModule": {
3986
4064
  "filename": "src/providers/codebuild.ts",
3987
- "line": 71
4065
+ "line": 83
3988
4066
  },
3989
4067
  "name": "timeout",
3990
4068
  "optional": true,
@@ -4002,7 +4080,7 @@
4002
4080
  "immutable": true,
4003
4081
  "locationInModule": {
4004
4082
  "filename": "src/providers/codebuild.ts",
4005
- "line": 40
4083
+ "line": 52
4006
4084
  },
4007
4085
  "name": "vpc",
4008
4086
  "optional": true,
@@ -4561,7 +4639,7 @@
4561
4639
  },
4562
4640
  "locationInModule": {
4563
4641
  "filename": "src/providers/fargate.ts",
4564
- "line": 251
4642
+ "line": 263
4565
4643
  },
4566
4644
  "parameters": [
4567
4645
  {
@@ -4590,7 +4668,7 @@
4590
4668
  "kind": "class",
4591
4669
  "locationInModule": {
4592
4670
  "filename": "src/providers/fargate.ts",
4593
- "line": 172
4671
+ "line": 184
4594
4672
  },
4595
4673
  "methods": [
4596
4674
  {
@@ -4601,7 +4679,7 @@
4601
4679
  },
4602
4680
  "locationInModule": {
4603
4681
  "filename": "src/providers/fargate.ts",
4604
- "line": 334
4682
+ "line": 346
4605
4683
  },
4606
4684
  "name": "getStepFunctionTask",
4607
4685
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -4621,6 +4699,54 @@
4621
4699
  "fqn": "aws-cdk-lib.aws_stepfunctions.IChainable"
4622
4700
  }
4623
4701
  }
4702
+ },
4703
+ {
4704
+ "docs": {
4705
+ "stability": "experimental"
4706
+ },
4707
+ "locationInModule": {
4708
+ "filename": "src/providers/common.ts",
4709
+ "line": 253
4710
+ },
4711
+ "name": "labelsFromProperties",
4712
+ "parameters": [
4713
+ {
4714
+ "name": "defaultLabel",
4715
+ "type": {
4716
+ "primitive": "string"
4717
+ }
4718
+ },
4719
+ {
4720
+ "name": "propsLabel",
4721
+ "optional": true,
4722
+ "type": {
4723
+ "primitive": "string"
4724
+ }
4725
+ },
4726
+ {
4727
+ "name": "propsLabels",
4728
+ "optional": true,
4729
+ "type": {
4730
+ "collection": {
4731
+ "elementtype": {
4732
+ "primitive": "string"
4733
+ },
4734
+ "kind": "array"
4735
+ }
4736
+ }
4737
+ }
4738
+ ],
4739
+ "protected": true,
4740
+ "returns": {
4741
+ "type": {
4742
+ "collection": {
4743
+ "elementtype": {
4744
+ "primitive": "string"
4745
+ },
4746
+ "kind": "array"
4747
+ }
4748
+ }
4749
+ }
4624
4750
  }
4625
4751
  ],
4626
4752
  "name": "FargateRunner",
@@ -4635,7 +4761,7 @@
4635
4761
  "immutable": true,
4636
4762
  "locationInModule": {
4637
4763
  "filename": "src/providers/fargate.ts",
4638
- "line": 189
4764
+ "line": 201
4639
4765
  },
4640
4766
  "name": "LINUX_ARM64_DOCKERFILE_PATH",
4641
4767
  "static": true,
@@ -4653,7 +4779,7 @@
4653
4779
  "immutable": true,
4654
4780
  "locationInModule": {
4655
4781
  "filename": "src/providers/fargate.ts",
4656
- "line": 180
4782
+ "line": 192
4657
4783
  },
4658
4784
  "name": "LINUX_X64_DOCKERFILE_PATH",
4659
4785
  "static": true,
@@ -4669,7 +4795,7 @@
4669
4795
  "immutable": true,
4670
4796
  "locationInModule": {
4671
4797
  "filename": "src/providers/fargate.ts",
4672
- "line": 229
4798
+ "line": 241
4673
4799
  },
4674
4800
  "name": "assignPublicIp",
4675
4801
  "type": {
@@ -4684,7 +4810,7 @@
4684
4810
  "immutable": true,
4685
4811
  "locationInModule": {
4686
4812
  "filename": "src/providers/fargate.ts",
4687
- "line": 194
4813
+ "line": 206
4688
4814
  },
4689
4815
  "name": "cluster",
4690
4816
  "type": {
@@ -4699,7 +4825,7 @@
4699
4825
  "immutable": true,
4700
4826
  "locationInModule": {
4701
4827
  "filename": "src/providers/fargate.ts",
4702
- "line": 239
4828
+ "line": 251
4703
4829
  },
4704
4830
  "name": "connections",
4705
4831
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -4715,7 +4841,7 @@
4715
4841
  "immutable": true,
4716
4842
  "locationInModule": {
4717
4843
  "filename": "src/providers/fargate.ts",
4718
- "line": 204
4844
+ "line": 216
4719
4845
  },
4720
4846
  "name": "container",
4721
4847
  "type": {
@@ -4730,7 +4856,7 @@
4730
4856
  "immutable": true,
4731
4857
  "locationInModule": {
4732
4858
  "filename": "src/providers/fargate.ts",
4733
- "line": 234
4859
+ "line": 246
4734
4860
  },
4735
4861
  "name": "grantPrincipal",
4736
4862
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -4746,7 +4872,7 @@
4746
4872
  "immutable": true,
4747
4873
  "locationInModule": {
4748
4874
  "filename": "src/providers/fargate.ts",
4749
- "line": 249
4875
+ "line": 261
4750
4876
  },
4751
4877
  "name": "image",
4752
4878
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -4757,17 +4883,22 @@
4757
4883
  {
4758
4884
  "docs": {
4759
4885
  "stability": "experimental",
4760
- "summary": "Label associated with this provider."
4886
+ "summary": "Labels associated with this provider."
4761
4887
  },
4762
4888
  "immutable": true,
4763
4889
  "locationInModule": {
4764
4890
  "filename": "src/providers/fargate.ts",
4765
- "line": 209
4891
+ "line": 221
4766
4892
  },
4767
- "name": "label",
4893
+ "name": "labels",
4768
4894
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
4769
4895
  "type": {
4770
- "primitive": "string"
4896
+ "collection": {
4897
+ "elementtype": {
4898
+ "primitive": "string"
4899
+ },
4900
+ "kind": "array"
4901
+ }
4771
4902
  }
4772
4903
  },
4773
4904
  {
@@ -4778,7 +4909,7 @@
4778
4909
  "immutable": true,
4779
4910
  "locationInModule": {
4780
4911
  "filename": "src/providers/fargate.ts",
4781
- "line": 244
4912
+ "line": 256
4782
4913
  },
4783
4914
  "name": "spot",
4784
4915
  "type": {
@@ -4793,7 +4924,7 @@
4793
4924
  "immutable": true,
4794
4925
  "locationInModule": {
4795
4926
  "filename": "src/providers/fargate.ts",
4796
- "line": 199
4927
+ "line": 211
4797
4928
  },
4798
4929
  "name": "task",
4799
4930
  "type": {
@@ -4808,7 +4939,7 @@
4808
4939
  "immutable": true,
4809
4940
  "locationInModule": {
4810
4941
  "filename": "src/providers/fargate.ts",
4811
- "line": 224
4942
+ "line": 236
4812
4943
  },
4813
4944
  "name": "securityGroup",
4814
4945
  "optional": true,
@@ -4825,7 +4956,7 @@
4825
4956
  "immutable": true,
4826
4957
  "locationInModule": {
4827
4958
  "filename": "src/providers/fargate.ts",
4828
- "line": 219
4959
+ "line": 231
4829
4960
  },
4830
4961
  "name": "subnetSelection",
4831
4962
  "optional": true,
@@ -4841,7 +4972,7 @@
4841
4972
  "immutable": true,
4842
4973
  "locationInModule": {
4843
4974
  "filename": "src/providers/fargate.ts",
4844
- "line": 214
4975
+ "line": 226
4845
4976
  },
4846
4977
  "name": "vpc",
4847
4978
  "optional": true,
@@ -4882,7 +5013,7 @@
4882
5013
  "immutable": true,
4883
5014
  "locationInModule": {
4884
5015
  "filename": "src/providers/fargate.ts",
4885
- "line": 70
5016
+ "line": 82
4886
5017
  },
4887
5018
  "name": "assignPublicIp",
4888
5019
  "optional": true,
@@ -4900,7 +5031,7 @@
4900
5031
  "immutable": true,
4901
5032
  "locationInModule": {
4902
5033
  "filename": "src/providers/fargate.ts",
4903
- "line": 61
5034
+ "line": 73
4904
5035
  },
4905
5036
  "name": "cluster",
4906
5037
  "optional": true,
@@ -4919,7 +5050,7 @@
4919
5050
  "immutable": true,
4920
5051
  "locationInModule": {
4921
5052
  "filename": "src/providers/fargate.ts",
4922
- "line": 89
5053
+ "line": 101
4923
5054
  },
4924
5055
  "name": "cpu",
4925
5056
  "optional": true,
@@ -4938,7 +5069,7 @@
4938
5069
  "immutable": true,
4939
5070
  "locationInModule": {
4940
5071
  "filename": "src/providers/fargate.ts",
4941
- "line": 116
5072
+ "line": 128
4942
5073
  },
4943
5074
  "name": "ephemeralStorageGiB",
4944
5075
  "optional": true,
@@ -4968,14 +5099,15 @@
4968
5099
  {
4969
5100
  "abstract": true,
4970
5101
  "docs": {
4971
- "default": "'fargate'",
4972
- "stability": "experimental",
5102
+ "default": "undefined",
5103
+ "deprecated": "use {@link labels} instead",
5104
+ "stability": "deprecated",
4973
5105
  "summary": "GitHub Actions label used for this provider."
4974
5106
  },
4975
5107
  "immutable": true,
4976
5108
  "locationInModule": {
4977
5109
  "filename": "src/providers/fargate.ts",
4978
- "line": 33
5110
+ "line": 34
4979
5111
  },
4980
5112
  "name": "label",
4981
5113
  "optional": true,
@@ -4983,6 +5115,30 @@
4983
5115
  "primitive": "string"
4984
5116
  }
4985
5117
  },
5118
+ {
5119
+ "abstract": true,
5120
+ "docs": {
5121
+ "default": "['fargate']",
5122
+ "remarks": "These labels are used to identify which provider should spawn a new on-demand runner. Every job sends a webhook with the labels it's looking for\nbased on runs-on. We match the labels from the webhook with the labels specified here. If all the labels specified here are present in the\njob's labels, this provider will be chosen and spawn a new runner.",
5123
+ "stability": "experimental",
5124
+ "summary": "GitHub Actions labels used for this provider."
5125
+ },
5126
+ "immutable": true,
5127
+ "locationInModule": {
5128
+ "filename": "src/providers/fargate.ts",
5129
+ "line": 45
5130
+ },
5131
+ "name": "labels",
5132
+ "optional": true,
5133
+ "type": {
5134
+ "collection": {
5135
+ "elementtype": {
5136
+ "primitive": "string"
5137
+ },
5138
+ "kind": "array"
5139
+ }
5140
+ }
5141
+ },
4986
5142
  {
4987
5143
  "abstract": true,
4988
5144
  "docs": {
@@ -4994,7 +5150,7 @@
4994
5150
  "immutable": true,
4995
5151
  "locationInModule": {
4996
5152
  "filename": "src/providers/fargate.ts",
4997
- "line": 107
5153
+ "line": 119
4998
5154
  },
4999
5155
  "name": "memoryLimitMiB",
5000
5156
  "optional": true,
@@ -5012,7 +5168,7 @@
5012
5168
  "immutable": true,
5013
5169
  "locationInModule": {
5014
5170
  "filename": "src/providers/fargate.ts",
5015
- "line": 54
5171
+ "line": 66
5016
5172
  },
5017
5173
  "name": "securityGroup",
5018
5174
  "optional": true,
@@ -5031,7 +5187,7 @@
5031
5187
  "immutable": true,
5032
5188
  "locationInModule": {
5033
5189
  "filename": "src/providers/fargate.ts",
5034
- "line": 126
5190
+ "line": 138
5035
5191
  },
5036
5192
  "name": "spot",
5037
5193
  "optional": true,
@@ -5049,7 +5205,7 @@
5049
5205
  "immutable": true,
5050
5206
  "locationInModule": {
5051
5207
  "filename": "src/providers/fargate.ts",
5052
- "line": 47
5208
+ "line": 59
5053
5209
  },
5054
5210
  "name": "subnetSelection",
5055
5211
  "optional": true,
@@ -5067,7 +5223,7 @@
5067
5223
  "immutable": true,
5068
5224
  "locationInModule": {
5069
5225
  "filename": "src/providers/fargate.ts",
5070
- "line": 40
5226
+ "line": 52
5071
5227
  },
5072
5228
  "name": "vpc",
5073
5229
  "optional": true,
@@ -5093,7 +5249,7 @@
5093
5249
  },
5094
5250
  "locationInModule": {
5095
5251
  "filename": "src/runner.ts",
5096
- "line": 140
5252
+ "line": 147
5097
5253
  },
5098
5254
  "parameters": [
5099
5255
  {
@@ -5120,7 +5276,7 @@
5120
5276
  "kind": "class",
5121
5277
  "locationInModule": {
5122
5278
  "filename": "src/runner.ts",
5123
- "line": 120
5279
+ "line": 127
5124
5280
  },
5125
5281
  "name": "GitHubRunners",
5126
5282
  "properties": [
@@ -5132,7 +5288,7 @@
5132
5288
  "immutable": true,
5133
5289
  "locationInModule": {
5134
5290
  "filename": "src/runner.ts",
5135
- "line": 127
5291
+ "line": 134
5136
5292
  },
5137
5293
  "name": "providers",
5138
5294
  "type": {
@@ -5152,7 +5308,7 @@
5152
5308
  "immutable": true,
5153
5309
  "locationInModule": {
5154
5310
  "filename": "src/runner.ts",
5155
- "line": 132
5311
+ "line": 139
5156
5312
  },
5157
5313
  "name": "secrets",
5158
5314
  "type": {
@@ -5214,6 +5370,25 @@
5214
5370
  "primitive": "string"
5215
5371
  }
5216
5372
  },
5373
+ {
5374
+ "abstract": true,
5375
+ "docs": {
5376
+ "default": "10 minutes",
5377
+ "remarks": "If the user cancelled the job, or if another runner stole it, this stops the runner to avoid wasting resources.",
5378
+ "stability": "experimental",
5379
+ "summary": "Time to wait before stopping a runner that remains idle."
5380
+ },
5381
+ "immutable": true,
5382
+ "locationInModule": {
5383
+ "filename": "src/runner.ts",
5384
+ "line": 84
5385
+ },
5386
+ "name": "idleTimeout",
5387
+ "optional": true,
5388
+ "type": {
5389
+ "fqn": "aws-cdk-lib.Duration"
5390
+ }
5391
+ },
5217
5392
  {
5218
5393
  "abstract": true,
5219
5394
  "docs": {
@@ -5306,7 +5481,7 @@
5306
5481
  "kind": "interface",
5307
5482
  "locationInModule": {
5308
5483
  "filename": "src/providers/common.ts",
5309
- "line": 127
5484
+ "line": 128
5310
5485
  },
5311
5486
  "methods": [
5312
5487
  {
@@ -5319,7 +5494,7 @@
5319
5494
  },
5320
5495
  "locationInModule": {
5321
5496
  "filename": "src/providers/common.ts",
5322
- "line": 135
5497
+ "line": 136
5323
5498
  },
5324
5499
  "name": "bind",
5325
5500
  "returns": {
@@ -5342,7 +5517,7 @@
5342
5517
  "kind": "interface",
5343
5518
  "locationInModule": {
5344
5519
  "filename": "src/providers/common.ts",
5345
- "line": 191
5520
+ "line": 192
5346
5521
  },
5347
5522
  "name": "IRunnerImageStatus",
5348
5523
  "properties": [
@@ -5355,7 +5530,7 @@
5355
5530
  "immutable": true,
5356
5531
  "locationInModule": {
5357
5532
  "filename": "src/providers/common.ts",
5358
- "line": 205
5533
+ "line": 206
5359
5534
  },
5360
5535
  "name": "imageBuilderLogGroup",
5361
5536
  "optional": true,
@@ -5372,7 +5547,7 @@
5372
5547
  "immutable": true,
5373
5548
  "locationInModule": {
5374
5549
  "filename": "src/providers/common.ts",
5375
- "line": 195
5550
+ "line": 196
5376
5551
  },
5377
5552
  "name": "imageRepository",
5378
5553
  "optional": true,
@@ -5389,7 +5564,7 @@
5389
5564
  "immutable": true,
5390
5565
  "locationInModule": {
5391
5566
  "filename": "src/providers/common.ts",
5392
- "line": 200
5567
+ "line": 201
5393
5568
  },
5394
5569
  "name": "imageTag",
5395
5570
  "optional": true,
@@ -5415,7 +5590,7 @@
5415
5590
  "kind": "interface",
5416
5591
  "locationInModule": {
5417
5592
  "filename": "src/providers/common.ts",
5418
- "line": 211
5593
+ "line": 212
5419
5594
  },
5420
5595
  "methods": [
5421
5596
  {
@@ -5427,7 +5602,7 @@
5427
5602
  },
5428
5603
  "locationInModule": {
5429
5604
  "filename": "src/providers/common.ts",
5430
- "line": 239
5605
+ "line": 244
5431
5606
  },
5432
5607
  "name": "getStepFunctionTask",
5433
5608
  "parameters": [
@@ -5460,7 +5635,7 @@
5460
5635
  "immutable": true,
5461
5636
  "locationInModule": {
5462
5637
  "filename": "src/providers/common.ts",
5463
- "line": 230
5638
+ "line": 235
5464
5639
  },
5465
5640
  "name": "image",
5466
5641
  "type": {
@@ -5470,17 +5645,23 @@
5470
5645
  {
5471
5646
  "abstract": true,
5472
5647
  "docs": {
5648
+ "remarks": "These labels are used to identify which provider should spawn a new on-demand runner. Every job sends a webhook with the labels it's looking for\nbased on runs-on. We use match the labels from the webhook with the labels specified here. If all the labels specified here are present in the\njob's labels, this provider will be chosen and spawn a new runner.",
5473
5649
  "stability": "experimental",
5474
- "summary": "GitHub Actions label associated with this runner provider."
5650
+ "summary": "GitHub Actions labels used for this provider."
5475
5651
  },
5476
5652
  "immutable": true,
5477
5653
  "locationInModule": {
5478
5654
  "filename": "src/providers/common.ts",
5479
- "line": 215
5655
+ "line": 220
5480
5656
  },
5481
- "name": "label",
5657
+ "name": "labels",
5482
5658
  "type": {
5483
- "primitive": "string"
5659
+ "collection": {
5660
+ "elementtype": {
5661
+ "primitive": "string"
5662
+ },
5663
+ "kind": "array"
5664
+ }
5484
5665
  }
5485
5666
  },
5486
5667
  {
@@ -5492,7 +5673,7 @@
5492
5673
  "immutable": true,
5493
5674
  "locationInModule": {
5494
5675
  "filename": "src/providers/common.ts",
5495
- "line": 225
5676
+ "line": 230
5496
5677
  },
5497
5678
  "name": "securityGroup",
5498
5679
  "optional": true,
@@ -5509,7 +5690,7 @@
5509
5690
  "immutable": true,
5510
5691
  "locationInModule": {
5511
5692
  "filename": "src/providers/common.ts",
5512
- "line": 220
5693
+ "line": 225
5513
5694
  },
5514
5695
  "name": "vpc",
5515
5696
  "optional": true,
@@ -5831,7 +6012,7 @@
5831
6012
  },
5832
6013
  "locationInModule": {
5833
6014
  "filename": "src/providers/lambda.ts",
5834
- "line": 141
6015
+ "line": 153
5835
6016
  },
5836
6017
  "parameters": [
5837
6018
  {
@@ -5860,7 +6041,7 @@
5860
6041
  "kind": "class",
5861
6042
  "locationInModule": {
5862
6043
  "filename": "src/providers/lambda.ts",
5863
- "line": 92
6044
+ "line": 104
5864
6045
  },
5865
6046
  "methods": [
5866
6047
  {
@@ -5871,7 +6052,7 @@
5871
6052
  },
5872
6053
  "locationInModule": {
5873
6054
  "filename": "src/providers/lambda.ts",
5874
- "line": 221
6055
+ "line": 233
5875
6056
  },
5876
6057
  "name": "getStepFunctionTask",
5877
6058
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -5891,6 +6072,54 @@
5891
6072
  "fqn": "aws-cdk-lib.aws_stepfunctions.IChainable"
5892
6073
  }
5893
6074
  }
6075
+ },
6076
+ {
6077
+ "docs": {
6078
+ "stability": "experimental"
6079
+ },
6080
+ "locationInModule": {
6081
+ "filename": "src/providers/common.ts",
6082
+ "line": 253
6083
+ },
6084
+ "name": "labelsFromProperties",
6085
+ "parameters": [
6086
+ {
6087
+ "name": "defaultLabel",
6088
+ "type": {
6089
+ "primitive": "string"
6090
+ }
6091
+ },
6092
+ {
6093
+ "name": "propsLabel",
6094
+ "optional": true,
6095
+ "type": {
6096
+ "primitive": "string"
6097
+ }
6098
+ },
6099
+ {
6100
+ "name": "propsLabels",
6101
+ "optional": true,
6102
+ "type": {
6103
+ "collection": {
6104
+ "elementtype": {
6105
+ "primitive": "string"
6106
+ },
6107
+ "kind": "array"
6108
+ }
6109
+ }
6110
+ }
6111
+ ],
6112
+ "protected": true,
6113
+ "returns": {
6114
+ "type": {
6115
+ "collection": {
6116
+ "elementtype": {
6117
+ "primitive": "string"
6118
+ },
6119
+ "kind": "array"
6120
+ }
6121
+ }
6122
+ }
5894
6123
  }
5895
6124
  ],
5896
6125
  "name": "LambdaRunner",
@@ -5905,7 +6134,7 @@
5905
6134
  "immutable": true,
5906
6135
  "locationInModule": {
5907
6136
  "filename": "src/providers/lambda.ts",
5908
- "line": 109
6137
+ "line": 121
5909
6138
  },
5910
6139
  "name": "LINUX_ARM64_DOCKERFILE_PATH",
5911
6140
  "static": true,
@@ -5923,7 +6152,7 @@
5923
6152
  "immutable": true,
5924
6153
  "locationInModule": {
5925
6154
  "filename": "src/providers/lambda.ts",
5926
- "line": 100
6155
+ "line": 112
5927
6156
  },
5928
6157
  "name": "LINUX_X64_DOCKERFILE_PATH",
5929
6158
  "static": true,
@@ -5939,7 +6168,7 @@
5939
6168
  "immutable": true,
5940
6169
  "locationInModule": {
5941
6170
  "filename": "src/providers/lambda.ts",
5942
- "line": 210
6171
+ "line": 222
5943
6172
  },
5944
6173
  "name": "connections",
5945
6174
  "overrides": "aws-cdk-lib.aws_ec2.IConnectable",
@@ -5955,7 +6184,7 @@
5955
6184
  "immutable": true,
5956
6185
  "locationInModule": {
5957
6186
  "filename": "src/providers/lambda.ts",
5958
- "line": 114
6187
+ "line": 126
5959
6188
  },
5960
6189
  "name": "function",
5961
6190
  "type": {
@@ -5970,7 +6199,7 @@
5970
6199
  "immutable": true,
5971
6200
  "locationInModule": {
5972
6201
  "filename": "src/providers/lambda.ts",
5973
- "line": 134
6202
+ "line": 146
5974
6203
  },
5975
6204
  "name": "grantPrincipal",
5976
6205
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -5986,7 +6215,7 @@
5986
6215
  "immutable": true,
5987
6216
  "locationInModule": {
5988
6217
  "filename": "src/providers/lambda.ts",
5989
- "line": 139
6218
+ "line": 151
5990
6219
  },
5991
6220
  "name": "image",
5992
6221
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
@@ -5997,17 +6226,22 @@
5997
6226
  {
5998
6227
  "docs": {
5999
6228
  "stability": "experimental",
6000
- "summary": "Label associated with this provider."
6229
+ "summary": "Labels associated with this provider."
6001
6230
  },
6002
6231
  "immutable": true,
6003
6232
  "locationInModule": {
6004
6233
  "filename": "src/providers/lambda.ts",
6005
- "line": 119
6234
+ "line": 131
6006
6235
  },
6007
- "name": "label",
6236
+ "name": "labels",
6008
6237
  "overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
6009
6238
  "type": {
6010
- "primitive": "string"
6239
+ "collection": {
6240
+ "elementtype": {
6241
+ "primitive": "string"
6242
+ },
6243
+ "kind": "array"
6244
+ }
6011
6245
  }
6012
6246
  },
6013
6247
  {
@@ -6018,7 +6252,7 @@
6018
6252
  "immutable": true,
6019
6253
  "locationInModule": {
6020
6254
  "filename": "src/providers/lambda.ts",
6021
- "line": 129
6255
+ "line": 141
6022
6256
  },
6023
6257
  "name": "securityGroup",
6024
6258
  "optional": true,
@@ -6035,7 +6269,7 @@
6035
6269
  "immutable": true,
6036
6270
  "locationInModule": {
6037
6271
  "filename": "src/providers/lambda.ts",
6038
- "line": 124
6272
+ "line": 136
6039
6273
  },
6040
6274
  "name": "vpc",
6041
6275
  "optional": true,
@@ -6074,7 +6308,7 @@
6074
6308
  "immutable": true,
6075
6309
  "locationInModule": {
6076
6310
  "filename": "src/providers/lambda.ts",
6077
- "line": 52
6311
+ "line": 64
6078
6312
  },
6079
6313
  "name": "ephemeralStorageSize",
6080
6314
  "optional": true,
@@ -6105,14 +6339,15 @@
6105
6339
  {
6106
6340
  "abstract": true,
6107
6341
  "docs": {
6108
- "default": "'lambda'",
6109
- "stability": "experimental",
6342
+ "default": "undefined",
6343
+ "deprecated": "use {@link labels} instead",
6344
+ "stability": "deprecated",
6110
6345
  "summary": "GitHub Actions label used for this provider."
6111
6346
  },
6112
6347
  "immutable": true,
6113
6348
  "locationInModule": {
6114
6349
  "filename": "src/providers/lambda.ts",
6115
- "line": 35
6350
+ "line": 36
6116
6351
  },
6117
6352
  "name": "label",
6118
6353
  "optional": true,
@@ -6120,6 +6355,30 @@
6120
6355
  "primitive": "string"
6121
6356
  }
6122
6357
  },
6358
+ {
6359
+ "abstract": true,
6360
+ "docs": {
6361
+ "default": "['lambda']",
6362
+ "remarks": "These labels are used to identify which provider should spawn a new on-demand runner. Every job sends a webhook with the labels it's looking for\nbased on runs-on. We match the labels from the webhook with the labels specified here. If all the labels specified here are present in the\njob's labels, this provider will be chosen and spawn a new runner.",
6363
+ "stability": "experimental",
6364
+ "summary": "GitHub Actions labels used for this provider."
6365
+ },
6366
+ "immutable": true,
6367
+ "locationInModule": {
6368
+ "filename": "src/providers/lambda.ts",
6369
+ "line": 47
6370
+ },
6371
+ "name": "labels",
6372
+ "optional": true,
6373
+ "type": {
6374
+ "collection": {
6375
+ "elementtype": {
6376
+ "primitive": "string"
6377
+ },
6378
+ "kind": "array"
6379
+ }
6380
+ }
6381
+ },
6123
6382
  {
6124
6383
  "abstract": true,
6125
6384
  "docs": {
@@ -6131,7 +6390,7 @@
6131
6390
  "immutable": true,
6132
6391
  "locationInModule": {
6133
6392
  "filename": "src/providers/lambda.ts",
6134
- "line": 45
6393
+ "line": 57
6135
6394
  },
6136
6395
  "name": "memorySize",
6137
6396
  "optional": true,
@@ -6149,7 +6408,7 @@
6149
6408
  "immutable": true,
6150
6409
  "locationInModule": {
6151
6410
  "filename": "src/providers/lambda.ts",
6152
- "line": 75
6411
+ "line": 87
6153
6412
  },
6154
6413
  "name": "securityGroup",
6155
6414
  "optional": true,
@@ -6167,7 +6426,7 @@
6167
6426
  "immutable": true,
6168
6427
  "locationInModule": {
6169
6428
  "filename": "src/providers/lambda.ts",
6170
- "line": 82
6429
+ "line": 94
6171
6430
  },
6172
6431
  "name": "subnetSelection",
6173
6432
  "optional": true,
@@ -6186,7 +6445,7 @@
6186
6445
  "immutable": true,
6187
6446
  "locationInModule": {
6188
6447
  "filename": "src/providers/lambda.ts",
6189
- "line": 61
6448
+ "line": 73
6190
6449
  },
6191
6450
  "name": "timeout",
6192
6451
  "optional": true,
@@ -6204,7 +6463,7 @@
6204
6463
  "immutable": true,
6205
6464
  "locationInModule": {
6206
6465
  "filename": "src/providers/lambda.ts",
6207
- "line": 68
6466
+ "line": 80
6208
6467
  },
6209
6468
  "name": "vpc",
6210
6469
  "optional": true,
@@ -6225,7 +6484,7 @@
6225
6484
  "kind": "class",
6226
6485
  "locationInModule": {
6227
6486
  "filename": "src/providers/common.ts",
6228
- "line": 63
6487
+ "line": 64
6229
6488
  },
6230
6489
  "methods": [
6231
6490
  {
@@ -6235,7 +6494,7 @@
6235
6494
  },
6236
6495
  "locationInModule": {
6237
6496
  "filename": "src/providers/common.ts",
6238
- "line": 86
6497
+ "line": 87
6239
6498
  },
6240
6499
  "name": "is",
6241
6500
  "parameters": [
@@ -6267,7 +6526,7 @@
6267
6526
  "immutable": true,
6268
6527
  "locationInModule": {
6269
6528
  "filename": "src/providers/common.ts",
6270
- "line": 67
6529
+ "line": 68
6271
6530
  },
6272
6531
  "name": "LINUX",
6273
6532
  "static": true,
@@ -6284,7 +6543,7 @@
6284
6543
  "immutable": true,
6285
6544
  "locationInModule": {
6286
6545
  "filename": "src/providers/common.ts",
6287
- "line": 72
6546
+ "line": 73
6288
6547
  },
6289
6548
  "name": "WINDOWS",
6290
6549
  "static": true,
@@ -6299,7 +6558,7 @@
6299
6558
  "immutable": true,
6300
6559
  "locationInModule": {
6301
6560
  "filename": "src/providers/common.ts",
6302
- "line": 78
6561
+ "line": 79
6303
6562
  },
6304
6563
  "name": "name",
6305
6564
  "type": {
@@ -6319,7 +6578,7 @@
6319
6578
  "kind": "interface",
6320
6579
  "locationInModule": {
6321
6580
  "filename": "src/providers/common.ts",
6322
- "line": 91
6581
+ "line": 92
6323
6582
  },
6324
6583
  "name": "RunnerImage",
6325
6584
  "properties": [
@@ -6332,7 +6591,7 @@
6332
6591
  "immutable": true,
6333
6592
  "locationInModule": {
6334
6593
  "filename": "src/providers/common.ts",
6335
- "line": 105
6594
+ "line": 106
6336
6595
  },
6337
6596
  "name": "architecture",
6338
6597
  "type": {
@@ -6348,7 +6607,7 @@
6348
6607
  "immutable": true,
6349
6608
  "locationInModule": {
6350
6609
  "filename": "src/providers/common.ts",
6351
- "line": 95
6610
+ "line": 96
6352
6611
  },
6353
6612
  "name": "imageRepository",
6354
6613
  "type": {
@@ -6364,7 +6623,7 @@
6364
6623
  "immutable": true,
6365
6624
  "locationInModule": {
6366
6625
  "filename": "src/providers/common.ts",
6367
- "line": 100
6626
+ "line": 101
6368
6627
  },
6369
6628
  "name": "imageTag",
6370
6629
  "type": {
@@ -6380,7 +6639,7 @@
6380
6639
  "immutable": true,
6381
6640
  "locationInModule": {
6382
6641
  "filename": "src/providers/common.ts",
6383
- "line": 110
6642
+ "line": 111
6384
6643
  },
6385
6644
  "name": "os",
6386
6645
  "type": {
@@ -6396,7 +6655,7 @@
6396
6655
  "immutable": true,
6397
6656
  "locationInModule": {
6398
6657
  "filename": "src/providers/common.ts",
6399
- "line": 115
6658
+ "line": 116
6400
6659
  },
6401
6660
  "name": "logGroup",
6402
6661
  "optional": true,
@@ -6418,7 +6677,7 @@
6418
6677
  "kind": "interface",
6419
6678
  "locationInModule": {
6420
6679
  "filename": "src/providers/common.ts",
6421
- "line": 141
6680
+ "line": 142
6422
6681
  },
6423
6682
  "name": "RunnerProviderProps",
6424
6683
  "properties": [
@@ -6433,7 +6692,7 @@
6433
6692
  "immutable": true,
6434
6693
  "locationInModule": {
6435
6694
  "filename": "src/providers/common.ts",
6436
- "line": 149
6695
+ "line": 150
6437
6696
  },
6438
6697
  "name": "logRetention",
6439
6698
  "optional": true,
@@ -6456,7 +6715,7 @@
6456
6715
  "kind": "interface",
6457
6716
  "locationInModule": {
6458
6717
  "filename": "src/providers/common.ts",
6459
- "line": 161
6718
+ "line": 162
6460
6719
  },
6461
6720
  "name": "RunnerRuntimeParameters",
6462
6721
  "properties": [
@@ -6470,7 +6729,7 @@
6470
6729
  "immutable": true,
6471
6730
  "locationInModule": {
6472
6731
  "filename": "src/providers/common.ts",
6473
- "line": 175
6732
+ "line": 176
6474
6733
  },
6475
6734
  "name": "githubDomainPath",
6476
6735
  "type": {
@@ -6486,7 +6745,7 @@
6486
6745
  "immutable": true,
6487
6746
  "locationInModule": {
6488
6747
  "filename": "src/providers/common.ts",
6489
- "line": 180
6748
+ "line": 181
6490
6749
  },
6491
6750
  "name": "ownerPath",
6492
6751
  "type": {
@@ -6502,7 +6761,7 @@
6502
6761
  "immutable": true,
6503
6762
  "locationInModule": {
6504
6763
  "filename": "src/providers/common.ts",
6505
- "line": 185
6764
+ "line": 186
6506
6765
  },
6507
6766
  "name": "repoPath",
6508
6767
  "type": {
@@ -6519,7 +6778,7 @@
6519
6778
  "immutable": true,
6520
6779
  "locationInModule": {
6521
6780
  "filename": "src/providers/common.ts",
6522
- "line": 170
6781
+ "line": 171
6523
6782
  },
6524
6783
  "name": "runnerNamePath",
6525
6784
  "type": {
@@ -6535,7 +6794,7 @@
6535
6794
  "immutable": true,
6536
6795
  "locationInModule": {
6537
6796
  "filename": "src/providers/common.ts",
6538
- "line": 165
6797
+ "line": 166
6539
6798
  },
6540
6799
  "name": "runnerTokenPath",
6541
6800
  "type": {
@@ -6558,7 +6817,7 @@
6558
6817
  },
6559
6818
  "locationInModule": {
6560
6819
  "filename": "src/providers/common.ts",
6561
- "line": 25
6820
+ "line": 26
6562
6821
  },
6563
6822
  "parameters": [
6564
6823
  {
@@ -6573,7 +6832,7 @@
6573
6832
  "kind": "class",
6574
6833
  "locationInModule": {
6575
6834
  "filename": "src/providers/common.ts",
6576
- "line": 6
6835
+ "line": 7
6577
6836
  },
6578
6837
  "methods": [
6579
6838
  {
@@ -6583,7 +6842,7 @@
6583
6842
  },
6584
6843
  "locationInModule": {
6585
6844
  "filename": "src/providers/common.ts",
6586
- "line": 10
6845
+ "line": 11
6587
6846
  },
6588
6847
  "name": "latest",
6589
6848
  "returns": {
@@ -6601,7 +6860,7 @@
6601
6860
  },
6602
6861
  "locationInModule": {
6603
6862
  "filename": "src/providers/common.ts",
6604
- "line": 21
6863
+ "line": 22
6605
6864
  },
6606
6865
  "name": "specific",
6607
6866
  "parameters": [
@@ -6632,7 +6891,7 @@
6632
6891
  "immutable": true,
6633
6892
  "locationInModule": {
6634
6893
  "filename": "src/providers/common.ts",
6635
- "line": 25
6894
+ "line": 26
6636
6895
  },
6637
6896
  "name": "version",
6638
6897
  "type": {
@@ -6889,6 +7148,6 @@
6889
7148
  "symbolId": "src/providers/image-builders/static:StaticRunnerImage"
6890
7149
  }
6891
7150
  },
6892
- "version": "0.5.5",
6893
- "fingerprint": "JNVqUntuGX/+IZfzpGaBOjp7dE4hjIggEBm6uIvH2JA="
7151
+ "version": "0.5.7",
7152
+ "fingerprint": "44NDaZbB6QGS9Amryqeegiig6X5hEIrH7yjHrLntVY4="
6894
7153
  }