### Install Dependencies and Deploy Stacks Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/examples/typescript/split-stacks/README.md Commands to install dependencies and deploy the example stacks in sequence. Ensure the VPC stack is deployed first, followed by the image builder stack, and finally the providers stack. ```bash npm install cdk synth cdk deploy split-stacks-example-vpc cdk deploy split-stacks-example-image-builder cdk deploy split-stacks-example-providers ``` -------------------------------- ### Install Dependencies Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/examples/typescript/composite-provider/README.md Run this command to install project dependencies. ```bash npm install ``` -------------------------------- ### git Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs Git. ```APIDOC ## git ### Description A component to install Git. ### Method RunnerImageComponent.git ### Request Example ```typescript RunnerImageComponent.git() ``` ### Response #### Success Response (200) - **void** - Component applied successfully. ``` -------------------------------- ### Install Dependencies and Deploy Stacks Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/examples/python/split-stacks/README.md Commands to install project dependencies, synthesize CloudFormation templates, and deploy the VPC, image builder, and providers stacks sequentially. ```bash # Install dependencies pip install -r requirements.txt # Synthesize the CloudFormation templates cdk synth # Deploy the VPC stack first cdk deploy split-stacks-example-vpc # Then deploy the image builder stack cdk deploy split-stacks-example-image-builder # Finally deploy the providers stack cdk deploy split-stacks-example-providers ``` -------------------------------- ### Install Dependencies Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/examples/python/ec2-windows-provider/README.md Install project dependencies using pip. ```bash pip install -r requirements.txt ``` -------------------------------- ### CDK GitHub Runners Deployment Output Example Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/README.md This is an example of the output you might see after a successful CDK deployment, including the status command and deployment time. ```bash ✅ github-runners-test ✨ Deployment time: 260.01s Outputs: github-runners-test.runnersstatuscommand4A30F0F5 = aws --region us-east-1 lambda invoke --function-name github-runners-test-runnersstatus1A5771C0-mvttg8oPQnQS status.json ``` -------------------------------- ### WindowsComponents.git Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs Git on Windows. ```APIDOC ## WindowsComponents.git ### Description Installs Git on Windows. ### Method static ### Parameters #### Path Parameters * **scope** (constructs.Construct) - Required - The scope in which to define this construct. * **id** (string) - Required - The ID of the construct. ### Request Example ```typescript import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners' WindowsComponents.git(scope, id) ``` ``` -------------------------------- ### Install cdk-github-runners in Go Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/README.md Fetch the Go module using go get. This is necessary for integrating the construct into your Go CDK projects. ```bash go get github.com/CloudSnorkel/cdk-github-runners-go/cloudsnorkelcdkgithubrunners ``` -------------------------------- ### Install Git Component Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs Git. Optionally specify a software version; defaults to the latest. The version is only used on Windows; on Linux, the package manager is used. ```typescript import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners' RunnerImageComponent.git(version?: string) ``` -------------------------------- ### WindowsComponents.docker Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs Docker on Windows. ```APIDOC ## WindowsComponents.docker ### Description Installs Docker on Windows. ### Method static ### Parameters #### Path Parameters * **scope** (constructs.Construct) - Required - The scope in which to define this construct. * **id** (string) - Required - The ID of the construct. ### Request Example ```typescript import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners' WindowsComponents.docker(scope, id) ``` ``` -------------------------------- ### LogOptions Initializer Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Example of how to initialize LogOptions. ```APIDOC ## LogOptions ### Initializer ```typescript import { LogOptions } from '@cloudsnorkel/cdk-github-runners' const logOptions: LogOptions = { ... } ``` ### Description Defines what execution history events are logged and where they are logged. ``` -------------------------------- ### CodeBuildRunnerProviderProps Initializer Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Example of how to initialize CodeBuildRunnerProviderProps. ```APIDOC ## CodeBuildRunnerProviderProps Initializer ### Description Demonstrates the basic structure for initializing `CodeBuildRunnerProviderProps`. ### Usage ```typescript import { CodeBuildRunnerProviderProps } from '@cloudsnorkel/cdk-github-runners' const codeBuildRunnerProviderProps: CodeBuildRunnerProviderProps = { ... } ``` ``` -------------------------------- ### docker Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs Docker. Versioning behavior differs between Windows and Linux. ```APIDOC ## docker ### Description A component to install Docker. On Windows this sets up dockerd for Windows containers without Docker Desktop. If you need Linux containers on Windows, you'll need to install Docker Desktop which doesn't seem to play well with servers (PRs welcome). ### Method RunnerImageComponent.docker ### Parameters #### Query Parameters - **version** (string) - Optional - Software version to install (e.g. '29.1.5'). Default: latest. Only used on Windows; on Linux (Ubuntu, Amazon Linux 2 and Amazon Linux 2023) the package version format is not reliably predictable so latest is always used. ### Request Example ```typescript RunnerImageComponent.docker('29.1.5') ``` ### Response #### Success Response (200) - **void** - Component applied successfully. ``` -------------------------------- ### WindowsComponents.awsCli Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs AWS CLI on Windows. ```APIDOC ## WindowsComponents.awsCli ### Description Installs AWS CLI on Windows. ### Method static ### Parameters #### Path Parameters * **scope** (constructs.Construct) - Required - The scope in which to define this construct. * **id** (string) - Required - The ID of the construct. ### Request Example ```typescript import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners' WindowsComponents.awsCli(scope, id) ``` ``` -------------------------------- ### ContainerImageBuilderProps Initializer Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Example of how to initialize ContainerImageBuilderProps. ```APIDOC ## Initializer for ContainerImageBuilderProps ### Description Properties for ContainerImageBuilder construct. ### Usage ```typescript import { ContainerImageBuilderProps } from '@cloudsnorkel/cdk-github-runners' const containerImageBuilderProps: ContainerImageBuilderProps = { ... } ``` ``` -------------------------------- ### WindowsComponents.githubCli Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs GitHub CLI on Windows. ```APIDOC ## WindowsComponents.githubCli ### Description Installs GitHub CLI on Windows. ### Method static ### Parameters #### Path Parameters * **scope** (constructs.Construct) - Required - The scope in which to define this construct. * **id** (string) - Required - The ID of the construct. ### Request Example ```typescript import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners' WindowsComponents.githubCli(scope, id) ``` ``` -------------------------------- ### githubCli Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs the GitHub CLI. ```APIDOC ## githubCli ### Description A component to install the GitHub CLI. ### Method RunnerImageComponent.githubCli ### Request Example ```typescript RunnerImageComponent.githubCli() ``` ### Response #### Success Response (200) - **void** - Component applied successfully. ``` -------------------------------- ### Configure Docker Setup Commands for Runner Image Build Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Specify additional commands to run on the build host before the Docker runner image build starts. Use this for actions like `docker login` or `aws ecr get-login-password` to pull private base images. ```typescript public readonly dockerSetupCommands: string[]; ``` -------------------------------- ### CDK GitHub Runners Deployment Status Check Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/README.md After deploying the stack, execute this command to get the status of the GitHub runners setup. The output will contain a URL for manual GitHub integration setup if needed. ```bash aws --region us-east-1 lambda invoke --function-name status-XYZ123 status.json ``` -------------------------------- ### Initialize ContainerImageBuilderProps Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Example of how to initialize the `ContainerImageBuilderProps` with necessary properties. ```typescript import { ContainerImageBuilderProps } from '@cloudsnorkel/cdk-github-runners' const containerImageBuilderProps: ContainerImageBuilderProps = { ... } ``` -------------------------------- ### Configure Setup Function Access Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Configure access for the setup function. Initially set to LambdaAccess.lambdaUrl(), it can be restricted to specific IPs using LambdaAccess.apiGateway({ allowedIps: ['my-ip/0']}) or disabled with LambdaAccess.noAccess() after setup. ```typescript public readonly setupAccess: LambdaAccess; ``` -------------------------------- ### LinuxUbuntuComponents.git Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs and configures Git on a Linux Ubuntu environment. ```APIDOC ## LinuxUbuntuComponents.git ### Description Installs and configures Git on a Linux Ubuntu environment. ### Method Static Function ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Parameters - **scope** (constructs.Construct) - Required - The scope for the construct. - **id** (string) - Required - The ID of the construct. - **_architecture** (Architecture) - Required - The architecture for the Git installation. ``` -------------------------------- ### awsCli Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs the AWS CLI. Optionally specify a version. ```APIDOC ## awsCli ### Description A component to install the AWS CLI. ### Method RunnerImageComponent.awsCli ### Parameters #### Query Parameters - **version** (string) - Optional - Software version to install (e.g. '2.15.0'). Default: latest. ### Request Example ```typescript RunnerImageComponent.awsCli('2.15.0') ``` ### Response #### Success Response (200) - **void** - Component applied successfully. ``` -------------------------------- ### Install GitHub CLI Component Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs the GitHub CLI. Optionally specify a software version; defaults to the latest. The version is only used on Windows (x64/windows_amd64); on Linux, the package manager is used. ```typescript import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners' RunnerImageComponent.githubCli(version?: string) ``` -------------------------------- ### EcsRunnerProviderProps Initializer Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Example of how to initialize EcsRunnerProviderProps. ```APIDOC ## EcsRunnerProviderProps ### Initializer ```typescript import { EcsRunnerProviderProps } from '@cloudsnorkel/cdk-github-runners' const ecsRunnerProviderProps: EcsRunnerProviderProps = { ... } ``` ``` -------------------------------- ### Initialize CodeBuildRunnerImageBuilderProps Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Example of how to initialize the CodeBuildRunnerImageBuilderProps with necessary properties. ```typescript import { CodeBuildRunnerImageBuilderProps } from '@cloudsnorkel/cdk-github-runners' const codeBuildRunnerImageBuilderProps: CodeBuildRunnerImageBuilderProps = { ... } ``` -------------------------------- ### Initialize EcsRunnerProviderProps Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Example of how to initialize the EcsRunnerProviderProps. Ensure the EcsRunnerProviderProps is imported from '@cloudsnorkel/cdk-github-runners'. ```typescript import { EcsRunnerProviderProps } from '@cloudsnorkel/cdk-github-runners' const ecsRunnerProviderProps: EcsRunnerProviderProps = { ... } ``` -------------------------------- ### WindowsComponents.githubRunner Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs GitHub Runner on Windows. ```APIDOC ## WindowsComponents.githubRunner ### Description Installs GitHub Runner on Windows. ### Method static ### Parameters #### Path Parameters * **scope** (constructs.Construct) - Required - The scope in which to define this construct. * **id** (string) - Required - The ID of the construct. ### Request Example ```typescript import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners' WindowsComponents.githubRunner(scope, id) ``` ``` -------------------------------- ### WindowsComponents.extraCertificates Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs extra certificates on Windows. ```APIDOC ## WindowsComponents.extraCertificates ### Description Installs extra certificates on Windows. ### Method static ### Parameters #### Path Parameters * **scope** (constructs.Construct) - Required - The scope in which to define this construct. * **id** (string) - Required - The ID of the construct. * **path** (string) - Required - The path to the certificate file. ### Request Example ```typescript import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners' WindowsComponents.extraCertificates(scope, id, path) ``` ``` -------------------------------- ### Ec2RunnerProviderProps Initializer Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Example of how to initialize Ec2RunnerProviderProps. ```APIDOC ## Ec2RunnerProviderProps Properties for {@link Ec2RunnerProvider} construct. ### Initializer ```typescript import { Ec2RunnerProviderProps } from '@cloudsnorkel/cdk-github-runners' const ec2RunnerProviderProps: Ec2RunnerProviderProps = { ... } ``` ``` -------------------------------- ### Initialize FargateRunnerProviderProps Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Example of how to initialize FargateRunnerProviderProps. Ensure the necessary import is included. ```typescript import { FargateRunnerProviderProps } from '@cloudsnorkel/cdk-github-runners' const fargateRunnerProviderProps: FargateRunnerProviderProps = { ... } ``` -------------------------------- ### CodeBuildImageBuilder.bindAmi Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Build and return an AMI with GitHub Runner installed in it. ```APIDOC ## bindAmi ### Description Build and return an AMI with GitHub Runner installed in it. ### Method ```typescript public bindAmi(): Ami ``` ``` -------------------------------- ### bindAmi Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Build and return an AMI with GitHub Runner installed in it. ```APIDOC ## bindAmi ### Description Build and return an AMI with GitHub Runner installed in it. Anything that ends up with a launch template pointing to an AMI that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing AMI and nothing else. The AMI can be further updated over time manually or using a schedule as long as it is always written to the same launch template. ### Method ```typescript public bindAmi(): RunnerAmi ``` ``` -------------------------------- ### Install GitHub Actions Runner Component Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs the GitHub Actions Runner executable, which connects to GitHub to fetch and execute jobs. Requires a `RunnerVersion` to be specified. ```typescript import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners' RunnerImageComponent.githubRunner(runnerVersion: RunnerVersion) ``` -------------------------------- ### LinuxUbuntuComponents.extraCertificates Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs extra certificates on a Linux Ubuntu environment from a specified path. ```APIDOC ## LinuxUbuntuComponents.extraCertificates ### Description Installs extra certificates on a Linux Ubuntu environment from a specified path. ### Method Static Function ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Parameters - **scope** (constructs.Construct) - Required - The scope for the construct. - **id** (string) - Required - The ID of the construct. - **path** (string) - Required - The path to the extra certificates. ``` -------------------------------- ### githubRunner Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs the GitHub Actions Runner. ```APIDOC ## githubRunner ### Description A component to install the GitHub Actions Runner. ### Method RunnerImageComponent.githubRunner ### Request Example ```typescript RunnerImageComponent.githubRunner() ``` ### Response #### Success Response (200) - **void** - Component applied successfully. ``` -------------------------------- ### LinuxUbuntuComponents.docker Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs and configures Docker on a Linux Ubuntu environment. ```APIDOC ## LinuxUbuntuComponents.docker ### Description Installs and configures Docker on a Linux Ubuntu environment. ### Method Static Function ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Parameters - **scope** (constructs.Construct) - Required - The scope for the construct. - **id** (string) - Required - The ID of the construct. - **_architecture** (Architecture) - Required - The architecture for the Docker installation. ``` -------------------------------- ### dockerInDocker Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs Docker-in-Docker. ```APIDOC ## dockerInDocker ### Description A component to install Docker-in-Docker. ### Method RunnerImageComponent.dockerInDocker ### Request Example ```typescript RunnerImageComponent.dockerInDocker() ``` ### Response #### Success Response (200) - **void** - Component applied successfully. ``` -------------------------------- ### components Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md A list of components to be installed on the runner image during the build process. ```APIDOC ## components ### Description Components to install on the image. ### Type RunnerImageComponent[] ### Default none ``` -------------------------------- ### LinuxUbuntuComponents.githubCli Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs and configures the GitHub CLI on a Linux Ubuntu environment. ```APIDOC ## LinuxUbuntuComponents.githubCli ### Description Installs and configures the GitHub CLI on a Linux Ubuntu environment. ### Method Static Function ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Parameters - **scope** (constructs.Construct) - Required - The scope for the construct. - **id** (string) - Required - The ID of the construct. - **_architecture** (Architecture) - Required - The architecture for the GitHub CLI installation. ``` -------------------------------- ### AmiBuilder.addComponent Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Add a component to be installed. ```APIDOC ## AmiBuilder.addComponent ### Description Add a component to be installed. ### Method ```typescript public addComponent(component: ImageBuilderComponent): void ``` ### Parameters #### component - **component** (ImageBuilderComponent) - Required - The component to add. ``` -------------------------------- ### AmiBuilder.bindDockerImage Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Build and return a Docker image with GitHub Runner installed in it. ```APIDOC ## AmiBuilder.bindDockerImage ### Description Build and return a Docker image with GitHub Runner installed in it. Anything that ends up with an ECR repository containing a Docker image that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing image and nothing else. It's important that the specified image tag be available at the time the repository is available. Providers usually assume the image is ready and will fail if it's not. The image can be further updated over time manually or using a schedule as long as it is always written to the same tag. ### Method ```typescript public bindDockerImage(): RunnerImage ``` ``` -------------------------------- ### Setup Runner User Component Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Use this to set up the runner user component. Requires scope, id, and architecture. ```typescript import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners' LinuxUbuntuComponents.runnerUser(scope: Construct, id: string, _architecture: Architecture) ``` -------------------------------- ### requiredPackages Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs the required packages for the runner. ```APIDOC ## requiredPackages ### Description A component to install the required packages for the runner. ### Method RunnerImageComponent.requiredPackages ### Parameters #### Request Body - **props** (RequiredPackagesProps) - Required - Properties for installing required packages. ### Request Example ```typescript RunnerImageComponent.requiredPackages({ // ... RequiredPackagesProps }) ``` ### Response #### Success Response (200) - **void** - Component applied successfully. ``` -------------------------------- ### ContainerImageBuilder.addComponent Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Add a component to be installed. ```APIDOC ## addComponent ### Description Add a component to be installed. ### Method ```typescript public addComponent(component: ImageBuilderComponent): void ``` ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Parameters #### component - *Type:* `ImageBuilderComponent` - Required - The component to add. ``` -------------------------------- ### ContainerImageBuilder.prependComponent Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Add a component to be installed before any other components. ```APIDOC ## prependComponent ### Description Add a component to be installed before any other components. Useful for required system settings like certificates or proxy settings. ### Method ```typescript public prependComponent(component: ImageBuilderComponent): void ``` ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Parameters #### component - *Type:* `ImageBuilderComponent` - Required - The component to add. ``` -------------------------------- ### RunnerImageComponent.git Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs Git on the runner image. Optionally specify a version. ```APIDOC ## RunnerImageComponent.git ### Description A component to install Git. ### Method RunnerImageComponent.git(version?: string) ### Parameters #### Query Parameters - **version** (string) - Optional - Software version to install (e.g. '2.43.0.windows.1'). Default: latest. Only used on Windows; on Linux the package manager is used. ``` -------------------------------- ### LinuxUbuntuComponents.awsCli Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs and configures the AWS CLI on a Linux Ubuntu environment. ```APIDOC ## LinuxUbuntuComponents.awsCli ### Description Installs and configures the AWS CLI on a Linux Ubuntu environment. ### Method Static Function ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Parameters - **scope** (constructs.Construct) - Required - The scope for the construct. - **id** (string) - Required - The ID of the construct. - **architecture** (Architecture) - Required - The architecture for the AWS CLI installation. ``` -------------------------------- ### Get Failed Runner Starts Metric Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/README.md Use this method to obtain a CloudWatch metric for the number of failed runner starts. This metric is crucial for setting up alarms to ensure runners are starting successfully. ```typescript GitHubRunners.metricFailed() ``` -------------------------------- ### Install Docker Component for Runner Image Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs Docker on the runner image. On Windows, this configures dockerd for Windows containers. For Linux containers on Windows, Docker Desktop is required, which may not be compatible with server environments. The version can be specified, defaulting to the latest. ```typescript import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners' RunnerImageComponent.docker(version?: string) ``` -------------------------------- ### AmiBuilder.prependComponent Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Add a component to be installed before any other components, useful for required system settings. ```APIDOC ## AmiBuilder.prependComponent ### Description Add a component to be installed before any other components. Useful for required system settings like certificates or proxy settings. ### Method ```typescript public prependComponent(component: ImageBuilderComponent): void ``` ### Parameters #### component - **component** (ImageBuilderComponent) - Required - The component to prepend. ``` -------------------------------- ### GitHubRunnersProps Initialization Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Example of how to initialize the GitHubRunnersProps object. Ensure all necessary properties are provided according to your project's requirements. ```typescript import { GitHubRunnersProps } from '@cloudsnorkel/cdk-github-runners' const gitHubRunnersProps: GitHubRunnersProps = { ... } ``` -------------------------------- ### Setup Required Packages Component Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Use this to set up the required packages for a GitHub runner. Requires scope, id, and architecture. ```typescript import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners' LinuxUbuntuComponents.requiredPackages(scope: Construct, id: string, architecture: Architecture) ``` -------------------------------- ### RunnerImageComponent.githubCli Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs the GitHub CLI on the runner image. Optionally specify a version. ```APIDOC ## RunnerImageComponent.githubCli ### Description A component to install the GitHub CLI. ### Method RunnerImageComponent.githubCli(version?: string) ### Parameters #### Query Parameters - **version** (string) - Optional - Software version to install (e.g. '2.40.0'). Default: latest. Only used on Windows (x64/windows_amd64); on Linux the package manager is used. ``` -------------------------------- ### ScheduledWarmRunnerProps schedule Property Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Determines when the pool of warm runners should start filling, for example, at the beginning of business hours. This is a required property. ```typescript public readonly schedule: Schedule; ``` -------------------------------- ### Initialize ScheduledWarmRunnerProps Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Example of how to initialize the ScheduledWarmRunnerProps object. Ensure all required properties are provided. ```typescript import { ScheduledWarmRunnerProps } from '@cloudsnorkel/cdk-github-runners' const scheduledWarmRunnerProps: ScheduledWarmRunnerProps = { ... } ``` -------------------------------- ### RunnerImageComponent.getCommands Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Returns commands to run in the built image. Can be used to install packages or set up build prerequisites. ```APIDOC ## getCommands ### Description Returns commands to run to in built image. Can be used to install packages, setup build prerequisites, etc. ### Method Signature ```typescript public getCommands(_os: Os, _architecture: Architecture): string[] ``` ### Parameters #### `_os` - *Type:* Os - Required - Description: The operating system for which to get commands. #### `_architecture` - *Type:* Architecture - Required - Description: The architecture for which to get commands. ``` -------------------------------- ### Get Commands for Runner Image - TypeScript Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Use this method to define commands that will be executed within the built Docker image. This is useful for installing packages or setting up build prerequisites. It requires the operating system and architecture. ```typescript public getCommands(_os: Os, _architecture: Architecture): string[] ``` -------------------------------- ### RunnerAmi Initializer Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Example of how to initialize a RunnerAmi object. Ensure the necessary import is included. ```typescript import { RunnerAmi } from '@cloudsnorkel/cdk-github-runners' const runnerAmi: RunnerAmi = { ... } ``` -------------------------------- ### Setup Wizard Secret Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Setup secret used to authenticate user for our setup wizard. This should be empty after setup has been completed. ```typescript public readonly setup: Secret; ``` -------------------------------- ### CodeBuildImageBuilder bindAmi Method Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Builds and returns an AMI (Amazon Machine Image) with the GitHub Runner installed. ```typescript public bindAmi(): AMI ``` -------------------------------- ### Install AWS CLI Component for Runner Image Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Use this component to install the AWS CLI on the runner image. An optional version can be specified; otherwise, the latest version is installed. ```typescript import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners' RunnerImageComponent.awsCli(version?: string) ``` -------------------------------- ### Install cdk-github-runners in .NET Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/README.md Add the NuGet package to your .NET project. This enables the use of the construct in your C# CDK applications. ```bash dotnet add package CloudSnorkel.Cdk.Github.Runners ``` -------------------------------- ### LambdaAccess.noAccess Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Disables access to the configured Lambda function. This is useful for the setup function after setup is done. ```APIDOC ## LambdaAccess.noAccess ### Description Disables access to the configured Lambda function. This is useful for the setup function after setup is done. ### Method Signature ```typescript LambdaAccess.noAccess() ``` ``` -------------------------------- ### Install Docker-in-Docker Component Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs Docker-in-Docker. Optionally specify a software version; defaults to the latest. ```typescript import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners' RunnerImageComponent.dockerInDocker(version?: string) ``` -------------------------------- ### LinuxUbuntuComponents.requiredPackages Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs required packages for the GitHub runner on Linux Ubuntu. Requires scope, id, and architecture. ```APIDOC ## LinuxUbuntuComponents.requiredPackages ### Description Installs required packages for the GitHub runner on Linux Ubuntu. Requires scope, id, and architecture. ### Method Signature ```typescript LinuxUbuntuComponents.requiredPackages(scope: Construct, id: string, architecture: Architecture) ``` ### Parameters #### Path Parameters - **scope** (constructs.Construct) - Required - The scope for the construct. - **id** (string) - Required - The ID of the construct. - **architecture** (Architecture) - Required - The architecture for the runner. ``` -------------------------------- ### TypeScript: AmiBuilder addComponent Method Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Add a component to be installed. Components are installed in the order they are added. ```typescript public addComponent(component: ImageBuilderComponent): void ``` -------------------------------- ### LambdaAccess.noAccess Function Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Disables access to the configured Lambda function. This is useful for the setup function after initial setup is complete. ```typescript import { LambdaAccess } from '@cloudsnorkel/cdk-github-runners' LambdaAccess.noAccess() ``` -------------------------------- ### Install cdk-github-runners in TypeScript/JavaScript Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/README.md Install the package using npm. This is required before using the construct in a Node.js CDK project. ```bash npm i @cloudsnorkel/cdk-github-runners ``` -------------------------------- ### Specify Runner Version for Installation Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Determines the version of GitHub Runners to be installed. Defaults to the latest available version if not specified. ```typescript public readonly runnerVersion: RunnerVersion; ``` -------------------------------- ### AmiBuilderProps Install Docker Configuration Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Determines whether Docker is installed within the image for runner usage. Defaults to true. ```typescript public readonly installDocker: boolean; ``` -------------------------------- ### Install cdk-github-runners in Python Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/README.md Install the package using pip. This is the first step to using the construct in a Python CDK project. ```bash pip install cloudsnorkel.cdk-github-runners ``` -------------------------------- ### FastLaunchOptions Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Options for enabling and configuring fast launch for AMIs. ```APIDOC ## FastLaunchOptions ### Description Options for fast launch. ### Initializer ```typescript import { FastLaunchOptions } from '@cloudsnorkel/cdk-github-runners' const fastLaunchOptions: FastLaunchOptions = { ... } ``` ### Properties - **enabled** (boolean) - Optional - Enable fast launch for AMIs generated by this builder. Defaults to false. - **maxParallelLaunches** (number) - Optional - The maximum number of parallel instances that are launched for creating resources. Must be at least 6. Defaults to 6. - **targetResourceCount** (number) - Optional - The number of pre-provisioned snapshots to keep on hand for a fast-launch enabled Windows AMI. ``` -------------------------------- ### Install CloudWatch Agent Component for Runner Image Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md This component installs the CloudWatch Agent on the runner image, enabling the sending of logs to CloudWatch. No configuration options are available. ```typescript import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners' RunnerImageComponent.cloudWatchAgent() ``` -------------------------------- ### Setup GitHub Runner Component Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Use this to set up a GitHub runner component. Requires scope, id, runner version, and architecture. ```typescript import { LinuxUbuntuComponents } from '@cloudsnorkel/cdk-github-runners' LinuxUbuntuComponents.githubRunner(scope: Construct, id: string, runnerVersion: RunnerVersion, architecture: Architecture) ``` -------------------------------- ### Configure Fast Launch Options for Image Builder Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Options for fast launch. This is only supported for Windows AMIs. ```typescript public readonly fastLaunchOptions: FastLaunchOptions; ``` -------------------------------- ### ScheduledWarmRunner Initialization Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Demonstrates how to initialize a ScheduledWarmRunner with cron-based scheduling. ```APIDOC ## ScheduledWarmRunner (Cron Example) ### Description Initializes a ScheduledWarmRunner that provisions runners based on a cron schedule. ### Method new ScheduledWarmRunner ### Parameters #### Initializer Parameters - scope (constructs.Construct) - Required - The scope for the construct. - id (string) - Required - The ID of the construct. - props (ScheduledWarmRunnerProps) - Required - Properties for the ScheduledWarmRunner. ### Request Example ```typescript // Cron: fill at 1pm on weekdays new ScheduledWarmRunner(stack, 'Business Hours', { runners, provider: myProvider, count: 3, owner: 'my-org', repo: 'my-repo', schedule: events.Schedule.cron({ hour: '13', minute: '0', weekDay: 'MON-FRI' }), duration: cdk.Duration.hours(2), }); ``` ``` -------------------------------- ### ScheduledWarmRunner Initialization Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Demonstrates how to initialize a ScheduledWarmRunner with rate-based scheduling. ```APIDOC ## ScheduledWarmRunner (Rate Example) ### Description Initializes a ScheduledWarmRunner that provisions runners based on a rate schedule. ### Method new ScheduledWarmRunner ### Parameters #### Initializer Parameters - scope (constructs.Construct) - Required - The scope for the construct. - id (string) - Required - The ID of the construct. - props (ScheduledWarmRunnerProps) - Required - Properties for the ScheduledWarmRunner. ### Request Example ```typescript // Rate: fill every 12 hours new ScheduledWarmRunner(stack, 'Every 12 Hours', { runners, provider: myProvider, count: 2, owner: 'my-org', repo: 'my-repo', schedule: events.Schedule.rate(cdk.Duration.hours(5)), duration: cdk.Duration.hours(12), }); ``` ``` -------------------------------- ### WindowsComponents.cloudwatchAgent Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs CloudWatch Agent on Windows. ```APIDOC ## WindowsComponents.cloudwatchAgent ### Description Installs CloudWatch Agent on Windows. ### Method static ### Parameters #### Path Parameters * **scope** (constructs.Construct) - Required - The scope in which to define this construct. * **id** (string) - Required - The ID of the construct. ### Request Example ```typescript import { WindowsComponents } from '@cloudsnorkel/cdk-github-runners' WindowsComponents.cloudwatchAgent(scope, id) ``` ``` -------------------------------- ### runnerVersion Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Version of GitHub Runners to install. ```APIDOC ## runnerVersion ### Description Version of GitHub Runners to install. ### Type RunnerVersion ### Default latest version available ``` -------------------------------- ### Deploy CDK Stack Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/examples/python/ec2-windows-provider/README.md Deploy the Cloud Development Kit stack to provision resources. ```bash cdk deploy ``` -------------------------------- ### Runner Configuration Command Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Example command to configure a runner using provided parameters. Ensure all parameters are correctly substituted from Step Functions task parameters. ```sh ./config.sh --unattended --url "{REGISTRATION_URL}" --token "${RUNNER_TOKEN}" --ephemeral --work _work --labels "${RUNNER_LABEL}" --name "${RUNNER_NAME}" --disableupdate ``` -------------------------------- ### storageSize Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Configures the size of the boot volume for launched runner instances. ```APIDOC ## storageSize ### Description Size of volume available for launched runner instances. This modifies the boot volume size and doesn't add any additional volumes. ### Type aws-cdk-lib.Size ### Default 30GB ``` -------------------------------- ### LinuxUbuntuComponents.runnerUser Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Sets up the user for the GitHub runner on Linux Ubuntu. Requires scope, id, and architecture. ```APIDOC ## LinuxUbuntuComponents.runnerUser ### Description Sets up the user for the GitHub runner on Linux Ubuntu. Requires scope, id, and architecture. ### Method Signature ```typescript LinuxUbuntuComponents.runnerUser(scope: Construct, id: string, _architecture: Architecture) ``` ### Parameters #### Path Parameters - **scope** (constructs.Construct) - Required - The scope for the construct. - **id** (string) - Required - The ID of the construct. - **_architecture** (Architecture) - Required - The architecture for the runner. ``` -------------------------------- ### dockerSetupCommands Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Additional commands to run on the build host before starting the Docker runner image build. Use this to execute commands such as `docker login` or `aws ecr get-login-password` to pull private base images. ```APIDOC ## dockerSetupCommands ### Description Additional commands to run on the build host before starting the Docker runner image build. Use this to execute commands such as `docker login` or `aws ecr get-login-password` to pull private base images. ### Type string[] ### Default [] ``` -------------------------------- ### RunnerImageBuilder.bindAmi Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Build and return an AMI with GitHub Runner installed in it. Anything that ends up with a launch template pointing to an AMI that runs GitHub self-hosted runners can be used. ```APIDOC ## bindAmi ### Description Build and return an AMI with GitHub Runner installed in it. Anything that ends up with a launch template pointing to an AMI that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing AMI and nothing else. The AMI can be further updated over time manually or using a schedule as long as it is always written to the same launch template. ### Method ```typescript public bindAmi(): RunnerAmi ``` ``` -------------------------------- ### gpu Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Number of GPUs to request for the runner task. When set, the task will be scheduled on GPU-capable instances. Requires a GPU-capable instance type (e.g., g4dn.xlarge for 1 GPU, g4dn.12xlarge for 4 GPUs) and GPU AMI. When creating a new cluster, instanceType defaults to g4dn.xlarge and the ECS Optimized GPU AMI is used. You must ensure that the task's container image includes the CUDA runtime. Provide a CUDA-enabled base image via `baseDockerImage`, use an image builder that starts from a GPU-capable image (such as nvidia/cuda), or add an image component that installs the CUDA runtime into the image. ```APIDOC ## gpu ### Description Number of GPUs to request for the runner task. When set, the task will be scheduled on GPU-capable instances. Requires a GPU-capable instance type (e.g., g4dn.xlarge for 1 GPU, g4dn.12xlarge for 4 GPUs) and GPU AMI. When creating a new cluster, instanceType defaults to g4dn.xlarge and the ECS Optimized GPU AMI is used. You must ensure that the task's container image includes the CUDA runtime. Provide a CUDA-enabled base image via `baseDockerImage`, use an image builder that starts from a GPU-capable image (such as nvidia/cuda), or add an image component that installs the CUDA runtime into the image. ### Type number ### Default undefined (no GPU) ``` -------------------------------- ### RunnerImageComponent.requiredPackages Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs the necessary packages required for the runner to function. ```APIDOC ## RunnerImageComponent.requiredPackages ### Description A component to install the required packages for the runner. ### Method RunnerImageComponent.requiredPackages() ``` -------------------------------- ### Customize AmiBuilder with Components and Settings Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Example of creating an `AmiBuilder` instance to customize the AMI used for runners. It demonstrates setting a specific runner version, defining a rebuild interval, and adding custom components with commands. ```typescript const builder = new AmiBuilder(this, 'Builder', { runnerVersion: RunnerVersion.specific('2.293.0'), rebuildInterval: Duration.days(14), }); builder.addComponent(new ImageBuilderComponent(scope, id, { platform: 'Linux', displayName: 'p7zip', description: 'Install some more packages', commands: [ 'apt-get install p7zip', ], })); new Ec2RunnerProvider(this, 'EC2 provider', { labels: ['custom-ec2'], amiBuilder: builder, }); ``` -------------------------------- ### cloudWatchAgent Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs the CloudWatch Agent for the runner to send logs. ```APIDOC ## cloudWatchAgent ### Description A component to install CloudWatch Agent for the runner so we can send logs. ### Method RunnerImageComponent.cloudWatchAgent ### Request Example ```typescript RunnerImageComponent.cloudWatchAgent() ``` ### Response #### Success Response (200) - **void** - Component applied successfully. ``` -------------------------------- ### Configure CodeBuildImageBuilder with Customizations Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Example of creating a CodeBuildImageBuilder with a specific Dockerfile, runner version, rebuild interval, and additional build arguments for packages. ```typescript const builder = new CodeBuildImageBuilder(this, 'Builder', { dockerfilePath: FargateRunnerProvider.LINUX_X64_DOCKERFILE_PATH, runnerVersion: RunnerVersion.specific('2.293.0'), rebuildInterval: Duration.days(14), }); builder.setBuildArg('EXTRA_PACKAGES', 'nginx xz-utils'); new FargateRunnerProvider(this, 'Fargate provider', { labels: ['customized-fargate'], imageBuilder: builder, }); ``` -------------------------------- ### RunnerImageComponent.shouldReboot Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Determines if the image builder should reboot after this component is installed. ```APIDOC ## shouldReboot ### Description Returns true if the image builder should be rebooted after this component is installed. ### Method Signature ```typescript public shouldReboot(_os: Os, _architecture: Architecture): boolean ``` ### Parameters #### `_os` - *Type:* Os - Required - Description: The operating system for which to check reboot status. #### `_architecture` - *Type:* Architecture - Required - Description: The architecture for which to check reboot status. ``` -------------------------------- ### Configure GitHubRunners with Custom Providers and VPC Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Configure runner providers for specific VPCs, security groups, and grant necessary permissions. This example shows setting up a custom CodeBuild provider and allowing runners to connect to a database. ```typescript const vpc = ec2.Vpc.fromLookup(this, 'vpc', { vpcId: 'vpc-1234567' }); const runnerSg = new ec2.SecurityGroup(this, 'runner security group', { vpc: vpc }); const dbSg = ec2.SecurityGroup.fromSecurityGroupId(this, 'database security group', 'sg-1234567'); const bucket = new s3.Bucket(this, 'runner bucket'); // create a custom CodeBuild provider const myProvider = new CodeBuildRunnerProvider( this, 'codebuild runner', { labels: ['my-codebuild'], vpc: vpc, securityGroups: [runnerSg], }, ); // grant some permissions to the provider bucket.grantReadWrite(myProvider); dbSg.connections.allowFrom(runnerSg, ec2.Port.tcp(3306), 'allow runners to connect to MySQL database'); // create the runner infrastructure new GitHubRunners( this, 'runners', { providers: [myProvider], } ); ``` -------------------------------- ### RunnerImageBuilder Initialization Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Demonstrates how to initialize the RunnerImageBuilder, which is used for building custom GitHub Runner Docker images or AMIs. ```APIDOC ## RunnerImageBuilder Initialization ### Description Initializes a new instance of the `RunnerImageBuilder` class. This builder is responsible for creating Docker images or AMIs that include the GitHub Runner and other necessary software. ### Method ```typescript new RunnerImageBuilder(scope: Construct, id: string, props?: RunnerImageBuilderProps) ``` ### Parameters #### Path Parameters * None #### Query Parameters * None #### Request Body * None ### Parameters #### `scope` - **scope** (constructs.Construct) - Required - *No description.* #### `id` - **id** (string) - Required - *No description.* #### `props` - **props** (RunnerImageBuilderProps) - Optional - *No description.* ### Request Example ```typescript import { RunnerImageBuilder } from '@cloudsnorkel/cdk-github-runners' import { Construct } from 'constructs'; // Assuming 'scope' and 'id' are defined elsewhere // const scope: Construct = ...; // const id: string = 'MyRunnerImageBuilder'; // Example initialization with optional props // const runnerImageBuilder = new RunnerImageBuilder(scope, id, { /* props */ }); // Example initialization without props // const runnerImageBuilder = new RunnerImageBuilder(scope, id); ``` ### Response * This is a constructor, it does not return a value in the traditional sense but initializes an object. ### Response Example * N/A ``` -------------------------------- ### Os.is Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Checks if the given OS is the same as this one. ```APIDOC ## Os.is ### Description Checks if the given OS is the same as this one. ### Method Signature ```typescript public is(os: Os): boolean ``` ### Parameters #### Path Parameters - **os** (Os) - Required - OS to compare. ``` -------------------------------- ### lambdaEntrypoint Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Sets up the required Lambda entrypoint for Lambda runners. ```APIDOC ## lambdaEntrypoint ### Description A component to set up the required Lambda entrypoint for Lambda runners. ### Method RunnerImageComponent.lambdaEntrypoint ### Request Example ```typescript RunnerImageComponent.lambdaEntrypoint() ``` ### Response #### Success Response (200) - **void** - Component applied successfully. ``` -------------------------------- ### Workflow for Customized Fargate Runner Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/README.md Example workflow YAML demonstrating how to use a custom-labeled Fargate runner. Ensure the `runs-on` field matches the labels defined for your custom provider. ```yaml name: self-hosted example on: push jobs: self-hosted: runs-on: [self-hosted, customized-fargate] steps: - run: echo hello world ``` -------------------------------- ### RunnerImageComponent.dockerInDocker Source: https://github.com/cloudsnorkel/cdk-github-runners/blob/main/API.md Installs Docker-in-Docker on the runner image. Optionally specify a version. ```APIDOC ## RunnerImageComponent.dockerInDocker ### Description A component to install Docker-in-Docker. ### Method RunnerImageComponent.dockerInDocker(version?: string) ### Parameters #### Query Parameters - **version** (string) - Optional - Software version to install (e.g. '29.1.5'). Default: latest. ```