This Terraform module deploys autoscaling, self-hosted GitHub Action runners on
dedicated EC2 instances. It is an extension of the popular philips-labs/github-runner/aws module,
with additional features to add value to your GitHub Action runners.
- Auto-Scaling Runners: Automatically scales the number of runners based on demand.
- Ephemeral Runners: Provides an option to use ephemeral runners that are destroyed after use.
- Tag-Based Runner Assignment: Uses tags to assign runners to specific tasks.
- Custom Runner Configuration: Allows custom configuration of runners, including instance types, AMIs, and more.
- Instance Store RAID: If more than 2 instance stores are detected, they are
combined into a
RAID0configuration for improved performance. - Automated Docker Login: If custom Docker authentication is configured, the
runners will automatically perform a
docker login.
module"github_runner" {
source="cruxstack/github-runner/aws"version="x.x.x"github_app_secrets={
id ="your_github_app_id"
key ="your_github_app_key"
}
github_organization="your_github_organization_name"
}In addition to the variables documented below, this module includes several
other optional variables (e.g., name, tags, etc.) provided by the
cloudposse/label/null module. Please refer to the cloudposse/label documentation for more details on these variables.
| Name | Description | Type | Default | Required |
|---|---|---|---|---|
github_app_secrets | Object containing id and key for the GitHub app. | object | n/a | yes |
github_organization | Name of the GitHub organization. | string | n/a | yes |
github_app_webhook_password | Password for the GitHub app webhook. An empty string implies a randomly generated password. | string | "" | no |
github_organization_runner_enabled | Toggle to activate runners for all projects in the organization. | bool | true | no |
runner_binaries_path | Path to the GitHub Action runner binaries saved locally before pushed to S3. | string | "" | no |
runner_ephemeral_mode_enabled | Toggle to activate ephemeral runners. | bool | false | no |
runner_os | Operating system for the GitHub Action runner. | string | "linux" | no |
instance_ami_name | Name of the Amazon Machine Image (AMI) for the GitHub Action runner. | string | "al2023-ami-2023.*-kernel-*-x86_64" | no |
instance_types | Set of instance types for the action runner. | set(string) | ["m5ad.large", "m5d.large"] | no |
instance_lifecycle_type | Lifecycle type for action runner instances. Options: spot or on-demand. | string | "spot" | no |
log_retention | Retention period (in days) for logs in CloudWatch. | number | 90 | no |
vpc_id | ID of the Virtual Private Cloud (VPC). | string | n/a | yes |
vpc_subnet_ids | List of subnet IDs within the VPC. | list(string) | n/a | yes |
aws_region_name | AWS region. | string | "" | no |
aws_account_id | AWS account ID. | string | "" | no |
aws_kv_namespace | Namespace or prefix for AWS SSM parameters and similar resources. | string | "" | no |
| Name | Description |
|---|---|
runners | Information about the runner resources created. |
webhook_endpoint | Endpoint for the webhook resources. |
webhook_password | Password for the webhook resources. |
We welcome contributions to this project. For information on setting up a development environment and how to make a contribution, see CONTRIBUTING documentation.