@cloudsnorkel/cdk-github-runners 0.9.0 → 0.9.1
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 +35 -35
- package/API.md +4 -4
- package/README.md +15 -11
- package/assets/lambdas/webhook-handler.lambda/index.js +1 -1
- package/lib/lambdas/webhook-handler.lambda.js +2 -2
- package/lib/providers/codebuild.d.ts +1 -1
- package/lib/providers/codebuild.js +3 -3
- package/lib/providers/common.js +3 -3
- package/lib/providers/ec2.js +2 -2
- package/lib/providers/ecs.d.ts +214 -0
- package/lib/providers/ecs.js +258 -0
- package/lib/providers/fargate.d.ts +7 -4
- package/lib/providers/fargate.js +41 -32
- package/lib/providers/image-builders/api.js +1 -1
- package/lib/providers/image-builders/aws-image-builder/builder.js +1 -1
- package/lib/providers/image-builders/aws-image-builder/deprecated/ami.js +1 -1
- package/lib/providers/image-builders/aws-image-builder/deprecated/container.js +1 -1
- package/lib/providers/image-builders/aws-image-builder/deprecated/linux-components.js +1 -1
- package/lib/providers/image-builders/aws-image-builder/deprecated/windows-components.js +1 -1
- package/lib/providers/image-builders/codebuild-deprecated.js +1 -1
- package/lib/providers/image-builders/components.js +3 -2
- package/lib/providers/image-builders/static.js +1 -1
- package/lib/providers/lambda.d.ts +1 -1
- package/lib/providers/lambda.js +3 -3
- package/lib/runner.js +3 -3
- package/lib/secrets.js +1 -1
- package/package.json +1 -1
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\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 | Lambda |\n|------------------|-------------------|----------------------------|----------------|---------------|\n| **Time limit** | Unlimited | 8 hours | Unlimited | 15 minutes |\n| **vCPUs** | Unlimited | 2, 4, 8, or 72 | 0.25 to 4 | 1 to 6 |\n| **RAM** | Unlimited | 3gb, 7gb, 15gb, or 145gb | 512mb to 30gb | 128mb to 10gb |\n| **Storage** | Unlimited | 50gb to 824gb | 20gb to 200gb | Up to 10gb |\n| **Architecture** | 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 |\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[](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 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 = 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 label: 'customized-fargate',\n vpc: vpc,\n securityGroup: 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 label: 'customized-windows-fargate',\n vpc: vpc,\n securityGroup: 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,\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 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/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://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"
|
|
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\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. 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[](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 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 = 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 label: 'customized-fargate',\n vpc: vpc,\n securityGroup: 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 label: 'customized-windows-fargate',\n vpc: vpc,\n securityGroup: 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,\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 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/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://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"
|
|
3142
3142
|
},
|
|
3143
3143
|
"repository": {
|
|
3144
3144
|
"type": "git",
|
|
@@ -5115,7 +5115,7 @@
|
|
|
5115
5115
|
{
|
|
5116
5116
|
"abstract": true,
|
|
5117
5117
|
"docs": {
|
|
5118
|
-
"default": "
|
|
5118
|
+
"default": "CodeBuildRunnerProvider.imageBuilder()",
|
|
5119
5119
|
"remarks": "The image builder must contain the {@link RunnerImageComponent.dockerInDocker} component unless `dockerInDocker` is set to false.\n\nThe image builder determines the OS and architecture of the runner.",
|
|
5120
5120
|
"stability": "experimental",
|
|
5121
5121
|
"summary": "Runner image builder used to build Docker images containing GitHub Runner and all requirements."
|
|
@@ -6585,7 +6585,7 @@
|
|
|
6585
6585
|
},
|
|
6586
6586
|
"locationInModule": {
|
|
6587
6587
|
"filename": "src/providers/fargate.ts",
|
|
6588
|
-
"line":
|
|
6588
|
+
"line": 356
|
|
6589
6589
|
},
|
|
6590
6590
|
"parameters": [
|
|
6591
6591
|
{
|
|
@@ -6612,7 +6612,7 @@
|
|
|
6612
6612
|
"kind": "class",
|
|
6613
6613
|
"locationInModule": {
|
|
6614
6614
|
"filename": "src/providers/fargate.ts",
|
|
6615
|
-
"line":
|
|
6615
|
+
"line": 519
|
|
6616
6616
|
},
|
|
6617
6617
|
"name": "FargateRunner",
|
|
6618
6618
|
"symbolId": "src/providers/fargate:FargateRunner"
|
|
@@ -6632,7 +6632,7 @@
|
|
|
6632
6632
|
},
|
|
6633
6633
|
"locationInModule": {
|
|
6634
6634
|
"filename": "src/providers/fargate.ts",
|
|
6635
|
-
"line":
|
|
6635
|
+
"line": 356
|
|
6636
6636
|
},
|
|
6637
6637
|
"parameters": [
|
|
6638
6638
|
{
|
|
@@ -6662,7 +6662,7 @@
|
|
|
6662
6662
|
"kind": "class",
|
|
6663
6663
|
"locationInModule": {
|
|
6664
6664
|
"filename": "src/providers/fargate.ts",
|
|
6665
|
-
"line":
|
|
6665
|
+
"line": 242
|
|
6666
6666
|
},
|
|
6667
6667
|
"methods": [
|
|
6668
6668
|
{
|
|
@@ -6673,7 +6673,7 @@
|
|
|
6673
6673
|
},
|
|
6674
6674
|
"locationInModule": {
|
|
6675
6675
|
"filename": "src/providers/fargate.ts",
|
|
6676
|
-
"line":
|
|
6676
|
+
"line": 276
|
|
6677
6677
|
},
|
|
6678
6678
|
"name": "imageBuilder",
|
|
6679
6679
|
"parameters": [
|
|
@@ -6751,7 +6751,7 @@
|
|
|
6751
6751
|
},
|
|
6752
6752
|
"locationInModule": {
|
|
6753
6753
|
"filename": "src/providers/fargate.ts",
|
|
6754
|
-
"line":
|
|
6754
|
+
"line": 440
|
|
6755
6755
|
},
|
|
6756
6756
|
"name": "getStepFunctionTask",
|
|
6757
6757
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -6780,7 +6780,7 @@
|
|
|
6780
6780
|
},
|
|
6781
6781
|
"locationInModule": {
|
|
6782
6782
|
"filename": "src/providers/fargate.ts",
|
|
6783
|
-
"line":
|
|
6783
|
+
"line": 494
|
|
6784
6784
|
},
|
|
6785
6785
|
"name": "grantStateMachine",
|
|
6786
6786
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -6849,7 +6849,7 @@
|
|
|
6849
6849
|
},
|
|
6850
6850
|
"locationInModule": {
|
|
6851
6851
|
"filename": "src/providers/fargate.ts",
|
|
6852
|
-
"line":
|
|
6852
|
+
"line": 497
|
|
6853
6853
|
},
|
|
6854
6854
|
"name": "status",
|
|
6855
6855
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -6881,7 +6881,7 @@
|
|
|
6881
6881
|
"immutable": true,
|
|
6882
6882
|
"locationInModule": {
|
|
6883
6883
|
"filename": "src/providers/fargate.ts",
|
|
6884
|
-
"line":
|
|
6884
|
+
"line": 263
|
|
6885
6885
|
},
|
|
6886
6886
|
"name": "LINUX_ARM64_DOCKERFILE_PATH",
|
|
6887
6887
|
"static": true,
|
|
@@ -6900,7 +6900,7 @@
|
|
|
6900
6900
|
"immutable": true,
|
|
6901
6901
|
"locationInModule": {
|
|
6902
6902
|
"filename": "src/providers/fargate.ts",
|
|
6903
|
-
"line":
|
|
6903
|
+
"line": 252
|
|
6904
6904
|
},
|
|
6905
6905
|
"name": "LINUX_X64_DOCKERFILE_PATH",
|
|
6906
6906
|
"static": true,
|
|
@@ -6916,7 +6916,7 @@
|
|
|
6916
6916
|
"immutable": true,
|
|
6917
6917
|
"locationInModule": {
|
|
6918
6918
|
"filename": "src/providers/fargate.ts",
|
|
6919
|
-
"line":
|
|
6919
|
+
"line": 325
|
|
6920
6920
|
},
|
|
6921
6921
|
"name": "assignPublicIp",
|
|
6922
6922
|
"type": {
|
|
@@ -6931,7 +6931,7 @@
|
|
|
6931
6931
|
"immutable": true,
|
|
6932
6932
|
"locationInModule": {
|
|
6933
6933
|
"filename": "src/providers/fargate.ts",
|
|
6934
|
-
"line":
|
|
6934
|
+
"line": 295
|
|
6935
6935
|
},
|
|
6936
6936
|
"name": "cluster",
|
|
6937
6937
|
"type": {
|
|
@@ -6946,7 +6946,7 @@
|
|
|
6946
6946
|
"immutable": true,
|
|
6947
6947
|
"locationInModule": {
|
|
6948
6948
|
"filename": "src/providers/fargate.ts",
|
|
6949
|
-
"line":
|
|
6949
|
+
"line": 335
|
|
6950
6950
|
},
|
|
6951
6951
|
"name": "connections",
|
|
6952
6952
|
"overrides": "aws-cdk-lib.aws_ec2.IConnectable",
|
|
@@ -6962,7 +6962,7 @@
|
|
|
6962
6962
|
"immutable": true,
|
|
6963
6963
|
"locationInModule": {
|
|
6964
6964
|
"filename": "src/providers/fargate.ts",
|
|
6965
|
-
"line":
|
|
6965
|
+
"line": 305
|
|
6966
6966
|
},
|
|
6967
6967
|
"name": "container",
|
|
6968
6968
|
"type": {
|
|
@@ -6977,7 +6977,7 @@
|
|
|
6977
6977
|
"immutable": true,
|
|
6978
6978
|
"locationInModule": {
|
|
6979
6979
|
"filename": "src/providers/fargate.ts",
|
|
6980
|
-
"line":
|
|
6980
|
+
"line": 330
|
|
6981
6981
|
},
|
|
6982
6982
|
"name": "grantPrincipal",
|
|
6983
6983
|
"overrides": "aws-cdk-lib.aws_iam.IGrantable",
|
|
@@ -6994,7 +6994,7 @@
|
|
|
6994
6994
|
"immutable": true,
|
|
6995
6995
|
"locationInModule": {
|
|
6996
6996
|
"filename": "src/providers/fargate.ts",
|
|
6997
|
-
"line":
|
|
6997
|
+
"line": 345
|
|
6998
6998
|
},
|
|
6999
6999
|
"name": "image",
|
|
7000
7000
|
"type": {
|
|
@@ -7009,7 +7009,7 @@
|
|
|
7009
7009
|
"immutable": true,
|
|
7010
7010
|
"locationInModule": {
|
|
7011
7011
|
"filename": "src/providers/fargate.ts",
|
|
7012
|
-
"line":
|
|
7012
|
+
"line": 310
|
|
7013
7013
|
},
|
|
7014
7014
|
"name": "labels",
|
|
7015
7015
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -7031,7 +7031,7 @@
|
|
|
7031
7031
|
"immutable": true,
|
|
7032
7032
|
"locationInModule": {
|
|
7033
7033
|
"filename": "src/providers/fargate.ts",
|
|
7034
|
-
"line":
|
|
7034
|
+
"line": 352
|
|
7035
7035
|
},
|
|
7036
7036
|
"name": "logGroup",
|
|
7037
7037
|
"overrides": "@cloudsnorkel/cdk-github-runners.IRunnerProvider",
|
|
@@ -7047,7 +7047,7 @@
|
|
|
7047
7047
|
"immutable": true,
|
|
7048
7048
|
"locationInModule": {
|
|
7049
7049
|
"filename": "src/providers/fargate.ts",
|
|
7050
|
-
"line":
|
|
7050
|
+
"line": 340
|
|
7051
7051
|
},
|
|
7052
7052
|
"name": "spot",
|
|
7053
7053
|
"type": {
|
|
@@ -7062,7 +7062,7 @@
|
|
|
7062
7062
|
"immutable": true,
|
|
7063
7063
|
"locationInModule": {
|
|
7064
7064
|
"filename": "src/providers/fargate.ts",
|
|
7065
|
-
"line":
|
|
7065
|
+
"line": 300
|
|
7066
7066
|
},
|
|
7067
7067
|
"name": "task",
|
|
7068
7068
|
"type": {
|
|
@@ -7077,7 +7077,7 @@
|
|
|
7077
7077
|
"immutable": true,
|
|
7078
7078
|
"locationInModule": {
|
|
7079
7079
|
"filename": "src/providers/fargate.ts",
|
|
7080
|
-
"line":
|
|
7080
|
+
"line": 320
|
|
7081
7081
|
},
|
|
7082
7082
|
"name": "subnetSelection",
|
|
7083
7083
|
"optional": true,
|
|
@@ -7093,7 +7093,7 @@
|
|
|
7093
7093
|
"immutable": true,
|
|
7094
7094
|
"locationInModule": {
|
|
7095
7095
|
"filename": "src/providers/fargate.ts",
|
|
7096
|
-
"line":
|
|
7096
|
+
"line": 315
|
|
7097
7097
|
},
|
|
7098
7098
|
"name": "vpc",
|
|
7099
7099
|
"optional": true,
|
|
@@ -7109,7 +7109,7 @@
|
|
|
7109
7109
|
"datatype": true,
|
|
7110
7110
|
"docs": {
|
|
7111
7111
|
"stability": "experimental",
|
|
7112
|
-
"summary": "Properties for
|
|
7112
|
+
"summary": "Properties for FargateRunnerProvider."
|
|
7113
7113
|
},
|
|
7114
7114
|
"fqn": "@cloudsnorkel/cdk-github-runners.FargateRunnerProviderProps",
|
|
7115
7115
|
"interfaces": [
|
|
@@ -7200,7 +7200,7 @@
|
|
|
7200
7200
|
{
|
|
7201
7201
|
"abstract": true,
|
|
7202
7202
|
"docs": {
|
|
7203
|
-
"default": "
|
|
7203
|
+
"default": "FargateRunnerProvider.imageBuilder()",
|
|
7204
7204
|
"remarks": "The image builder determines the OS and architecture of the runner.",
|
|
7205
7205
|
"stability": "experimental",
|
|
7206
7206
|
"summary": "Runner image builder used to build Docker images containing GitHub Runner and all requirements."
|
|
@@ -9045,7 +9045,7 @@
|
|
|
9045
9045
|
{
|
|
9046
9046
|
"abstract": true,
|
|
9047
9047
|
"docs": {
|
|
9048
|
-
"default": "
|
|
9048
|
+
"default": "LambdaRunnerProvider.imageBuilder()",
|
|
9049
9049
|
"remarks": "The image builder must contain the {@link RunnerImageComponent.lambdaEntrypoint} component.\n\nThe image builder determines the OS and architecture of the runner.",
|
|
9050
9050
|
"stability": "experimental",
|
|
9051
9051
|
"summary": "Runner image builder used to build Docker images containing GitHub Runner and all requirements."
|
|
@@ -10822,7 +10822,7 @@
|
|
|
10822
10822
|
},
|
|
10823
10823
|
"locationInModule": {
|
|
10824
10824
|
"filename": "src/providers/image-builders/components.ts",
|
|
10825
|
-
"line":
|
|
10825
|
+
"line": 420
|
|
10826
10826
|
},
|
|
10827
10827
|
"name": "extraCertificates",
|
|
10828
10828
|
"parameters": [
|
|
@@ -10923,7 +10923,7 @@
|
|
|
10923
10923
|
},
|
|
10924
10924
|
"locationInModule": {
|
|
10925
10925
|
"filename": "src/providers/image-builders/components.ts",
|
|
10926
|
-
"line":
|
|
10926
|
+
"line": 470
|
|
10927
10927
|
},
|
|
10928
10928
|
"name": "lambdaEntrypoint",
|
|
10929
10929
|
"returns": {
|
|
@@ -10975,7 +10975,7 @@
|
|
|
10975
10975
|
},
|
|
10976
10976
|
"locationInModule": {
|
|
10977
10977
|
"filename": "src/providers/image-builders/components.ts",
|
|
10978
|
-
"line":
|
|
10978
|
+
"line": 519
|
|
10979
10979
|
},
|
|
10980
10980
|
"name": "getAssets",
|
|
10981
10981
|
"parameters": [
|
|
@@ -11012,7 +11012,7 @@
|
|
|
11012
11012
|
},
|
|
11013
11013
|
"locationInModule": {
|
|
11014
11014
|
"filename": "src/providers/image-builders/components.ts",
|
|
11015
|
-
"line":
|
|
11015
|
+
"line": 514
|
|
11016
11016
|
},
|
|
11017
11017
|
"name": "getCommands",
|
|
11018
11018
|
"parameters": [
|
|
@@ -11048,7 +11048,7 @@
|
|
|
11048
11048
|
},
|
|
11049
11049
|
"locationInModule": {
|
|
11050
11050
|
"filename": "src/providers/image-builders/components.ts",
|
|
11051
|
-
"line":
|
|
11051
|
+
"line": 528
|
|
11052
11052
|
},
|
|
11053
11053
|
"name": "getDockerCommands",
|
|
11054
11054
|
"parameters": [
|
|
@@ -11089,7 +11089,7 @@
|
|
|
11089
11089
|
"immutable": true,
|
|
11090
11090
|
"locationInModule": {
|
|
11091
11091
|
"filename": "src/providers/image-builders/components.ts",
|
|
11092
|
-
"line":
|
|
11092
|
+
"line": 509
|
|
11093
11093
|
},
|
|
11094
11094
|
"name": "name",
|
|
11095
11095
|
"type": {
|
|
@@ -11974,6 +11974,6 @@
|
|
|
11974
11974
|
"symbolId": "src/providers/image-builders/aws-image-builder/deprecated/windows-components:WindowsComponents"
|
|
11975
11975
|
}
|
|
11976
11976
|
},
|
|
11977
|
-
"version": "0.9.
|
|
11978
|
-
"fingerprint": "
|
|
11977
|
+
"version": "0.9.1",
|
|
11978
|
+
"fingerprint": "pN+Ba8VB2RduK8aFdSqAxG4DnTY/Z9GUJWMHEucUgjc="
|
|
11979
11979
|
}
|
package/API.md
CHANGED
|
@@ -4969,7 +4969,7 @@ public readonly imageBuilder: IRunnerImageBuilder;
|
|
|
4969
4969
|
```
|
|
4970
4970
|
|
|
4971
4971
|
- *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder">IRunnerImageBuilder</a>
|
|
4972
|
-
- *Default:*
|
|
4972
|
+
- *Default:* CodeBuildRunnerProvider.imageBuilder()
|
|
4973
4973
|
|
|
4974
4974
|
Runner image builder used to build Docker images containing GitHub Runner and all requirements.
|
|
4975
4975
|
|
|
@@ -5520,7 +5520,7 @@ VPC where runner instances will be launched.
|
|
|
5520
5520
|
|
|
5521
5521
|
### FargateRunnerProviderProps <a name="FargateRunnerProviderProps" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProviderProps"></a>
|
|
5522
5522
|
|
|
5523
|
-
Properties for
|
|
5523
|
+
Properties for FargateRunnerProvider.
|
|
5524
5524
|
|
|
5525
5525
|
#### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProviderProps.Initializer"></a>
|
|
5526
5526
|
|
|
@@ -5661,7 +5661,7 @@ public readonly imageBuilder: IRunnerImageBuilder;
|
|
|
5661
5661
|
```
|
|
5662
5662
|
|
|
5663
5663
|
- *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder">IRunnerImageBuilder</a>
|
|
5664
|
-
- *Default:*
|
|
5664
|
+
- *Default:* FargateRunnerProvider.imageBuilder()
|
|
5665
5665
|
|
|
5666
5666
|
Runner image builder used to build Docker images containing GitHub Runner and all requirements.
|
|
5667
5667
|
|
|
@@ -6168,7 +6168,7 @@ public readonly imageBuilder: IRunnerImageBuilder;
|
|
|
6168
6168
|
```
|
|
6169
6169
|
|
|
6170
6170
|
- *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerImageBuilder">IRunnerImageBuilder</a>
|
|
6171
|
-
- *Default:*
|
|
6171
|
+
- *Default:* LambdaRunnerProvider.imageBuilder()
|
|
6172
6172
|
|
|
6173
6173
|
Runner image builder used to build Docker images containing GitHub Runner and all requirements.
|
|
6174
6174
|
|
package/README.md
CHANGED
|
@@ -32,20 +32,24 @@ The best way to browse API documentation is on [Constructs Hub][13]. It is avail
|
|
|
32
32
|
|
|
33
33
|
A runner provider creates compute resources on-demand and uses [actions/runner][5] to start a runner.
|
|
34
34
|
|
|
35
|
-
| | EC2 | CodeBuild | Fargate | Lambda |
|
|
36
|
-
|
|
37
|
-
| **Time limit** | Unlimited | 8 hours | Unlimited | 15 minutes |
|
|
38
|
-
| **vCPUs** | Unlimited | 2, 4, 8, or 72 | 0.25 to 4 | 1 to 6 |
|
|
39
|
-
| **RAM** | Unlimited | 3gb, 7gb, 15gb, or 145gb | 512mb to 30gb | 128mb to 10gb |
|
|
40
|
-
| **Storage** | Unlimited | 50gb to 824gb | 20gb to 200gb | Up to 10gb |
|
|
41
|
-
| **Architecture** | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 |
|
|
42
|
-
| **sudo** | ✔ | ✔ | ✔ | ❌ |
|
|
43
|
-
| **Docker** | ✔ | ✔ (Linux only) | ❌ | ❌ |
|
|
44
|
-
| **Spot pricing** | ✔ | ❌ | ✔ | ❌ |
|
|
45
|
-
| **OS** | Linux, Windows | Linux, Windows | Linux, Windows | Linux |
|
|
35
|
+
| | EC2 | CodeBuild | Fargate | ECS | Lambda |
|
|
36
|
+
|------------------|-------------------|----------------------------|----------------|----------------|---------------|
|
|
37
|
+
| **Time limit** | Unlimited | 8 hours | Unlimited | Unlimited | 15 minutes |
|
|
38
|
+
| **vCPUs** | Unlimited | 2, 4, 8, or 72 | 0.25 to 4 | Unlimited | 1 to 6 |
|
|
39
|
+
| **RAM** | Unlimited | 3gb, 7gb, 15gb, or 145gb | 512mb to 30gb | Unlimited | 128mb to 10gb |
|
|
40
|
+
| **Storage** | Unlimited | 50gb to 824gb | 20gb to 200gb | Unlimited | Up to 10gb |
|
|
41
|
+
| **Architecture** | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 | x86_64, ARM64 |
|
|
42
|
+
| **sudo** | ✔ | ✔ | ✔ | ✔ | ❌ |
|
|
43
|
+
| **Docker** | ✔ | ✔ (Linux only) | ❌ | ✔ | ❌ |
|
|
44
|
+
| **Spot pricing** | ✔ | ❌ | ✔ | ✔ | ❌ |
|
|
45
|
+
| **OS** | Linux, Windows | Linux, Windows | Linux, Windows | Linux, Windows | Linux |
|
|
46
46
|
|
|
47
47
|
The 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.
|
|
48
48
|
|
|
49
|
+
* EC2 is useful when you want runners to have complete access to the host
|
|
50
|
+
* ECS is useful when you want to control the infrastructure, like leaving the runner host running for faster startups
|
|
51
|
+
* Lambda is useful for short jobs that can work within time, size and readonly system constraints
|
|
52
|
+
|
|
49
53
|
You can also create your own provider by implementing `IRunnerProvider`.
|
|
50
54
|
|
|
51
55
|
## Installation
|
|
@@ -117,7 +117,7 @@ exports.handler = async function(event) {
|
|
|
117
117
|
};
|
|
118
118
|
}
|
|
119
119
|
let labels = {};
|
|
120
|
-
payload.workflow_job.labels.forEach((l) => labels[l] = true);
|
|
120
|
+
payload.workflow_job.labels.forEach((l) => labels[l.toLowerCase()] = true);
|
|
121
121
|
let executionName = `${payload.repository.full_name.replace("/", "-")}-${event.headers["x-github-delivery"]}`.slice(0, 64);
|
|
122
122
|
const execution = await sf.startExecution({
|
|
123
123
|
stateMachineArn: process.env.STEP_FUNCTION_ARN,
|
|
@@ -82,7 +82,7 @@ exports.handler = async function (event) {
|
|
|
82
82
|
}
|
|
83
83
|
// it's easier to deal with maps in step functions
|
|
84
84
|
let labels = {};
|
|
85
|
-
payload.workflow_job.labels.forEach((l) => labels[l] = true);
|
|
85
|
+
payload.workflow_job.labels.forEach((l) => labels[l.toLowerCase()] = true);
|
|
86
86
|
// set execution name which is also used as runner name which are limited to 64 characters
|
|
87
87
|
let executionName = `${payload.repository.full_name.replace('/', '-')}-${event.headers['x-github-delivery']}`.slice(0, 64);
|
|
88
88
|
// start execution
|
|
@@ -104,4 +104,4 @@ exports.handler = async function (event) {
|
|
|
104
104
|
body: executionName,
|
|
105
105
|
};
|
|
106
106
|
};
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViaG9vay1oYW5kbGVyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYW1iZGFzL3dlYmhvb2staGFuZGxlci5sYW1iZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzREFBc0Q7QUFDdEQsaUNBQWlDO0FBR2pDLCtCQUErQjtBQUMvQix1Q0FBK0M7QUFFL0MsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7QUFFbkMsOEJBQThCO0FBRTlCLFNBQVMsVUFBVSxDQUFDLEtBQXVDLEVBQUUsTUFBVztJQUN0RSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFNUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQzVCO0lBRUQsSUFBSSxJQUFZLENBQUM7SUFDakIsSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFO1FBQ3pCLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDMUM7U0FBTTtRQUNMLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQzlDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLE1BQU0s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Y2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbmltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyxpbXBvcnQvbm8tdW5yZXNvbHZlZCAqL1xuaW1wb3J0ICogYXMgQVdTTGFtYmRhIGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHsgZ2V0U2VjcmV0SnNvblZhbHVlIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuY29uc3Qgc2YgPSBuZXcgQVdTLlN0ZXBGdW5jdGlvbnMoKTtcblxuLy8gVE9ETyB1c2UgQG9jdG9raXQvd2ViaG9va3M/XG5cbmZ1bmN0aW9uIHZlcmlmeUJvZHkoZXZlbnQ6IEFXU0xhbWJkYS5BUElHYXRld2F5UHJveHlFdmVudFYyLCBzZWNyZXQ6IGFueSk6IHN0cmluZyB7XG4gIGNvbnN0IHNpZyA9IEJ1ZmZlci5mcm9tKGV2ZW50LmhlYWRlcnNbJ3gtaHViLXNpZ25hdHVyZS0yNTYnXSB8fCAnJywgJ3V0ZjgnKTtcblxuICBpZiAoIWV2ZW50LmJvZHkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGJvZHknKTtcbiAgfVxuXG4gIGxldCBib2R5OiBCdWZmZXI7XG4gIGlmIChldmVudC5pc0Jhc2U2NEVuY29kZWQpIHtcbiAgICBib2R5ID0gQnVmZmVyLmZyb20oZXZlbnQuYm9keSwgJ2Jhc2U2NCcpO1xuICB9IGVsc2Uge1xuICAgIGJvZHkgPSBCdWZmZXIuZnJvbShldmVudC5ib2R5IHx8ICcnLCAndXRmOCcpO1xuICB9XG5cbiAgY29uc3QgaG1hYyA9IGNyeXB0by5jcmVhdGVIbWFjKCdzaGEyNTYnLCBzZWNyZXQpO1xuICBobWFjLnVwZGF0ZShib2R5KTtcbiAgY29uc3QgZXhwZWN0ZWRTaWcgPSBCdWZmZXIuZnJvbShgc2hhMjU2PSR7aG1hYy5kaWdlc3QoJ2hleCcpfWAsICd1dGY4Jyk7XG5cbiAgY29uc29sZS5sb2coJ0NhbGN1bGF0ZWQgc2lnbmF0dXJlOiAnLCBleHBlY3RlZFNpZy50b1N0cmluZygpKTtcblxuICBpZiAoc2lnLmxlbmd0aCAhPT0gZXhwZWN0ZWRTaWcubGVuZ3RoIHx8ICFjcnlwdG8udGltaW5nU2FmZUVxdWFsKHNpZywgZXhwZWN0ZWRTaWcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTaWduYXR1cmUgbWlzbWF0Y2guIEV4cGVjdGVkICR7ZXhwZWN0ZWRTaWcudG9TdHJpbmcoKX0gYnV0IGdvdCAke3NpZy50b1N0cmluZygpfWApO1xuICB9XG5cbiAgcmV0dXJuIGJvZHkudG9TdHJpbmcoKTtcbn1cblxuZXhwb3J0cy5oYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKGV2ZW50OiBBV1NMYW1iZGEuQVBJR2F0ZXdheVByb3h5RXZlbnRWMik6IFByb21pc2U8QVdTTGFtYmRhLkFQSUdhdGV3YXlQcm94eVJlc3VsdFYyPiB7XG4gIGlmICghcHJvY2Vzcy5lbnYuV0VCSE9PS19TRUNSRVRfQVJOIHx8ICFwcm9jZXNzLmVudi5TVEVQX0ZVTkNUSU9OX0FSTikge1xuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMnKTtcbiAgfVxuXG4gIGNvbnN0IHdlYmhvb2tTZWNyZXQgPSAoYXdhaXQgZ2V0U2VjcmV0SnNvblZhbHVlKHByb2Nlc3MuZW52LldFQkhPT0tfU0VDUkVUX0FSTikpLndlYmhvb2tTZWNyZXQ7XG5cbiAgbGV0IGJvZHk7XG4gIHRyeSB7XG4gICAgYm9keSA9IHZlcmlmeUJvZHkoZXZlbnQsIHdlYmhvb2tTZWNyZXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihlKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzQ29kZTogNDAzLFxuICAgICAgYm9keTogJ0JhZCBzaWduYXR1cmUnLFxuICAgIH07XG4gIH1cblxuICBpZiAoZXZlbnQuaGVhZGVyc1snY29udGVudC10eXBlJ10gIT09ICdhcHBsaWNhdGlvbi9qc29uJykge1xuICAgIGNvbnNvbGUuZXJyb3IoYFRoaXMgd2ViaG9vayBvbmx5IGFjY2VwdHMgSlNPTiBwYXlsb2FkcywgZ290ICR7ZXZlbnQuaGVhZGVyc1snY29udGVudC10eXBlJ119YCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1c0NvZGU6IDQwMCxcbiAgICAgIGJvZHk6ICdFeHBlY3RpbmcgSlNPTiBwYXlsb2FkJyxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGV2ZW50LmhlYWRlcnNbJ3gtZ2l0aHViLWV2ZW50J10gPT09ICdwaW5nJykge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXNDb2RlOiAyMDAsXG4gICAgICBib2R5OiAnUG9uZycsXG4gICAgfTtcbiAgfVxuXG4gIC8vIGlmIChldmVudC5oZWFkZXJzWyd4LWdpdGh1Yi1ldmVudCddICE9PSAnd29ya2Zsb3dfam9iJyAmJiBldmVudC5oZWFkZXJzWyd4LWdpdGh1Yi1ldmVudCddICE9PSAnd29ya2Zsb3dfcnVuJykge1xuICAvLyAgICAgY29uc29sZS5lcnJvcihgVGhpcyB3ZWJob29rIG9ubHkgYWNjZXB0cyB3b3JrZmxvd19qb2IgYW5kIHdvcmtmbG93X3J1biwgZ290ICR7ZXZlbnQuaGVhZGVyc1sneC1naXRodWItZXZlbnQnXX1gKTtcbiAgaWYgKGV2ZW50LmhlYWRlcnNbJ3gtZ2l0aHViLWV2ZW50J10gIT09ICd3b3JrZmxvd19qb2InKSB7XG4gICAgY29uc29sZS5lcnJvcihgVGhpcyB3ZWJob29rIG9ubHkgYWNjZXB0cyB3b3JrZmxvd19qb2IsIGdvdCAke2V2ZW50LmhlYWRlcnNbJ3gtZ2l0aHViLWV2ZW50J119YCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1c0NvZGU6IDQwMCxcbiAgICAgIGJvZHk6ICdFeHBlY3Rpbmcgd29ya2Zsb3dfam9iJyxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgcGF5bG9hZCA9IEpTT04ucGFyc2UoYm9keSk7XG5cbiAgaWYgKHBheWxvYWQuYWN0aW9uICE9PSAncXVldWVkJykge1xuICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBhY3Rpb24gXCIke3BheWxvYWQuYWN0aW9ufVwiLCBleHBlY3RpbmcgXCJxdWV1ZWRcImApO1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXNDb2RlOiAyMDAsXG4gICAgICBib2R5OiAnT0suIE5vIHJ1bm5lciBzdGFydGVkLicsXG4gICAgfTtcbiAgfVxuXG4gIGlmICghcGF5bG9hZC53b3JrZmxvd19qb2IubGFiZWxzLmluY2x1ZGVzKCdzZWxmLWhvc3RlZCcpKSB7XG4gICAgY29uc29sZS5sb2coYElnbm9yaW5nIGxhYmVscyBcIiR7cGF5bG9hZC53b3JrZmxvd19qb2IubGFiZWxzfVwiLCBleHBlY3RpbmcgXCJzZWxmLWhvc3RlZFwiYCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1c0NvZGU6IDIwMCxcbiAgICAgIGJvZHk6ICdPSy4gTm8gcnVubmVyIHN0YXJ0ZWQuJyxcbiAgICB9O1xuICB9XG5cbiAgLy8gaXQncyBlYXNpZXIgdG8gZGVhbCB3aXRoIG1hcHMgaW4gc3RlcCBmdW5jdGlvbnNcbiAgbGV0IGxhYmVsczogYW55ID0ge307XG4gIHBheWxvYWQud29ya2Zsb3dfam9iLmxhYmVscy5mb3JFYWNoKChsOiBzdHJpbmcpID0+IGxhYmVsc1tsXSA9IHRydWUpO1xuXG4gIC8vIHNldCBleGVjdXRpb24gbmFtZSB3aGljaCBpcyBhbHNvIHVzZWQgYXMgcnVubmVyIG5hbWUgd2hpY2ggYXJlIGxpbWl0ZWQgdG8gNjQgY2hhcmFjdGVyc1xuICBsZXQgZXhlY3V0aW9uTmFtZSA9IGAke3BheWxvYWQucmVwb3NpdG9yeS5mdWxsX25hbWUucmVwbGFjZSgnLycsICctJyl9LSR7ZXZlbnQuaGVhZGVyc1sneC1naXRodWItZGVsaXZlcnknXX1gLnNsaWNlKDAsIDY0KTtcbiAgLy8gc3RhcnQgZXhlY3V0aW9uXG4gIGNvbnN0IGV4ZWN1dGlvbiA9IGF3YWl0IHNmLnN0YXJ0RXhlY3V0aW9uKHtcbiAgICBzdGF0ZU1hY2hpbmVBcm46IHByb2Nlc3MuZW52LlNURVBfRlVOQ1RJT05fQVJOLFxuICAgIGlucHV0OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBvd25lcjogcGF5bG9hZC5yZXBvc2l0b3J5Lm93bmVyLmxvZ2luLFxuICAgICAgcmVwbzogcGF5bG9hZC5yZXBvc2l0b3J5Lm5hbWUsXG4gICAgICBydW5JZDogcGF5bG9hZC53b3JrZmxvd19qb2IucnVuX2lkLFxuICAgICAgaW5zdGFsbGF0aW9uSWQ6IHBheWxvYWQuaW5zdGFsbGF0aW9uPy5pZCxcbiAgICAgIGxhYmVsczogbGFiZWxzLFxuICAgIH0pLFxuICAgIC8vIG5hbWUgaXMgbm90IHJhbmRvbSBzbyBtdWx0aXBsZSBleGVjdXRpb24gb2YgdGhpcyB3ZWJob29rIHdvbid0IGNhdXNlIG11bHRpcGxlIGJ1aWxkZXJzIHRvIHN0YXJ0XG4gICAgbmFtZTogZXhlY3V0aW9uTmFtZSxcbiAgfSkucHJvbWlzZSgpO1xuXG4gIGNvbnNvbGUubG9nKGBTdGFydGVkICR7ZXhlY3V0aW9uLmV4ZWN1dGlvbkFybn1gKTtcblxuICByZXR1cm4ge1xuICAgIHN0YXR1c0NvZGU6IDIwMixcbiAgICBib2R5OiBleGVjdXRpb25OYW1lLFxuICB9O1xufTtcblxuIl19
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViaG9vay1oYW5kbGVyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYW1iZGFzL3dlYmhvb2staGFuZGxlci5sYW1iZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzREFBc0Q7QUFDdEQsaUNBQWlDO0FBR2pDLCtCQUErQjtBQUMvQix1Q0FBK0M7QUFFL0MsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7QUFFbkMsOEJBQThCO0FBRTlCLFNBQVMsVUFBVSxDQUFDLEtBQXVDLEVBQUUsTUFBVztJQUN0RSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFNUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQzVCO0lBRUQsSUFBSSxJQUFZLENBQUM7SUFDakIsSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFO1FBQ3pCLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDMUM7U0FBTTtRQUNMLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQzlDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRXhFLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFFOUQsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsRUFBRTtRQUNsRixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxXQUFXLENBQUMsUUFBUSxFQUFFLFlBQVksR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztLQUNyRztJQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3pCLENBQUM7QUFFRCxPQUFPLENBQUMsT0FBTyxHQUFHLEtBQUssV0FBVyxLQUF1QztJQUN2RSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUU7UUFDckUsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0tBQ2xEO0lBRUQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFNLElBQUEsNEJBQWtCLEVBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO0lBRS9GLElBQUksSUFBSSxDQUFDO0lBQ1QsSUFBSTtRQUNGLElBQUksR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0tBQ3pDO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLE9BQU87WUFDTCxVQUFVLEVBQUUsR0FBRztZQUNmLElBQUksRUFBRSxlQUFlO1NBQ3RCLENBQUM7S0FDSDtJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxrQkFBa0IsRUFBRTtRQUN4RCxPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvRixPQUFPO1lBQ0wsVUFBVSxFQUFFLEdBQUc7WUFDZixJQUFJLEVBQUUsd0JBQXdCO1NBQy9CLENBQUM7S0FDSDtJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLE1BQU0sRUFBRTtRQUM5QyxPQUFPO1lBQ0wsVUFBVSxFQUFFLEdBQUc7WUFDZixJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUM7S0FDSDtJQUVELGtIQUFrSDtJQUNsSCx3SEFBd0g7SUFDeEgsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssY0FBYyxFQUFFO1FBQ3RELE9BQU8sQ0FBQyxLQUFLLENBQUMsK0NBQStDLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEcsT0FBTztZQUNMLFVBQVUsRUFBRSxHQUFHO1lBQ2YsSUFBSSxFQUFFLHdCQUF3QjtTQUMvQixDQUFDO0tBQ0g7SUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWpDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUU7UUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsT0FBTyxDQUFDLE1BQU0sdUJBQXVCLENBQUMsQ0FBQztRQUN2RSxPQUFPO1lBQ0wsVUFBVSxFQUFFLEdBQUc7WUFDZixJQUFJLEVBQUUsd0JBQXdCO1NBQy9CLENBQUM7S0FDSDtJQUVELElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUU7UUFDeEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLDRCQUE0QixDQUFDLENBQUM7UUFDekYsT0FBTztZQUNMLFVBQVUsRUFBRSxHQUFHO1lBQ2YsSUFBSSxFQUFFLHdCQUF3QjtTQUMvQixDQUFDO0tBQ0g7SUFFRCxrREFBa0Q7SUFDbEQsSUFBSSxNQUFNLEdBQVEsRUFBRSxDQUFDO0lBQ3JCLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBRW5GLDBGQUEwRjtJQUMxRixJQUFJLGFBQWEsR0FBRyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzSCxrQkFBa0I7SUFDbEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsY0FBYyxDQUFDO1FBQ3hDLGVBQWUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQjtRQUM5QyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQixLQUFLLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSztZQUNyQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJO1lBQzdCLEtBQUssRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU07WUFDbEMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUN4QyxNQUFNLEVBQUUsTUFBTTtTQUNmLENBQUM7UUFDRixrR0FBa0c7UUFDbEcsSUFBSSxFQUFFLGFBQWE7S0FDcEIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRWIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBRWpELE9BQU87UUFDTCxVQUFVLEVBQUUsR0FBRztRQUNmLElBQUksRUFBRSxhQUFhO0tBQ3BCLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbmltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyxpbXBvcnQvbm8tdW5yZXNvbHZlZCAqL1xuaW1wb3J0ICogYXMgQVdTTGFtYmRhIGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHsgZ2V0U2VjcmV0SnNvblZhbHVlIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuY29uc3Qgc2YgPSBuZXcgQVdTLlN0ZXBGdW5jdGlvbnMoKTtcblxuLy8gVE9ETyB1c2UgQG9jdG9raXQvd2ViaG9va3M/XG5cbmZ1bmN0aW9uIHZlcmlmeUJvZHkoZXZlbnQ6IEFXU0xhbWJkYS5BUElHYXRld2F5UHJveHlFdmVudFYyLCBzZWNyZXQ6IGFueSk6IHN0cmluZyB7XG4gIGNvbnN0IHNpZyA9IEJ1ZmZlci5mcm9tKGV2ZW50LmhlYWRlcnNbJ3gtaHViLXNpZ25hdHVyZS0yNTYnXSB8fCAnJywgJ3V0ZjgnKTtcblxuICBpZiAoIWV2ZW50LmJvZHkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGJvZHknKTtcbiAgfVxuXG4gIGxldCBib2R5OiBCdWZmZXI7XG4gIGlmIChldmVudC5pc0Jhc2U2NEVuY29kZWQpIHtcbiAgICBib2R5ID0gQnVmZmVyLmZyb20oZXZlbnQuYm9keSwgJ2Jhc2U2NCcpO1xuICB9IGVsc2Uge1xuICAgIGJvZHkgPSBCdWZmZXIuZnJvbShldmVudC5ib2R5IHx8ICcnLCAndXRmOCcpO1xuICB9XG5cbiAgY29uc3QgaG1hYyA9IGNyeXB0by5jcmVhdGVIbWFjKCdzaGEyNTYnLCBzZWNyZXQpO1xuICBobWFjLnVwZGF0ZShib2R5KTtcbiAgY29uc3QgZXhwZWN0ZWRTaWcgPSBCdWZmZXIuZnJvbShgc2hhMjU2PSR7aG1hYy5kaWdlc3QoJ2hleCcpfWAsICd1dGY4Jyk7XG5cbiAgY29uc29sZS5sb2coJ0NhbGN1bGF0ZWQgc2lnbmF0dXJlOiAnLCBleHBlY3RlZFNpZy50b1N0cmluZygpKTtcblxuICBpZiAoc2lnLmxlbmd0aCAhPT0gZXhwZWN0ZWRTaWcubGVuZ3RoIHx8ICFjcnlwdG8udGltaW5nU2FmZUVxdWFsKHNpZywgZXhwZWN0ZWRTaWcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTaWduYXR1cmUgbWlzbWF0Y2guIEV4cGVjdGVkICR7ZXhwZWN0ZWRTaWcudG9TdHJpbmcoKX0gYnV0IGdvdCAke3NpZy50b1N0cmluZygpfWApO1xuICB9XG5cbiAgcmV0dXJuIGJvZHkudG9TdHJpbmcoKTtcbn1cblxuZXhwb3J0cy5oYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKGV2ZW50OiBBV1NMYW1iZGEuQVBJR2F0ZXdheVByb3h5RXZlbnRWMik6IFByb21pc2U8QVdTTGFtYmRhLkFQSUdhdGV3YXlQcm94eVJlc3VsdFYyPiB7XG4gIGlmICghcHJvY2Vzcy5lbnYuV0VCSE9PS19TRUNSRVRfQVJOIHx8ICFwcm9jZXNzLmVudi5TVEVQX0ZVTkNUSU9OX0FSTikge1xuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMnKTtcbiAgfVxuXG4gIGNvbnN0IHdlYmhvb2tTZWNyZXQgPSAoYXdhaXQgZ2V0U2VjcmV0SnNvblZhbHVlKHByb2Nlc3MuZW52LldFQkhPT0tfU0VDUkVUX0FSTikpLndlYmhvb2tTZWNyZXQ7XG5cbiAgbGV0IGJvZHk7XG4gIHRyeSB7XG4gICAgYm9keSA9IHZlcmlmeUJvZHkoZXZlbnQsIHdlYmhvb2tTZWNyZXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihlKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzQ29kZTogNDAzLFxuICAgICAgYm9keTogJ0JhZCBzaWduYXR1cmUnLFxuICAgIH07XG4gIH1cblxuICBpZiAoZXZlbnQuaGVhZGVyc1snY29udGVudC10eXBlJ10gIT09ICdhcHBsaWNhdGlvbi9qc29uJykge1xuICAgIGNvbnNvbGUuZXJyb3IoYFRoaXMgd2ViaG9vayBvbmx5IGFjY2VwdHMgSlNPTiBwYXlsb2FkcywgZ290ICR7ZXZlbnQuaGVhZGVyc1snY29udGVudC10eXBlJ119YCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1c0NvZGU6IDQwMCxcbiAgICAgIGJvZHk6ICdFeHBlY3RpbmcgSlNPTiBwYXlsb2FkJyxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGV2ZW50LmhlYWRlcnNbJ3gtZ2l0aHViLWV2ZW50J10gPT09ICdwaW5nJykge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXNDb2RlOiAyMDAsXG4gICAgICBib2R5OiAnUG9uZycsXG4gICAgfTtcbiAgfVxuXG4gIC8vIGlmIChldmVudC5oZWFkZXJzWyd4LWdpdGh1Yi1ldmVudCddICE9PSAnd29ya2Zsb3dfam9iJyAmJiBldmVudC5oZWFkZXJzWyd4LWdpdGh1Yi1ldmVudCddICE9PSAnd29ya2Zsb3dfcnVuJykge1xuICAvLyAgICAgY29uc29sZS5lcnJvcihgVGhpcyB3ZWJob29rIG9ubHkgYWNjZXB0cyB3b3JrZmxvd19qb2IgYW5kIHdvcmtmbG93X3J1biwgZ290ICR7ZXZlbnQuaGVhZGVyc1sneC1naXRodWItZXZlbnQnXX1gKTtcbiAgaWYgKGV2ZW50LmhlYWRlcnNbJ3gtZ2l0aHViLWV2ZW50J10gIT09ICd3b3JrZmxvd19qb2InKSB7XG4gICAgY29uc29sZS5lcnJvcihgVGhpcyB3ZWJob29rIG9ubHkgYWNjZXB0cyB3b3JrZmxvd19qb2IsIGdvdCAke2V2ZW50LmhlYWRlcnNbJ3gtZ2l0aHViLWV2ZW50J119YCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1c0NvZGU6IDQwMCxcbiAgICAgIGJvZHk6ICdFeHBlY3Rpbmcgd29ya2Zsb3dfam9iJyxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgcGF5bG9hZCA9IEpTT04ucGFyc2UoYm9keSk7XG5cbiAgaWYgKHBheWxvYWQuYWN0aW9uICE9PSAncXVldWVkJykge1xuICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBhY3Rpb24gXCIke3BheWxvYWQuYWN0aW9ufVwiLCBleHBlY3RpbmcgXCJxdWV1ZWRcImApO1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXNDb2RlOiAyMDAsXG4gICAgICBib2R5OiAnT0suIE5vIHJ1bm5lciBzdGFydGVkLicsXG4gICAgfTtcbiAgfVxuXG4gIGlmICghcGF5bG9hZC53b3JrZmxvd19qb2IubGFiZWxzLmluY2x1ZGVzKCdzZWxmLWhvc3RlZCcpKSB7XG4gICAgY29uc29sZS5sb2coYElnbm9yaW5nIGxhYmVscyBcIiR7cGF5bG9hZC53b3JrZmxvd19qb2IubGFiZWxzfVwiLCBleHBlY3RpbmcgXCJzZWxmLWhvc3RlZFwiYCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1c0NvZGU6IDIwMCxcbiAgICAgIGJvZHk6ICdPSy4gTm8gcnVubmVyIHN0YXJ0ZWQuJyxcbiAgICB9O1xuICB9XG5cbiAgLy8gaXQncyBlYXNpZXIgdG8gZGVhbCB3aXRoIG1hcHMgaW4gc3RlcCBmdW5jdGlvbnNcbiAgbGV0IGxhYmVsczogYW55ID0ge307XG4gIHBheWxvYWQud29ya2Zsb3dfam9iLmxhYmVscy5mb3JFYWNoKChsOiBzdHJpbmcpID0+IGxhYmVsc1tsLnRvTG93ZXJDYXNlKCldID0gdHJ1ZSk7XG5cbiAgLy8gc2V0IGV4ZWN1dGlvbiBuYW1lIHdoaWNoIGlzIGFsc28gdXNlZCBhcyBydW5uZXIgbmFtZSB3aGljaCBhcmUgbGltaXRlZCB0byA2NCBjaGFyYWN0ZXJzXG4gIGxldCBleGVjdXRpb25OYW1lID0gYCR7cGF5bG9hZC5yZXBvc2l0b3J5LmZ1bGxfbmFtZS5yZXBsYWNlKCcvJywgJy0nKX0tJHtldmVudC5oZWFkZXJzWyd4LWdpdGh1Yi1kZWxpdmVyeSddfWAuc2xpY2UoMCwgNjQpO1xuICAvLyBzdGFydCBleGVjdXRpb25cbiAgY29uc3QgZXhlY3V0aW9uID0gYXdhaXQgc2Yuc3RhcnRFeGVjdXRpb24oe1xuICAgIHN0YXRlTWFjaGluZUFybjogcHJvY2Vzcy5lbnYuU1RFUF9GVU5DVElPTl9BUk4sXG4gICAgaW5wdXQ6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIG93bmVyOiBwYXlsb2FkLnJlcG9zaXRvcnkub3duZXIubG9naW4sXG4gICAgICByZXBvOiBwYXlsb2FkLnJlcG9zaXRvcnkubmFtZSxcbiAgICAgIHJ1bklkOiBwYXlsb2FkLndvcmtmbG93X2pvYi5ydW5faWQsXG4gICAgICBpbnN0YWxsYXRpb25JZDogcGF5bG9hZC5pbnN0YWxsYXRpb24/LmlkLFxuICAgICAgbGFiZWxzOiBsYWJlbHMsXG4gICAgfSksXG4gICAgLy8gbmFtZSBpcyBub3QgcmFuZG9tIHNvIG11bHRpcGxlIGV4ZWN1dGlvbiBvZiB0aGlzIHdlYmhvb2sgd29uJ3QgY2F1c2UgbXVsdGlwbGUgYnVpbGRlcnMgdG8gc3RhcnRcbiAgICBuYW1lOiBleGVjdXRpb25OYW1lLFxuICB9KS5wcm9taXNlKCk7XG5cbiAgY29uc29sZS5sb2coYFN0YXJ0ZWQgJHtleGVjdXRpb24uZXhlY3V0aW9uQXJufWApO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdHVzQ29kZTogMjAyLFxuICAgIGJvZHk6IGV4ZWN1dGlvbk5hbWUsXG4gIH07XG59O1xuXG4iXX0=
|
|
@@ -10,7 +10,7 @@ export interface CodeBuildRunnerProviderProps extends RunnerProviderProps {
|
|
|
10
10
|
*
|
|
11
11
|
* The image builder determines the OS and architecture of the runner.
|
|
12
12
|
*
|
|
13
|
-
* @default
|
|
13
|
+
* @default CodeBuildRunnerProvider.imageBuilder()
|
|
14
14
|
*/
|
|
15
15
|
readonly imageBuilder?: IRunnerImageBuilder;
|
|
16
16
|
/**
|