@cloudsnorkel/cdk-github-runners 0.9.7 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +2 -0
- package/.jsii +275 -303
- package/API.md +215 -39
- package/README.md +8 -7
- package/assets/delete-runner.lambda/index.js +2983 -5504
- package/assets/docker-images/lambda/linux-arm64/runner.sh +1 -1
- package/assets/docker-images/lambda/linux-x64/runner.sh +1 -1
- package/assets/idle-runner-repear.lambda/index.js +20062 -0
- package/assets/setup.lambda/index.html +14 -14
- package/assets/setup.lambda/index.js +102 -153
- package/assets/status.lambda/index.js +2925 -5418
- package/assets/token-retriever.lambda/index.js +3000 -5497
- package/assets/webhook-handler.lambda/index.js +1 -1
- package/lib/access.d.ts +11 -1
- package/lib/access.js +56 -6
- package/lib/delete-runner.lambda.js +7 -35
- package/lib/idle-runner-repear-function.d.ts +13 -0
- package/lib/idle-runner-repear-function.js +23 -0
- package/lib/idle-runner-repear.lambda.d.ts +1 -0
- package/lib/idle-runner-repear.lambda.js +67 -0
- package/lib/image-builders/api.js +1 -1
- package/lib/image-builders/aws-image-builder/builder.js +1 -1
- package/lib/image-builders/aws-image-builder/delete-ami.lambda.js +1 -3
- package/lib/image-builders/aws-image-builder/deprecated/ami.js +1 -1
- package/lib/image-builders/aws-image-builder/deprecated/container.js +1 -1
- 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/aws-image-builder/filter-failed-builds.lambda.js +1 -2
- package/lib/image-builders/aws-image-builder/reaper.lambda.js +1 -3
- package/lib/image-builders/aws-image-builder/versioner.lambda.js +1 -3
- package/lib/image-builders/codebuild-deprecated.js +1 -1
- package/lib/image-builders/components.js +1 -1
- package/lib/image-builders/static.js +1 -1
- package/lib/{github.d.ts → lambda-github.d.ts} +14 -0
- package/lib/lambda-github.js +69 -0
- package/lib/lambda-helpers.d.ts +0 -1
- package/lib/lambda-helpers.js +1 -2
- package/lib/providers/build-image.lambda.js +1 -3
- package/lib/providers/codebuild.d.ts +1 -0
- package/lib/providers/codebuild.js +9 -6
- package/lib/providers/common.d.ts +8 -8
- package/lib/providers/common.js +5 -16
- package/lib/providers/ec2.d.ts +1 -0
- package/lib/providers/ec2.js +11 -12
- package/lib/providers/ecs.d.ts +1 -0
- package/lib/providers/ecs.js +7 -3
- package/lib/providers/fargate.d.ts +1 -0
- package/lib/providers/fargate.js +10 -6
- package/lib/providers/lambda.d.ts +1 -0
- package/lib/providers/lambda.js +10 -4
- package/lib/providers/update-lambda.lambda.js +1 -2
- package/lib/runner.d.ts +24 -3
- package/lib/runner.js +64 -21
- package/lib/secrets.js +1 -1
- package/lib/setup.lambda.js +3 -4
- package/lib/status.lambda.js +4 -6
- package/lib/token-retriever.lambda.js +25 -11
- package/lib/webhook-handler.lambda.js +2 -3
- package/package.json +11 -9
- package/lib/github.js +0 -50
package/.jsii
CHANGED
|
@@ -3138,7 +3138,7 @@
|
|
|
3138
3138
|
},
|
|
3139
3139
|
"name": "@cloudsnorkel/cdk-github-runners",
|
|
3140
3140
|
"readme": {
|
|
3141
|
-
"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 = CodeBuildRunnerProvider.imageBuilder(this, 'image builder', {\n dockerfilePath: FargateRunner.LINUX_X64_DOCKERFILE_PATH,\n runnerVersion: RunnerVersion.specific('2.291.0'),\n rebuildInterval: Duration.days(14),\n});\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 vpc: vpc,\n securityGroups: [runnerSg],\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 runnerVersion: RunnerVersion.specific('2.291.0'),\n rebuildInterval: Duration.days(14),\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 vpc: vpc,\n securityGroups: [runnerSg],\n imageBuidler: 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 imageBuidler: 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\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 jobs get stuck often and take a long time to start, cancel the pending jobs and start them 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## 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-action-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"
|
|
3141
|
+
"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 = CodeBuildRunnerProvider.imageBuilder(this, 'image builder', {\n dockerfilePath: FargateRunner.LINUX_X64_DOCKERFILE_PATH,\n runnerVersion: RunnerVersion.specific('2.291.0'),\n rebuildInterval: Duration.days(14),\n});\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 vpc: vpc,\n securityGroups: [runnerSg],\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 runnerVersion: RunnerVersion.specific('2.291.0'),\n rebuildInterval: Duration.days(14),\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 vpc: vpc,\n securityGroups: [runnerSg],\n imageBuidler: 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 imageBuidler: 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\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-action-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"
|
|
3142
3142
|
},
|
|
3143
3143
|
"repository": {
|
|
3144
3144
|
"type": "git",
|
|
@@ -3851,7 +3851,7 @@
|
|
|
3851
3851
|
"immutable": true,
|
|
3852
3852
|
"locationInModule": {
|
|
3853
3853
|
"filename": "src/access.ts",
|
|
3854
|
-
"line":
|
|
3854
|
+
"line": 28
|
|
3855
3855
|
},
|
|
3856
3856
|
"name": "allowedIps",
|
|
3857
3857
|
"optional": true,
|
|
@@ -3874,7 +3874,7 @@
|
|
|
3874
3874
|
"immutable": true,
|
|
3875
3875
|
"locationInModule": {
|
|
3876
3876
|
"filename": "src/access.ts",
|
|
3877
|
-
"line":
|
|
3877
|
+
"line": 40
|
|
3878
3878
|
},
|
|
3879
3879
|
"name": "allowedSecurityGroups",
|
|
3880
3880
|
"optional": true,
|
|
@@ -3891,18 +3891,41 @@
|
|
|
3891
3891
|
"abstract": true,
|
|
3892
3892
|
"docs": {
|
|
3893
3893
|
"stability": "experimental",
|
|
3894
|
-
"summary": "
|
|
3894
|
+
"summary": "Create a private API Gateway and allow access from the specified VPC."
|
|
3895
3895
|
},
|
|
3896
3896
|
"immutable": true,
|
|
3897
3897
|
"locationInModule": {
|
|
3898
3898
|
"filename": "src/access.ts",
|
|
3899
|
-
"line":
|
|
3899
|
+
"line": 33
|
|
3900
3900
|
},
|
|
3901
3901
|
"name": "allowedVpc",
|
|
3902
3902
|
"optional": true,
|
|
3903
3903
|
"type": {
|
|
3904
3904
|
"fqn": "aws-cdk-lib.aws_ec2.IVpc"
|
|
3905
3905
|
}
|
|
3906
|
+
},
|
|
3907
|
+
{
|
|
3908
|
+
"abstract": true,
|
|
3909
|
+
"docs": {
|
|
3910
|
+
"remarks": "Use this to make use of existing VPC endpoints or to share an endpoint between multiple functions. The VPC endpoint must point to `ec2.InterfaceVpcEndpointAwsService.APIGATEWAY`.\n\nNo other settings are supported when using this option.\n\nAll endpoints will be allowed access, but only the first one will be used as the URL by the runner system for setting up the webhook, and as setup URL.",
|
|
3911
|
+
"stability": "experimental",
|
|
3912
|
+
"summary": "Create a private API Gateway and allow access from the specified VPC endpoints."
|
|
3913
|
+
},
|
|
3914
|
+
"immutable": true,
|
|
3915
|
+
"locationInModule": {
|
|
3916
|
+
"filename": "src/access.ts",
|
|
3917
|
+
"line": 19
|
|
3918
|
+
},
|
|
3919
|
+
"name": "allowedVpcEndpoints",
|
|
3920
|
+
"optional": true,
|
|
3921
|
+
"type": {
|
|
3922
|
+
"collection": {
|
|
3923
|
+
"elementtype": {
|
|
3924
|
+
"fqn": "aws-cdk-lib.aws_ec2.IVpcEndpoint"
|
|
3925
|
+
},
|
|
3926
|
+
"kind": "array"
|
|
3927
|
+
}
|
|
3928
|
+
}
|
|
3906
3929
|
}
|
|
3907
3930
|
],
|
|
3908
3931
|
"symbolId": "src/access:ApiGatewayAccessProps"
|
|
@@ -4635,7 +4658,7 @@
|
|
|
4635
4658
|
},
|
|
4636
4659
|
"locationInModule": {
|
|
4637
4660
|
"filename": "src/providers/codebuild.ts",
|
|
4638
|
-
"line":
|
|
4661
|
+
"line": 220
|
|
4639
4662
|
},
|
|
4640
4663
|
"parameters": [
|
|
4641
4664
|
{
|
|
@@ -4662,7 +4685,7 @@
|
|
|
4662
4685
|
"kind": "class",
|
|
4663
4686
|
"locationInModule": {
|
|
4664
4687
|
"filename": "src/providers/codebuild.ts",
|
|
4665
|
-
"line":
|
|
4688
|
+
"line": 419
|
|
4666
4689
|
},
|
|
4667
4690
|
"name": "CodeBuildRunner",
|
|
4668
4691
|
"symbolId": "src/providers/codebuild:CodeBuildRunner"
|
|
@@ -4756,7 +4779,7 @@
|
|
|
4756
4779
|
},
|
|
4757
4780
|
"locationInModule": {
|
|
4758
4781
|
"filename": "src/providers/codebuild.ts",
|
|
4759
|
-
"line":
|
|
4782
|
+
"line": 220
|
|
4760
4783
|
},
|
|
4761
4784
|
"parameters": [
|
|
4762
4785
|
{
|
|
@@ -4828,45 +4851,6 @@
|
|
|
4828
4851
|
},
|
|
4829
4852
|
"static": true
|
|
4830
4853
|
},
|
|
4831
|
-
{
|
|
4832
|
-
"docs": {
|
|
4833
|
-
"stability": "experimental"
|
|
4834
|
-
},
|
|
4835
|
-
"locationInModule": {
|
|
4836
|
-
"filename": "src/providers/common.ts",
|
|
4837
|
-
"line": 474
|
|
4838
|
-
},
|
|
4839
|
-
"name": "addRetry",
|
|
4840
|
-
"parameters": [
|
|
4841
|
-
{
|
|
4842
|
-
"name": "task",
|
|
4843
|
-
"type": {
|
|
4844
|
-
"union": {
|
|
4845
|
-
"types": [
|
|
4846
|
-
{
|
|
4847
|
-
"fqn": "aws-cdk-lib.aws_stepfunctions.TaskStateBase"
|
|
4848
|
-
},
|
|
4849
|
-
{
|
|
4850
|
-
"fqn": "aws-cdk-lib.aws_stepfunctions.Parallel"
|
|
4851
|
-
}
|
|
4852
|
-
]
|
|
4853
|
-
}
|
|
4854
|
-
}
|
|
4855
|
-
},
|
|
4856
|
-
{
|
|
4857
|
-
"name": "errors",
|
|
4858
|
-
"type": {
|
|
4859
|
-
"collection": {
|
|
4860
|
-
"elementtype": {
|
|
4861
|
-
"primitive": "string"
|
|
4862
|
-
},
|
|
4863
|
-
"kind": "array"
|
|
4864
|
-
}
|
|
4865
|
-
}
|
|
4866
|
-
}
|
|
4867
|
-
],
|
|
4868
|
-
"protected": true
|
|
4869
|
-
},
|
|
4870
4854
|
{
|
|
4871
4855
|
"docs": {
|
|
4872
4856
|
"remarks": "Called by GithubRunners and shouldn't be called manually.",
|
|
@@ -4875,7 +4859,7 @@
|
|
|
4875
4859
|
},
|
|
4876
4860
|
"locationInModule": {
|
|
4877
4861
|
"filename": "src/providers/codebuild.ts",
|
|
4878
|
-
"line":
|
|
4862
|
+
"line": 348
|
|
4879
4863
|
},
|
|
4880
4864
|
"name": "getStepFunctionTask",
|
|
4881
4865
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -4904,7 +4888,7 @@
|
|
|
4904
4888
|
},
|
|
4905
4889
|
"locationInModule": {
|
|
4906
4890
|
"filename": "src/providers/codebuild.ts",
|
|
4907
|
-
"line":
|
|
4891
|
+
"line": 387
|
|
4908
4892
|
},
|
|
4909
4893
|
"name": "grantStateMachine",
|
|
4910
4894
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -4973,7 +4957,7 @@
|
|
|
4973
4957
|
},
|
|
4974
4958
|
"locationInModule": {
|
|
4975
4959
|
"filename": "src/providers/codebuild.ts",
|
|
4976
|
-
"line":
|
|
4960
|
+
"line": 390
|
|
4977
4961
|
},
|
|
4978
4962
|
"name": "status",
|
|
4979
4963
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -5040,7 +5024,7 @@
|
|
|
5040
5024
|
"immutable": true,
|
|
5041
5025
|
"locationInModule": {
|
|
5042
5026
|
"filename": "src/providers/codebuild.ts",
|
|
5043
|
-
"line":
|
|
5027
|
+
"line": 411
|
|
5044
5028
|
},
|
|
5045
5029
|
"name": "connections",
|
|
5046
5030
|
"overrides": "aws-cdk-lib.aws_ec2.IConnectable",
|
|
@@ -5132,6 +5116,27 @@
|
|
|
5132
5116
|
"type": {
|
|
5133
5117
|
"fqn": "aws-cdk-lib.aws_codebuild.Project"
|
|
5134
5118
|
}
|
|
5119
|
+
},
|
|
5120
|
+
{
|
|
5121
|
+
"docs": {
|
|
5122
|
+
"stability": "experimental",
|
|
5123
|
+
"summary": "List of step functions errors that should be retried."
|
|
5124
|
+
},
|
|
5125
|
+
"immutable": true,
|
|
5126
|
+
"locationInModule": {
|
|
5127
|
+
"filename": "src/providers/codebuild.ts",
|
|
5128
|
+
"line": 211
|
|
5129
|
+
},
|
|
5130
|
+
"name": "retryableErrors",
|
|
5131
|
+
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
5132
|
+
"type": {
|
|
5133
|
+
"collection": {
|
|
5134
|
+
"elementtype": {
|
|
5135
|
+
"primitive": "string"
|
|
5136
|
+
},
|
|
5137
|
+
"kind": "array"
|
|
5138
|
+
}
|
|
5139
|
+
}
|
|
5135
5140
|
}
|
|
5136
5141
|
],
|
|
5137
5142
|
"symbolId": "src/providers/codebuild:CodeBuildRunnerProvider"
|
|
@@ -6039,7 +6044,7 @@
|
|
|
6039
6044
|
},
|
|
6040
6045
|
"locationInModule": {
|
|
6041
6046
|
"filename": "src/providers/ec2.ts",
|
|
6042
|
-
"line":
|
|
6047
|
+
"line": 297
|
|
6043
6048
|
},
|
|
6044
6049
|
"parameters": [
|
|
6045
6050
|
{
|
|
@@ -6066,7 +6071,7 @@
|
|
|
6066
6071
|
"kind": "class",
|
|
6067
6072
|
"locationInModule": {
|
|
6068
6073
|
"filename": "src/providers/ec2.ts",
|
|
6069
|
-
"line":
|
|
6074
|
+
"line": 506
|
|
6070
6075
|
},
|
|
6071
6076
|
"name": "Ec2Runner",
|
|
6072
6077
|
"symbolId": "src/providers/ec2:Ec2Runner"
|
|
@@ -6086,7 +6091,7 @@
|
|
|
6086
6091
|
},
|
|
6087
6092
|
"locationInModule": {
|
|
6088
6093
|
"filename": "src/providers/ec2.ts",
|
|
6089
|
-
"line":
|
|
6094
|
+
"line": 297
|
|
6090
6095
|
},
|
|
6091
6096
|
"parameters": [
|
|
6092
6097
|
{
|
|
@@ -6158,45 +6163,6 @@
|
|
|
6158
6163
|
},
|
|
6159
6164
|
"static": true
|
|
6160
6165
|
},
|
|
6161
|
-
{
|
|
6162
|
-
"docs": {
|
|
6163
|
-
"stability": "experimental"
|
|
6164
|
-
},
|
|
6165
|
-
"locationInModule": {
|
|
6166
|
-
"filename": "src/providers/common.ts",
|
|
6167
|
-
"line": 474
|
|
6168
|
-
},
|
|
6169
|
-
"name": "addRetry",
|
|
6170
|
-
"parameters": [
|
|
6171
|
-
{
|
|
6172
|
-
"name": "task",
|
|
6173
|
-
"type": {
|
|
6174
|
-
"union": {
|
|
6175
|
-
"types": [
|
|
6176
|
-
{
|
|
6177
|
-
"fqn": "aws-cdk-lib.aws_stepfunctions.TaskStateBase"
|
|
6178
|
-
},
|
|
6179
|
-
{
|
|
6180
|
-
"fqn": "aws-cdk-lib.aws_stepfunctions.Parallel"
|
|
6181
|
-
}
|
|
6182
|
-
]
|
|
6183
|
-
}
|
|
6184
|
-
}
|
|
6185
|
-
},
|
|
6186
|
-
{
|
|
6187
|
-
"name": "errors",
|
|
6188
|
-
"type": {
|
|
6189
|
-
"collection": {
|
|
6190
|
-
"elementtype": {
|
|
6191
|
-
"primitive": "string"
|
|
6192
|
-
},
|
|
6193
|
-
"kind": "array"
|
|
6194
|
-
}
|
|
6195
|
-
}
|
|
6196
|
-
}
|
|
6197
|
-
],
|
|
6198
|
-
"protected": true
|
|
6199
|
-
},
|
|
6200
6166
|
{
|
|
6201
6167
|
"docs": {
|
|
6202
6168
|
"remarks": "Called by GithubRunners and shouldn't be called manually.",
|
|
@@ -6205,7 +6171,7 @@
|
|
|
6205
6171
|
},
|
|
6206
6172
|
"locationInModule": {
|
|
6207
6173
|
"filename": "src/providers/ec2.ts",
|
|
6208
|
-
"line":
|
|
6174
|
+
"line": 349
|
|
6209
6175
|
},
|
|
6210
6176
|
"name": "getStepFunctionTask",
|
|
6211
6177
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -6234,7 +6200,7 @@
|
|
|
6234
6200
|
},
|
|
6235
6201
|
"locationInModule": {
|
|
6236
6202
|
"filename": "src/providers/ec2.ts",
|
|
6237
|
-
"line":
|
|
6203
|
+
"line": 446
|
|
6238
6204
|
},
|
|
6239
6205
|
"name": "grantStateMachine",
|
|
6240
6206
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -6303,7 +6269,7 @@
|
|
|
6303
6269
|
},
|
|
6304
6270
|
"locationInModule": {
|
|
6305
6271
|
"filename": "src/providers/ec2.ts",
|
|
6306
|
-
"line":
|
|
6272
|
+
"line": 476
|
|
6307
6273
|
},
|
|
6308
6274
|
"name": "status",
|
|
6309
6275
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -6332,7 +6298,7 @@
|
|
|
6332
6298
|
"immutable": true,
|
|
6333
6299
|
"locationInModule": {
|
|
6334
6300
|
"filename": "src/providers/ec2.ts",
|
|
6335
|
-
"line":
|
|
6301
|
+
"line": 498
|
|
6336
6302
|
},
|
|
6337
6303
|
"name": "connections",
|
|
6338
6304
|
"overrides": "aws-cdk-lib.aws_ec2.IConnectable",
|
|
@@ -6393,6 +6359,27 @@
|
|
|
6393
6359
|
"type": {
|
|
6394
6360
|
"fqn": "aws-cdk-lib.aws_logs.ILogGroup"
|
|
6395
6361
|
}
|
|
6362
|
+
},
|
|
6363
|
+
{
|
|
6364
|
+
"docs": {
|
|
6365
|
+
"stability": "experimental",
|
|
6366
|
+
"summary": "List of step functions errors that should be retried."
|
|
6367
|
+
},
|
|
6368
|
+
"immutable": true,
|
|
6369
|
+
"locationInModule": {
|
|
6370
|
+
"filename": "src/providers/ec2.ts",
|
|
6371
|
+
"line": 282
|
|
6372
|
+
},
|
|
6373
|
+
"name": "retryableErrors",
|
|
6374
|
+
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
6375
|
+
"type": {
|
|
6376
|
+
"collection": {
|
|
6377
|
+
"elementtype": {
|
|
6378
|
+
"primitive": "string"
|
|
6379
|
+
},
|
|
6380
|
+
"kind": "array"
|
|
6381
|
+
}
|
|
6382
|
+
}
|
|
6396
6383
|
}
|
|
6397
6384
|
],
|
|
6398
6385
|
"symbolId": "src/providers/ec2:Ec2RunnerProvider"
|
|
@@ -6665,7 +6652,7 @@
|
|
|
6665
6652
|
},
|
|
6666
6653
|
"locationInModule": {
|
|
6667
6654
|
"filename": "src/providers/ecs.ts",
|
|
6668
|
-
"line":
|
|
6655
|
+
"line": 307
|
|
6669
6656
|
},
|
|
6670
6657
|
"parameters": [
|
|
6671
6658
|
{
|
|
@@ -6737,45 +6724,6 @@
|
|
|
6737
6724
|
},
|
|
6738
6725
|
"static": true
|
|
6739
6726
|
},
|
|
6740
|
-
{
|
|
6741
|
-
"docs": {
|
|
6742
|
-
"stability": "experimental"
|
|
6743
|
-
},
|
|
6744
|
-
"locationInModule": {
|
|
6745
|
-
"filename": "src/providers/common.ts",
|
|
6746
|
-
"line": 474
|
|
6747
|
-
},
|
|
6748
|
-
"name": "addRetry",
|
|
6749
|
-
"parameters": [
|
|
6750
|
-
{
|
|
6751
|
-
"name": "task",
|
|
6752
|
-
"type": {
|
|
6753
|
-
"union": {
|
|
6754
|
-
"types": [
|
|
6755
|
-
{
|
|
6756
|
-
"fqn": "aws-cdk-lib.aws_stepfunctions.TaskStateBase"
|
|
6757
|
-
},
|
|
6758
|
-
{
|
|
6759
|
-
"fqn": "aws-cdk-lib.aws_stepfunctions.Parallel"
|
|
6760
|
-
}
|
|
6761
|
-
]
|
|
6762
|
-
}
|
|
6763
|
-
}
|
|
6764
|
-
},
|
|
6765
|
-
{
|
|
6766
|
-
"name": "errors",
|
|
6767
|
-
"type": {
|
|
6768
|
-
"collection": {
|
|
6769
|
-
"elementtype": {
|
|
6770
|
-
"primitive": "string"
|
|
6771
|
-
},
|
|
6772
|
-
"kind": "array"
|
|
6773
|
-
}
|
|
6774
|
-
}
|
|
6775
|
-
}
|
|
6776
|
-
],
|
|
6777
|
-
"protected": true
|
|
6778
|
-
},
|
|
6779
6727
|
{
|
|
6780
6728
|
"docs": {
|
|
6781
6729
|
"remarks": "Called by GithubRunners and shouldn't be called manually.",
|
|
@@ -6784,7 +6732,7 @@
|
|
|
6784
6732
|
},
|
|
6785
6733
|
"locationInModule": {
|
|
6786
6734
|
"filename": "src/providers/ecs.ts",
|
|
6787
|
-
"line":
|
|
6735
|
+
"line": 503
|
|
6788
6736
|
},
|
|
6789
6737
|
"name": "getStepFunctionTask",
|
|
6790
6738
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -6813,7 +6761,7 @@
|
|
|
6813
6761
|
},
|
|
6814
6762
|
"locationInModule": {
|
|
6815
6763
|
"filename": "src/providers/ecs.ts",
|
|
6816
|
-
"line":
|
|
6764
|
+
"line": 550
|
|
6817
6765
|
},
|
|
6818
6766
|
"name": "grantStateMachine",
|
|
6819
6767
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -6882,7 +6830,7 @@
|
|
|
6882
6830
|
},
|
|
6883
6831
|
"locationInModule": {
|
|
6884
6832
|
"filename": "src/providers/ecs.ts",
|
|
6885
|
-
"line":
|
|
6833
|
+
"line": 553
|
|
6886
6834
|
},
|
|
6887
6835
|
"name": "status",
|
|
6888
6836
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -6972,6 +6920,27 @@
|
|
|
6972
6920
|
"type": {
|
|
6973
6921
|
"fqn": "aws-cdk-lib.aws_logs.ILogGroup"
|
|
6974
6922
|
}
|
|
6923
|
+
},
|
|
6924
|
+
{
|
|
6925
|
+
"docs": {
|
|
6926
|
+
"stability": "experimental",
|
|
6927
|
+
"summary": "List of step functions errors that should be retried."
|
|
6928
|
+
},
|
|
6929
|
+
"immutable": true,
|
|
6930
|
+
"locationInModule": {
|
|
6931
|
+
"filename": "src/providers/ecs.ts",
|
|
6932
|
+
"line": 301
|
|
6933
|
+
},
|
|
6934
|
+
"name": "retryableErrors",
|
|
6935
|
+
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
6936
|
+
"type": {
|
|
6937
|
+
"collection": {
|
|
6938
|
+
"elementtype": {
|
|
6939
|
+
"primitive": "string"
|
|
6940
|
+
},
|
|
6941
|
+
"kind": "array"
|
|
6942
|
+
}
|
|
6943
|
+
}
|
|
6975
6944
|
}
|
|
6976
6945
|
],
|
|
6977
6946
|
"symbolId": "src/providers/ecs:EcsRunnerProvider"
|
|
@@ -7335,7 +7304,7 @@
|
|
|
7335
7304
|
},
|
|
7336
7305
|
"locationInModule": {
|
|
7337
7306
|
"filename": "src/providers/fargate.ts",
|
|
7338
|
-
"line":
|
|
7307
|
+
"line": 362
|
|
7339
7308
|
},
|
|
7340
7309
|
"parameters": [
|
|
7341
7310
|
{
|
|
@@ -7362,7 +7331,7 @@
|
|
|
7362
7331
|
"kind": "class",
|
|
7363
7332
|
"locationInModule": {
|
|
7364
7333
|
"filename": "src/providers/fargate.ts",
|
|
7365
|
-
"line":
|
|
7334
|
+
"line": 523
|
|
7366
7335
|
},
|
|
7367
7336
|
"name": "FargateRunner",
|
|
7368
7337
|
"symbolId": "src/providers/fargate:FargateRunner"
|
|
@@ -7382,7 +7351,7 @@
|
|
|
7382
7351
|
},
|
|
7383
7352
|
"locationInModule": {
|
|
7384
7353
|
"filename": "src/providers/fargate.ts",
|
|
7385
|
-
"line":
|
|
7354
|
+
"line": 362
|
|
7386
7355
|
},
|
|
7387
7356
|
"parameters": [
|
|
7388
7357
|
{
|
|
@@ -7454,45 +7423,6 @@
|
|
|
7454
7423
|
},
|
|
7455
7424
|
"static": true
|
|
7456
7425
|
},
|
|
7457
|
-
{
|
|
7458
|
-
"docs": {
|
|
7459
|
-
"stability": "experimental"
|
|
7460
|
-
},
|
|
7461
|
-
"locationInModule": {
|
|
7462
|
-
"filename": "src/providers/common.ts",
|
|
7463
|
-
"line": 474
|
|
7464
|
-
},
|
|
7465
|
-
"name": "addRetry",
|
|
7466
|
-
"parameters": [
|
|
7467
|
-
{
|
|
7468
|
-
"name": "task",
|
|
7469
|
-
"type": {
|
|
7470
|
-
"union": {
|
|
7471
|
-
"types": [
|
|
7472
|
-
{
|
|
7473
|
-
"fqn": "aws-cdk-lib.aws_stepfunctions.TaskStateBase"
|
|
7474
|
-
},
|
|
7475
|
-
{
|
|
7476
|
-
"fqn": "aws-cdk-lib.aws_stepfunctions.Parallel"
|
|
7477
|
-
}
|
|
7478
|
-
]
|
|
7479
|
-
}
|
|
7480
|
-
}
|
|
7481
|
-
},
|
|
7482
|
-
{
|
|
7483
|
-
"name": "errors",
|
|
7484
|
-
"type": {
|
|
7485
|
-
"collection": {
|
|
7486
|
-
"elementtype": {
|
|
7487
|
-
"primitive": "string"
|
|
7488
|
-
},
|
|
7489
|
-
"kind": "array"
|
|
7490
|
-
}
|
|
7491
|
-
}
|
|
7492
|
-
}
|
|
7493
|
-
],
|
|
7494
|
-
"protected": true
|
|
7495
|
-
},
|
|
7496
7426
|
{
|
|
7497
7427
|
"docs": {
|
|
7498
7428
|
"remarks": "Called by GithubRunners and shouldn't be called manually.",
|
|
@@ -7501,7 +7431,7 @@
|
|
|
7501
7431
|
},
|
|
7502
7432
|
"locationInModule": {
|
|
7503
7433
|
"filename": "src/providers/fargate.ts",
|
|
7504
|
-
"line":
|
|
7434
|
+
"line": 446
|
|
7505
7435
|
},
|
|
7506
7436
|
"name": "getStepFunctionTask",
|
|
7507
7437
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -7530,7 +7460,7 @@
|
|
|
7530
7460
|
},
|
|
7531
7461
|
"locationInModule": {
|
|
7532
7462
|
"filename": "src/providers/fargate.ts",
|
|
7533
|
-
"line":
|
|
7463
|
+
"line": 498
|
|
7534
7464
|
},
|
|
7535
7465
|
"name": "grantStateMachine",
|
|
7536
7466
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -7599,7 +7529,7 @@
|
|
|
7599
7529
|
},
|
|
7600
7530
|
"locationInModule": {
|
|
7601
7531
|
"filename": "src/providers/fargate.ts",
|
|
7602
|
-
"line":
|
|
7532
|
+
"line": 501
|
|
7603
7533
|
},
|
|
7604
7534
|
"name": "status",
|
|
7605
7535
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -7789,6 +7719,27 @@
|
|
|
7789
7719
|
"fqn": "aws-cdk-lib.aws_logs.ILogGroup"
|
|
7790
7720
|
}
|
|
7791
7721
|
},
|
|
7722
|
+
{
|
|
7723
|
+
"docs": {
|
|
7724
|
+
"stability": "experimental",
|
|
7725
|
+
"summary": "List of step functions errors that should be retried."
|
|
7726
|
+
},
|
|
7727
|
+
"immutable": true,
|
|
7728
|
+
"locationInModule": {
|
|
7729
|
+
"filename": "src/providers/fargate.ts",
|
|
7730
|
+
"line": 354
|
|
7731
|
+
},
|
|
7732
|
+
"name": "retryableErrors",
|
|
7733
|
+
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
7734
|
+
"type": {
|
|
7735
|
+
"collection": {
|
|
7736
|
+
"elementtype": {
|
|
7737
|
+
"primitive": "string"
|
|
7738
|
+
},
|
|
7739
|
+
"kind": "array"
|
|
7740
|
+
}
|
|
7741
|
+
}
|
|
7742
|
+
},
|
|
7792
7743
|
{
|
|
7793
7744
|
"docs": {
|
|
7794
7745
|
"stability": "experimental",
|
|
@@ -8143,7 +8094,7 @@
|
|
|
8143
8094
|
},
|
|
8144
8095
|
"locationInModule": {
|
|
8145
8096
|
"filename": "src/runner.ts",
|
|
8146
|
-
"line":
|
|
8097
|
+
"line": 246
|
|
8147
8098
|
},
|
|
8148
8099
|
"parameters": [
|
|
8149
8100
|
{
|
|
@@ -8170,7 +8121,7 @@
|
|
|
8170
8121
|
"kind": "class",
|
|
8171
8122
|
"locationInModule": {
|
|
8172
8123
|
"filename": "src/runner.ts",
|
|
8173
|
-
"line":
|
|
8124
|
+
"line": 227
|
|
8174
8125
|
},
|
|
8175
8126
|
"methods": [
|
|
8176
8127
|
{
|
|
@@ -8181,7 +8132,7 @@
|
|
|
8181
8132
|
},
|
|
8182
8133
|
"locationInModule": {
|
|
8183
8134
|
"filename": "src/runner.ts",
|
|
8184
|
-
"line":
|
|
8135
|
+
"line": 696
|
|
8185
8136
|
},
|
|
8186
8137
|
"name": "failedImageBuildsTopic",
|
|
8187
8138
|
"returns": {
|
|
@@ -8198,7 +8149,7 @@
|
|
|
8198
8149
|
},
|
|
8199
8150
|
"locationInModule": {
|
|
8200
8151
|
"filename": "src/runner.ts",
|
|
8201
|
-
"line":
|
|
8152
|
+
"line": 678
|
|
8202
8153
|
},
|
|
8203
8154
|
"name": "metricFailed",
|
|
8204
8155
|
"parameters": [
|
|
@@ -8224,7 +8175,7 @@
|
|
|
8224
8175
|
},
|
|
8225
8176
|
"locationInModule": {
|
|
8226
8177
|
"filename": "src/runner.ts",
|
|
8227
|
-
"line":
|
|
8178
|
+
"line": 623
|
|
8228
8179
|
},
|
|
8229
8180
|
"name": "metricJobCompleted",
|
|
8230
8181
|
"parameters": [
|
|
@@ -8250,7 +8201,7 @@
|
|
|
8250
8201
|
},
|
|
8251
8202
|
"locationInModule": {
|
|
8252
8203
|
"filename": "src/runner.ts",
|
|
8253
|
-
"line":
|
|
8204
|
+
"line": 669
|
|
8254
8205
|
},
|
|
8255
8206
|
"name": "metricSucceeded",
|
|
8256
8207
|
"parameters": [
|
|
@@ -8276,7 +8227,7 @@
|
|
|
8276
8227
|
},
|
|
8277
8228
|
"locationInModule": {
|
|
8278
8229
|
"filename": "src/runner.ts",
|
|
8279
|
-
"line":
|
|
8230
|
+
"line": 685
|
|
8280
8231
|
},
|
|
8281
8232
|
"name": "metricTime",
|
|
8282
8233
|
"parameters": [
|
|
@@ -8305,7 +8256,7 @@
|
|
|
8305
8256
|
"immutable": true,
|
|
8306
8257
|
"locationInModule": {
|
|
8307
8258
|
"filename": "src/runner.ts",
|
|
8308
|
-
"line":
|
|
8259
|
+
"line": 231
|
|
8309
8260
|
},
|
|
8310
8261
|
"name": "providers",
|
|
8311
8262
|
"type": {
|
|
@@ -8325,7 +8276,7 @@
|
|
|
8325
8276
|
"immutable": true,
|
|
8326
8277
|
"locationInModule": {
|
|
8327
8278
|
"filename": "src/runner.ts",
|
|
8328
|
-
"line":
|
|
8279
|
+
"line": 236
|
|
8329
8280
|
},
|
|
8330
8281
|
"name": "secrets",
|
|
8331
8282
|
"type": {
|
|
@@ -8339,7 +8290,7 @@
|
|
|
8339
8290
|
"immutable": true,
|
|
8340
8291
|
"locationInModule": {
|
|
8341
8292
|
"filename": "src/runner.ts",
|
|
8342
|
-
"line":
|
|
8293
|
+
"line": 246
|
|
8343
8294
|
},
|
|
8344
8295
|
"name": "props",
|
|
8345
8296
|
"optional": true,
|
|
@@ -8361,7 +8312,7 @@
|
|
|
8361
8312
|
"kind": "interface",
|
|
8362
8313
|
"locationInModule": {
|
|
8363
8314
|
"filename": "src/runner.ts",
|
|
8364
|
-
"line":
|
|
8315
|
+
"line": 38
|
|
8365
8316
|
},
|
|
8366
8317
|
"name": "GitHubRunnersProps",
|
|
8367
8318
|
"properties": [
|
|
@@ -8376,7 +8327,7 @@
|
|
|
8376
8327
|
"immutable": true,
|
|
8377
8328
|
"locationInModule": {
|
|
8378
8329
|
"filename": "src/runner.ts",
|
|
8379
|
-
"line":
|
|
8330
|
+
"line": 70
|
|
8380
8331
|
},
|
|
8381
8332
|
"name": "allowPublicSubnet",
|
|
8382
8333
|
"optional": true,
|
|
@@ -8394,7 +8345,7 @@
|
|
|
8394
8345
|
"immutable": true,
|
|
8395
8346
|
"locationInModule": {
|
|
8396
8347
|
"filename": "src/runner.ts",
|
|
8397
|
-
"line":
|
|
8348
|
+
"line": 100
|
|
8398
8349
|
},
|
|
8399
8350
|
"name": "extraCertificates",
|
|
8400
8351
|
"optional": true,
|
|
@@ -8405,7 +8356,7 @@
|
|
|
8405
8356
|
{
|
|
8406
8357
|
"abstract": true,
|
|
8407
8358
|
"docs": {
|
|
8408
|
-
"default": "
|
|
8359
|
+
"default": "5 minutes",
|
|
8409
8360
|
"remarks": "If the user cancelled the job, or if another runner stole it, this stops the runner to avoid wasting resources.",
|
|
8410
8361
|
"stability": "experimental",
|
|
8411
8362
|
"summary": "Time to wait before stopping a runner that remains idle."
|
|
@@ -8413,7 +8364,7 @@
|
|
|
8413
8364
|
"immutable": true,
|
|
8414
8365
|
"locationInModule": {
|
|
8415
8366
|
"filename": "src/runner.ts",
|
|
8416
|
-
"line":
|
|
8367
|
+
"line": 107
|
|
8417
8368
|
},
|
|
8418
8369
|
"name": "idleTimeout",
|
|
8419
8370
|
"optional": true,
|
|
@@ -8431,7 +8382,7 @@
|
|
|
8431
8382
|
"immutable": true,
|
|
8432
8383
|
"locationInModule": {
|
|
8433
8384
|
"filename": "src/runner.ts",
|
|
8434
|
-
"line":
|
|
8385
|
+
"line": 114
|
|
8435
8386
|
},
|
|
8436
8387
|
"name": "logOptions",
|
|
8437
8388
|
"optional": true,
|
|
@@ -8450,7 +8401,7 @@
|
|
|
8450
8401
|
"immutable": true,
|
|
8451
8402
|
"locationInModule": {
|
|
8452
8403
|
"filename": "src/runner.ts",
|
|
8453
|
-
"line":
|
|
8404
|
+
"line": 44
|
|
8454
8405
|
},
|
|
8455
8406
|
"name": "providers",
|
|
8456
8407
|
"optional": true,
|
|
@@ -8463,6 +8414,25 @@
|
|
|
8463
8414
|
}
|
|
8464
8415
|
}
|
|
8465
8416
|
},
|
|
8417
|
+
{
|
|
8418
|
+
"abstract": true,
|
|
8419
|
+
"docs": {
|
|
8420
|
+
"default": "retry 23 times up to about 24 hours",
|
|
8421
|
+
"remarks": "GitHub jobs time out after not being able to get a runner for 24 hours. You should not retry for more than 24 hours.\n\nTotal time spent waiting can be calculated with interval * (backoffRate ^ maxAttempts) / (backoffRate - 1).",
|
|
8422
|
+
"stability": "experimental",
|
|
8423
|
+
"summary": "Options to retry operation in case of failure like missing capacity, or API quota issues."
|
|
8424
|
+
},
|
|
8425
|
+
"immutable": true,
|
|
8426
|
+
"locationInModule": {
|
|
8427
|
+
"filename": "src/runner.ts",
|
|
8428
|
+
"line": 151
|
|
8429
|
+
},
|
|
8430
|
+
"name": "retryOptions",
|
|
8431
|
+
"optional": true,
|
|
8432
|
+
"type": {
|
|
8433
|
+
"fqn": "@cloudsnorkel/cdk-github-runners.ProviderRetryOptions"
|
|
8434
|
+
}
|
|
8435
|
+
},
|
|
8466
8436
|
{
|
|
8467
8437
|
"abstract": true,
|
|
8468
8438
|
"docs": {
|
|
@@ -8473,7 +8443,7 @@
|
|
|
8473
8443
|
"immutable": true,
|
|
8474
8444
|
"locationInModule": {
|
|
8475
8445
|
"filename": "src/runner.ts",
|
|
8476
|
-
"line":
|
|
8446
|
+
"line": 75
|
|
8477
8447
|
},
|
|
8478
8448
|
"name": "securityGroup",
|
|
8479
8449
|
"optional": true,
|
|
@@ -8492,7 +8462,7 @@
|
|
|
8492
8462
|
"immutable": true,
|
|
8493
8463
|
"locationInModule": {
|
|
8494
8464
|
"filename": "src/runner.ts",
|
|
8495
|
-
"line":
|
|
8465
|
+
"line": 121
|
|
8496
8466
|
},
|
|
8497
8467
|
"name": "setupAccess",
|
|
8498
8468
|
"optional": true,
|
|
@@ -8511,7 +8481,7 @@
|
|
|
8511
8481
|
"immutable": true,
|
|
8512
8482
|
"locationInModule": {
|
|
8513
8483
|
"filename": "src/runner.ts",
|
|
8514
|
-
"line":
|
|
8484
|
+
"line": 140
|
|
8515
8485
|
},
|
|
8516
8486
|
"name": "statusAccess",
|
|
8517
8487
|
"optional": true,
|
|
@@ -8522,14 +8492,14 @@
|
|
|
8522
8492
|
{
|
|
8523
8493
|
"abstract": true,
|
|
8524
8494
|
"docs": {
|
|
8525
|
-
"remarks": "
|
|
8495
|
+
"remarks": "Make sure the selected VPC and subnets have access to the following with either NAT Gateway or VPC Endpoints:\n* GitHub Enterprise Server\n* Secrets Manager\n* SQS\n* Step Functions\n* CloudFormation (status function only)\n* EC2 (status function only)\n* ECR (status function only)",
|
|
8526
8496
|
"stability": "experimental",
|
|
8527
|
-
"summary": "VPC used for all management functions."
|
|
8497
|
+
"summary": "VPC used for all management functions. Use this with GitHub Enterprise Server hosted that's inaccessible from outside the VPC."
|
|
8528
8498
|
},
|
|
8529
8499
|
"immutable": true,
|
|
8530
8500
|
"locationInModule": {
|
|
8531
8501
|
"filename": "src/runner.ts",
|
|
8532
|
-
"line":
|
|
8502
|
+
"line": 58
|
|
8533
8503
|
},
|
|
8534
8504
|
"name": "vpc",
|
|
8535
8505
|
"optional": true,
|
|
@@ -8547,7 +8517,7 @@
|
|
|
8547
8517
|
"immutable": true,
|
|
8548
8518
|
"locationInModule": {
|
|
8549
8519
|
"filename": "src/runner.ts",
|
|
8550
|
-
"line":
|
|
8520
|
+
"line": 63
|
|
8551
8521
|
},
|
|
8552
8522
|
"name": "vpcSubnets",
|
|
8553
8523
|
"optional": true,
|
|
@@ -8559,14 +8529,14 @@
|
|
|
8559
8529
|
"abstract": true,
|
|
8560
8530
|
"docs": {
|
|
8561
8531
|
"default": "LambdaAccess.lambdaUrl()",
|
|
8562
|
-
"remarks": "This function is called by GitHub when a new workflow job is scheduled. For an extra layer of security, you can set this to `LambdaAccess.apiGateway({ allowedIps: LambdaAccess.githubWebhookIps() })`.\n\nYou can also set this to `LambdaAccess.
|
|
8532
|
+
"remarks": "This function is called by GitHub when a new workflow job is scheduled. For an extra layer of security, you can set this to `LambdaAccess.apiGateway({ allowedIps: LambdaAccess.githubWebhookIps() })`.\n\nYou can also set this to `LambdaAccess.apiGateway({allowedVpc: vpc, allowedIps: ['GHES.IP.ADDRESS/32']})` if your GitHub Enterprise Server is hosted in a VPC. This will create an API Gateway endpoint that's only accessible from within the VPC.\n\n*WARNING*: changing access type may change the URL. When the URL changes, you must update GitHub as well.",
|
|
8563
8533
|
"stability": "experimental",
|
|
8564
8534
|
"summary": "Access configuration for the webhook function."
|
|
8565
8535
|
},
|
|
8566
8536
|
"immutable": true,
|
|
8567
8537
|
"locationInModule": {
|
|
8568
8538
|
"filename": "src/runner.ts",
|
|
8569
|
-
"line":
|
|
8539
|
+
"line": 133
|
|
8570
8540
|
},
|
|
8571
8541
|
"name": "webhookAccess",
|
|
8572
8542
|
"optional": true,
|
|
@@ -8587,7 +8557,7 @@
|
|
|
8587
8557
|
"kind": "interface",
|
|
8588
8558
|
"locationInModule": {
|
|
8589
8559
|
"filename": "src/providers/common.ts",
|
|
8590
|
-
"line":
|
|
8560
|
+
"line": 343
|
|
8591
8561
|
},
|
|
8592
8562
|
"name": "IRunnerAmiStatus",
|
|
8593
8563
|
"properties": [
|
|
@@ -8600,7 +8570,7 @@
|
|
|
8600
8570
|
"immutable": true,
|
|
8601
8571
|
"locationInModule": {
|
|
8602
8572
|
"filename": "src/providers/common.ts",
|
|
8603
|
-
"line":
|
|
8573
|
+
"line": 347
|
|
8604
8574
|
},
|
|
8605
8575
|
"name": "launchTemplate",
|
|
8606
8576
|
"type": {
|
|
@@ -8616,7 +8586,7 @@
|
|
|
8616
8586
|
"immutable": true,
|
|
8617
8587
|
"locationInModule": {
|
|
8618
8588
|
"filename": "src/providers/common.ts",
|
|
8619
|
-
"line":
|
|
8589
|
+
"line": 352
|
|
8620
8590
|
},
|
|
8621
8591
|
"name": "amiBuilderLogGroup",
|
|
8622
8592
|
"optional": true,
|
|
@@ -8691,7 +8661,7 @@
|
|
|
8691
8661
|
"kind": "interface",
|
|
8692
8662
|
"locationInModule": {
|
|
8693
8663
|
"filename": "src/providers/common.ts",
|
|
8694
|
-
"line":
|
|
8664
|
+
"line": 323
|
|
8695
8665
|
},
|
|
8696
8666
|
"name": "IRunnerImageStatus",
|
|
8697
8667
|
"properties": [
|
|
@@ -8704,7 +8674,7 @@
|
|
|
8704
8674
|
"immutable": true,
|
|
8705
8675
|
"locationInModule": {
|
|
8706
8676
|
"filename": "src/providers/common.ts",
|
|
8707
|
-
"line":
|
|
8677
|
+
"line": 327
|
|
8708
8678
|
},
|
|
8709
8679
|
"name": "imageRepository",
|
|
8710
8680
|
"type": {
|
|
@@ -8720,7 +8690,7 @@
|
|
|
8720
8690
|
"immutable": true,
|
|
8721
8691
|
"locationInModule": {
|
|
8722
8692
|
"filename": "src/providers/common.ts",
|
|
8723
|
-
"line":
|
|
8693
|
+
"line": 332
|
|
8724
8694
|
},
|
|
8725
8695
|
"name": "imageTag",
|
|
8726
8696
|
"type": {
|
|
@@ -8736,7 +8706,7 @@
|
|
|
8736
8706
|
"immutable": true,
|
|
8737
8707
|
"locationInModule": {
|
|
8738
8708
|
"filename": "src/providers/common.ts",
|
|
8739
|
-
"line":
|
|
8709
|
+
"line": 337
|
|
8740
8710
|
},
|
|
8741
8711
|
"name": "imageBuilderLogGroup",
|
|
8742
8712
|
"optional": true,
|
|
@@ -8763,7 +8733,7 @@
|
|
|
8763
8733
|
"kind": "interface",
|
|
8764
8734
|
"locationInModule": {
|
|
8765
8735
|
"filename": "src/providers/common.ts",
|
|
8766
|
-
"line":
|
|
8736
|
+
"line": 403
|
|
8767
8737
|
},
|
|
8768
8738
|
"methods": [
|
|
8769
8739
|
{
|
|
@@ -8775,7 +8745,7 @@
|
|
|
8775
8745
|
},
|
|
8776
8746
|
"locationInModule": {
|
|
8777
8747
|
"filename": "src/providers/common.ts",
|
|
8778
|
-
"line":
|
|
8748
|
+
"line": 432
|
|
8779
8749
|
},
|
|
8780
8750
|
"name": "getStepFunctionTask",
|
|
8781
8751
|
"parameters": [
|
|
@@ -8804,7 +8774,7 @@
|
|
|
8804
8774
|
},
|
|
8805
8775
|
"locationInModule": {
|
|
8806
8776
|
"filename": "src/providers/common.ts",
|
|
8807
|
-
"line":
|
|
8777
|
+
"line": 440
|
|
8808
8778
|
},
|
|
8809
8779
|
"name": "grantStateMachine",
|
|
8810
8780
|
"parameters": [
|
|
@@ -8828,7 +8798,7 @@
|
|
|
8828
8798
|
},
|
|
8829
8799
|
"locationInModule": {
|
|
8830
8800
|
"filename": "src/providers/common.ts",
|
|
8831
|
-
"line":
|
|
8801
|
+
"line": 447
|
|
8832
8802
|
},
|
|
8833
8803
|
"name": "status",
|
|
8834
8804
|
"parameters": [
|
|
@@ -8861,7 +8831,7 @@
|
|
|
8861
8831
|
"immutable": true,
|
|
8862
8832
|
"locationInModule": {
|
|
8863
8833
|
"filename": "src/providers/common.ts",
|
|
8864
|
-
"line":
|
|
8834
|
+
"line": 411
|
|
8865
8835
|
},
|
|
8866
8836
|
"name": "labels",
|
|
8867
8837
|
"type": {
|
|
@@ -8883,12 +8853,33 @@
|
|
|
8883
8853
|
"immutable": true,
|
|
8884
8854
|
"locationInModule": {
|
|
8885
8855
|
"filename": "src/providers/common.ts",
|
|
8886
|
-
"line":
|
|
8856
|
+
"line": 418
|
|
8887
8857
|
},
|
|
8888
8858
|
"name": "logGroup",
|
|
8889
8859
|
"type": {
|
|
8890
8860
|
"fqn": "aws-cdk-lib.aws_logs.ILogGroup"
|
|
8891
8861
|
}
|
|
8862
|
+
},
|
|
8863
|
+
{
|
|
8864
|
+
"abstract": true,
|
|
8865
|
+
"docs": {
|
|
8866
|
+
"stability": "experimental",
|
|
8867
|
+
"summary": "List of step functions errors that should be retried."
|
|
8868
|
+
},
|
|
8869
|
+
"immutable": true,
|
|
8870
|
+
"locationInModule": {
|
|
8871
|
+
"filename": "src/providers/common.ts",
|
|
8872
|
+
"line": 423
|
|
8873
|
+
},
|
|
8874
|
+
"name": "retryableErrors",
|
|
8875
|
+
"type": {
|
|
8876
|
+
"collection": {
|
|
8877
|
+
"elementtype": {
|
|
8878
|
+
"primitive": "string"
|
|
8879
|
+
},
|
|
8880
|
+
"kind": "array"
|
|
8881
|
+
}
|
|
8882
|
+
}
|
|
8892
8883
|
}
|
|
8893
8884
|
],
|
|
8894
8885
|
"symbolId": "src/providers/common:IRunnerProvider"
|
|
@@ -8903,7 +8894,7 @@
|
|
|
8903
8894
|
"kind": "interface",
|
|
8904
8895
|
"locationInModule": {
|
|
8905
8896
|
"filename": "src/providers/common.ts",
|
|
8906
|
-
"line":
|
|
8897
|
+
"line": 358
|
|
8907
8898
|
},
|
|
8908
8899
|
"name": "IRunnerProviderStatus",
|
|
8909
8900
|
"properties": [
|
|
@@ -8916,7 +8907,7 @@
|
|
|
8916
8907
|
"immutable": true,
|
|
8917
8908
|
"locationInModule": {
|
|
8918
8909
|
"filename": "src/providers/common.ts",
|
|
8919
|
-
"line":
|
|
8910
|
+
"line": 367
|
|
8920
8911
|
},
|
|
8921
8912
|
"name": "labels",
|
|
8922
8913
|
"type": {
|
|
@@ -8937,7 +8928,7 @@
|
|
|
8937
8928
|
"immutable": true,
|
|
8938
8929
|
"locationInModule": {
|
|
8939
8930
|
"filename": "src/providers/common.ts",
|
|
8940
|
-
"line":
|
|
8931
|
+
"line": 362
|
|
8941
8932
|
},
|
|
8942
8933
|
"name": "type",
|
|
8943
8934
|
"type": {
|
|
@@ -8953,7 +8944,7 @@
|
|
|
8953
8944
|
"immutable": true,
|
|
8954
8945
|
"locationInModule": {
|
|
8955
8946
|
"filename": "src/providers/common.ts",
|
|
8956
|
-
"line":
|
|
8947
|
+
"line": 392
|
|
8957
8948
|
},
|
|
8958
8949
|
"name": "ami",
|
|
8959
8950
|
"optional": true,
|
|
@@ -8970,7 +8961,7 @@
|
|
|
8970
8961
|
"immutable": true,
|
|
8971
8962
|
"locationInModule": {
|
|
8972
8963
|
"filename": "src/providers/common.ts",
|
|
8973
|
-
"line":
|
|
8964
|
+
"line": 387
|
|
8974
8965
|
},
|
|
8975
8966
|
"name": "image",
|
|
8976
8967
|
"optional": true,
|
|
@@ -8987,7 +8978,7 @@
|
|
|
8987
8978
|
"immutable": true,
|
|
8988
8979
|
"locationInModule": {
|
|
8989
8980
|
"filename": "src/providers/common.ts",
|
|
8990
|
-
"line":
|
|
8981
|
+
"line": 397
|
|
8991
8982
|
},
|
|
8992
8983
|
"name": "logGroup",
|
|
8993
8984
|
"optional": true,
|
|
@@ -9004,7 +8995,7 @@
|
|
|
9004
8995
|
"immutable": true,
|
|
9005
8996
|
"locationInModule": {
|
|
9006
8997
|
"filename": "src/providers/common.ts",
|
|
9007
|
-
"line":
|
|
8998
|
+
"line": 382
|
|
9008
8999
|
},
|
|
9009
9000
|
"name": "roleArn",
|
|
9010
9001
|
"optional": true,
|
|
@@ -9021,7 +9012,7 @@
|
|
|
9021
9012
|
"immutable": true,
|
|
9022
9013
|
"locationInModule": {
|
|
9023
9014
|
"filename": "src/providers/common.ts",
|
|
9024
|
-
"line":
|
|
9015
|
+
"line": 377
|
|
9025
9016
|
},
|
|
9026
9017
|
"name": "securityGroups",
|
|
9027
9018
|
"optional": true,
|
|
@@ -9043,7 +9034,7 @@
|
|
|
9043
9034
|
"immutable": true,
|
|
9044
9035
|
"locationInModule": {
|
|
9045
9036
|
"filename": "src/providers/common.ts",
|
|
9046
|
-
"line":
|
|
9037
|
+
"line": 372
|
|
9047
9038
|
},
|
|
9048
9039
|
"name": "vpcArn",
|
|
9049
9040
|
"optional": true,
|
|
@@ -9425,7 +9416,7 @@
|
|
|
9425
9416
|
"kind": "class",
|
|
9426
9417
|
"locationInModule": {
|
|
9427
9418
|
"filename": "src/access.ts",
|
|
9428
|
-
"line":
|
|
9419
|
+
"line": 46
|
|
9429
9420
|
},
|
|
9430
9421
|
"methods": [
|
|
9431
9422
|
{
|
|
@@ -9436,7 +9427,7 @@
|
|
|
9436
9427
|
},
|
|
9437
9428
|
"locationInModule": {
|
|
9438
9429
|
"filename": "src/access.ts",
|
|
9439
|
-
"line":
|
|
9430
|
+
"line": 78
|
|
9440
9431
|
},
|
|
9441
9432
|
"name": "apiGateway",
|
|
9442
9433
|
"parameters": [
|
|
@@ -9463,7 +9454,7 @@
|
|
|
9463
9454
|
},
|
|
9464
9455
|
"locationInModule": {
|
|
9465
9456
|
"filename": "src/access.ts",
|
|
9466
|
-
"line":
|
|
9457
|
+
"line": 87
|
|
9467
9458
|
},
|
|
9468
9459
|
"name": "githubWebhookIps",
|
|
9469
9460
|
"returns": {
|
|
@@ -9486,7 +9477,7 @@
|
|
|
9486
9477
|
},
|
|
9487
9478
|
"locationInModule": {
|
|
9488
9479
|
"filename": "src/access.ts",
|
|
9489
|
-
"line":
|
|
9480
|
+
"line": 57
|
|
9490
9481
|
},
|
|
9491
9482
|
"name": "lambdaUrl",
|
|
9492
9483
|
"returns": {
|
|
@@ -9504,7 +9495,7 @@
|
|
|
9504
9495
|
},
|
|
9505
9496
|
"locationInModule": {
|
|
9506
9497
|
"filename": "src/access.ts",
|
|
9507
|
-
"line":
|
|
9498
|
+
"line": 50
|
|
9508
9499
|
},
|
|
9509
9500
|
"name": "noAccess",
|
|
9510
9501
|
"returns": {
|
|
@@ -9532,7 +9523,7 @@
|
|
|
9532
9523
|
},
|
|
9533
9524
|
"locationInModule": {
|
|
9534
9525
|
"filename": "src/providers/lambda.ts",
|
|
9535
|
-
"line":
|
|
9526
|
+
"line": 224
|
|
9536
9527
|
},
|
|
9537
9528
|
"parameters": [
|
|
9538
9529
|
{
|
|
@@ -9559,7 +9550,7 @@
|
|
|
9559
9550
|
"kind": "class",
|
|
9560
9551
|
"locationInModule": {
|
|
9561
9552
|
"filename": "src/providers/lambda.ts",
|
|
9562
|
-
"line":
|
|
9553
|
+
"line": 456
|
|
9563
9554
|
},
|
|
9564
9555
|
"name": "LambdaRunner",
|
|
9565
9556
|
"symbolId": "src/providers/lambda:LambdaRunner"
|
|
@@ -9579,7 +9570,7 @@
|
|
|
9579
9570
|
},
|
|
9580
9571
|
"locationInModule": {
|
|
9581
9572
|
"filename": "src/providers/lambda.ts",
|
|
9582
|
-
"line":
|
|
9573
|
+
"line": 224
|
|
9583
9574
|
},
|
|
9584
9575
|
"parameters": [
|
|
9585
9576
|
{
|
|
@@ -9651,45 +9642,6 @@
|
|
|
9651
9642
|
},
|
|
9652
9643
|
"static": true
|
|
9653
9644
|
},
|
|
9654
|
-
{
|
|
9655
|
-
"docs": {
|
|
9656
|
-
"stability": "experimental"
|
|
9657
|
-
},
|
|
9658
|
-
"locationInModule": {
|
|
9659
|
-
"filename": "src/providers/common.ts",
|
|
9660
|
-
"line": 474
|
|
9661
|
-
},
|
|
9662
|
-
"name": "addRetry",
|
|
9663
|
-
"parameters": [
|
|
9664
|
-
{
|
|
9665
|
-
"name": "task",
|
|
9666
|
-
"type": {
|
|
9667
|
-
"union": {
|
|
9668
|
-
"types": [
|
|
9669
|
-
{
|
|
9670
|
-
"fqn": "aws-cdk-lib.aws_stepfunctions.TaskStateBase"
|
|
9671
|
-
},
|
|
9672
|
-
{
|
|
9673
|
-
"fqn": "aws-cdk-lib.aws_stepfunctions.Parallel"
|
|
9674
|
-
}
|
|
9675
|
-
]
|
|
9676
|
-
}
|
|
9677
|
-
}
|
|
9678
|
-
},
|
|
9679
|
-
{
|
|
9680
|
-
"name": "errors",
|
|
9681
|
-
"type": {
|
|
9682
|
-
"collection": {
|
|
9683
|
-
"elementtype": {
|
|
9684
|
-
"primitive": "string"
|
|
9685
|
-
},
|
|
9686
|
-
"kind": "array"
|
|
9687
|
-
}
|
|
9688
|
-
}
|
|
9689
|
-
}
|
|
9690
|
-
],
|
|
9691
|
-
"protected": true
|
|
9692
|
-
},
|
|
9693
9645
|
{
|
|
9694
9646
|
"docs": {
|
|
9695
9647
|
"remarks": "Called by GithubRunners and shouldn't be called manually.",
|
|
@@ -9698,7 +9650,7 @@
|
|
|
9698
9650
|
},
|
|
9699
9651
|
"locationInModule": {
|
|
9700
9652
|
"filename": "src/providers/lambda.ts",
|
|
9701
|
-
"line":
|
|
9653
|
+
"line": 312
|
|
9702
9654
|
},
|
|
9703
9655
|
"name": "getStepFunctionTask",
|
|
9704
9656
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -9727,7 +9679,7 @@
|
|
|
9727
9679
|
},
|
|
9728
9680
|
"locationInModule": {
|
|
9729
9681
|
"filename": "src/providers/lambda.ts",
|
|
9730
|
-
"line":
|
|
9682
|
+
"line": 373
|
|
9731
9683
|
},
|
|
9732
9684
|
"name": "grantStateMachine",
|
|
9733
9685
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -9796,7 +9748,7 @@
|
|
|
9796
9748
|
},
|
|
9797
9749
|
"locationInModule": {
|
|
9798
9750
|
"filename": "src/providers/lambda.ts",
|
|
9799
|
-
"line":
|
|
9751
|
+
"line": 376
|
|
9800
9752
|
},
|
|
9801
9753
|
"name": "status",
|
|
9802
9754
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -9863,7 +9815,7 @@
|
|
|
9863
9815
|
"immutable": true,
|
|
9864
9816
|
"locationInModule": {
|
|
9865
9817
|
"filename": "src/providers/lambda.ts",
|
|
9866
|
-
"line":
|
|
9818
|
+
"line": 301
|
|
9867
9819
|
},
|
|
9868
9820
|
"name": "connections",
|
|
9869
9821
|
"overrides": "aws-cdk-lib.aws_ec2.IConnectable",
|
|
@@ -9955,6 +9907,27 @@
|
|
|
9955
9907
|
"type": {
|
|
9956
9908
|
"fqn": "aws-cdk-lib.aws_logs.ILogGroup"
|
|
9957
9909
|
}
|
|
9910
|
+
},
|
|
9911
|
+
{
|
|
9912
|
+
"docs": {
|
|
9913
|
+
"stability": "experimental",
|
|
9914
|
+
"summary": "List of step functions errors that should be retried."
|
|
9915
|
+
},
|
|
9916
|
+
"immutable": true,
|
|
9917
|
+
"locationInModule": {
|
|
9918
|
+
"filename": "src/providers/lambda.ts",
|
|
9919
|
+
"line": 213
|
|
9920
|
+
},
|
|
9921
|
+
"name": "retryableErrors",
|
|
9922
|
+
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
9923
|
+
"type": {
|
|
9924
|
+
"collection": {
|
|
9925
|
+
"elementtype": {
|
|
9926
|
+
"primitive": "string"
|
|
9927
|
+
},
|
|
9928
|
+
"kind": "array"
|
|
9929
|
+
}
|
|
9930
|
+
}
|
|
9958
9931
|
}
|
|
9959
9932
|
],
|
|
9960
9933
|
"symbolId": "src/providers/lambda:LambdaRunnerProvider"
|
|
@@ -10504,7 +10477,7 @@
|
|
|
10504
10477
|
"kind": "interface",
|
|
10505
10478
|
"locationInModule": {
|
|
10506
10479
|
"filename": "src/runner.ts",
|
|
10507
|
-
"line":
|
|
10480
|
+
"line": 157
|
|
10508
10481
|
},
|
|
10509
10482
|
"name": "LogOptions",
|
|
10510
10483
|
"properties": [
|
|
@@ -10518,7 +10491,7 @@
|
|
|
10518
10491
|
"immutable": true,
|
|
10519
10492
|
"locationInModule": {
|
|
10520
10493
|
"filename": "src/runner.ts",
|
|
10521
|
-
"line":
|
|
10494
|
+
"line": 168
|
|
10522
10495
|
},
|
|
10523
10496
|
"name": "includeExecutionData",
|
|
10524
10497
|
"optional": true,
|
|
@@ -10536,7 +10509,7 @@
|
|
|
10536
10509
|
"immutable": true,
|
|
10537
10510
|
"locationInModule": {
|
|
10538
10511
|
"filename": "src/runner.ts",
|
|
10539
|
-
"line":
|
|
10512
|
+
"line": 175
|
|
10540
10513
|
},
|
|
10541
10514
|
"name": "level",
|
|
10542
10515
|
"optional": true,
|
|
@@ -10553,7 +10526,7 @@
|
|
|
10553
10526
|
"immutable": true,
|
|
10554
10527
|
"locationInModule": {
|
|
10555
10528
|
"filename": "src/runner.ts",
|
|
10556
|
-
"line":
|
|
10529
|
+
"line": 161
|
|
10557
10530
|
},
|
|
10558
10531
|
"name": "logGroupName",
|
|
10559
10532
|
"optional": true,
|
|
@@ -10572,7 +10545,7 @@
|
|
|
10572
10545
|
"immutable": true,
|
|
10573
10546
|
"locationInModule": {
|
|
10574
10547
|
"filename": "src/runner.ts",
|
|
10575
|
-
"line":
|
|
10548
|
+
"line": 184
|
|
10576
10549
|
},
|
|
10577
10550
|
"name": "logRetention",
|
|
10578
10551
|
"optional": true,
|
|
@@ -10748,7 +10721,7 @@
|
|
|
10748
10721
|
"assembly": "@cloudsnorkel/cdk-github-runners",
|
|
10749
10722
|
"datatype": true,
|
|
10750
10723
|
"docs": {
|
|
10751
|
-
"remarks": "The default is to retry
|
|
10724
|
+
"remarks": "The default is to retry 23 times for about 24 hours with increasing interval.",
|
|
10752
10725
|
"stability": "experimental",
|
|
10753
10726
|
"summary": "Retry options for providers."
|
|
10754
10727
|
},
|
|
@@ -10800,7 +10773,7 @@
|
|
|
10800
10773
|
{
|
|
10801
10774
|
"abstract": true,
|
|
10802
10775
|
"docs": {
|
|
10803
|
-
"default": "
|
|
10776
|
+
"default": "23",
|
|
10804
10777
|
"stability": "experimental",
|
|
10805
10778
|
"summary": "How many times to retry."
|
|
10806
10779
|
},
|
|
@@ -12221,14 +12194,13 @@
|
|
|
12221
12194
|
{
|
|
12222
12195
|
"abstract": true,
|
|
12223
12196
|
"docs": {
|
|
12224
|
-
"
|
|
12225
|
-
"stability": "
|
|
12226
|
-
"summary": "Options to retry operation in case of failure like missing capacity, or API quota issues."
|
|
12197
|
+
"deprecated": "use {@link retryOptions } on {@link GitHubRunners } instead",
|
|
12198
|
+
"stability": "deprecated"
|
|
12227
12199
|
},
|
|
12228
12200
|
"immutable": true,
|
|
12229
12201
|
"locationInModule": {
|
|
12230
12202
|
"filename": "src/providers/common.ts",
|
|
12231
|
-
"line":
|
|
12203
|
+
"line": 281
|
|
12232
12204
|
},
|
|
12233
12205
|
"name": "retryOptions",
|
|
12234
12206
|
"optional": true,
|
|
@@ -12251,7 +12223,7 @@
|
|
|
12251
12223
|
"kind": "interface",
|
|
12252
12224
|
"locationInModule": {
|
|
12253
12225
|
"filename": "src/providers/common.ts",
|
|
12254
|
-
"line":
|
|
12226
|
+
"line": 293
|
|
12255
12227
|
},
|
|
12256
12228
|
"name": "RunnerRuntimeParameters",
|
|
12257
12229
|
"properties": [
|
|
@@ -12265,7 +12237,7 @@
|
|
|
12265
12237
|
"immutable": true,
|
|
12266
12238
|
"locationInModule": {
|
|
12267
12239
|
"filename": "src/providers/common.ts",
|
|
12268
|
-
"line":
|
|
12240
|
+
"line": 307
|
|
12269
12241
|
},
|
|
12270
12242
|
"name": "githubDomainPath",
|
|
12271
12243
|
"type": {
|
|
@@ -12281,7 +12253,7 @@
|
|
|
12281
12253
|
"immutable": true,
|
|
12282
12254
|
"locationInModule": {
|
|
12283
12255
|
"filename": "src/providers/common.ts",
|
|
12284
|
-
"line":
|
|
12256
|
+
"line": 312
|
|
12285
12257
|
},
|
|
12286
12258
|
"name": "ownerPath",
|
|
12287
12259
|
"type": {
|
|
@@ -12297,7 +12269,7 @@
|
|
|
12297
12269
|
"immutable": true,
|
|
12298
12270
|
"locationInModule": {
|
|
12299
12271
|
"filename": "src/providers/common.ts",
|
|
12300
|
-
"line":
|
|
12272
|
+
"line": 317
|
|
12301
12273
|
},
|
|
12302
12274
|
"name": "repoPath",
|
|
12303
12275
|
"type": {
|
|
@@ -12314,7 +12286,7 @@
|
|
|
12314
12286
|
"immutable": true,
|
|
12315
12287
|
"locationInModule": {
|
|
12316
12288
|
"filename": "src/providers/common.ts",
|
|
12317
|
-
"line":
|
|
12289
|
+
"line": 302
|
|
12318
12290
|
},
|
|
12319
12291
|
"name": "runnerNamePath",
|
|
12320
12292
|
"type": {
|
|
@@ -12330,7 +12302,7 @@
|
|
|
12330
12302
|
"immutable": true,
|
|
12331
12303
|
"locationInModule": {
|
|
12332
12304
|
"filename": "src/providers/common.ts",
|
|
12333
|
-
"line":
|
|
12305
|
+
"line": 297
|
|
12334
12306
|
},
|
|
12335
12307
|
"name": "runnerTokenPath",
|
|
12336
12308
|
"type": {
|
|
@@ -12957,6 +12929,6 @@
|
|
|
12957
12929
|
"symbolId": "src/image-builders/aws-image-builder/deprecated/windows-components:WindowsComponents"
|
|
12958
12930
|
}
|
|
12959
12931
|
},
|
|
12960
|
-
"version": "0.
|
|
12961
|
-
"fingerprint": "
|
|
12932
|
+
"version": "0.10.0",
|
|
12933
|
+
"fingerprint": "+crE0rwqfHuHDyIaCsPdd6LVAkwDEKdQQuNNDM7LL50="
|
|
12962
12934
|
}
|