omsf/start-aws-gha-runner

A simple GitHub Action for creating a self-hosted runner on AWS.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit Jul 10, 2026
License
MIT

Pinned Snippet

workflow.ymlSHA-pinned
uses: omsf/start-aws-gha-runner@a68aee57f031da4b6a0063d901e02f0b17d95f94 # v1.3.0

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
aws_home_dirThe AWS AMI home directory to use for your runner. Will not start if not specified. For example: `/home/ec2-user`yes
aws_iam_roleThe optional AWS IAM role to assume for provisioning your runner.no
aws_image_idThe machine AMI to use for your runner. This AMI can be a default but should have docker installed in the AMI. Will not start if not specified. If set to `latest`, `aws_image_name` is requiredyes
aws_image_nameThe AMI name. Only required if `aws_image_id` is set to latest. Be as specific as possible. For example: Deep Learning Base OSS Nvidia Driver GPU AMI (Ubuntu 24.04)
aws_instance_typeThe type of instance to use for your runner. For example: t2.micro, t4g.nano, etc. Will not start if not specified.yes
aws_market_typeThe EC2 market type: `on-demand` (default) or `spot`.noon-demand
aws_spot_max_priceThe maximum hourly price (USD, as a string, e.g. `0.50`) to pay for a spot instance. Only used when `aws_market_type` is `spot`. Defaults to the on-demand price if unset.no
aws_region_nameThe AWS region name to use for your runner. Defaults to AWS_REGION.no
aws_root_device_sizeThe root device size in GB to use for your runner. Optional, defaults to the AMI default root disk size.no
aws_security_group_idThe AWS security group ID to use for your runner. Will use the account default security group if not specified.no
aws_subnet_idThe AWS subnet ID to use for your runner. Will use the account default subnet if not specified.no
aws_tagsThe AWS tags to use for your runner, formatted as a JSON list. See `README` for more details.no
extra_gh_labelsAny extra GitHub labels to tag your runners with. Passed as a comma-separated list with no spaces.no
instance_countThe number of instances to create, defaults to 1yes1
repoThe repo to run against. Will use the current repo if not specified.no
gh_timeoutThe timeout in seconds to wait for the runner to come online as seen by the GitHub API. Defaults to 1200 seconds.yes1200
namedescription
mappingA JSON object mapping instance IDs to unique GitHub runner labels. This is used in conjunction with the `instance_mapping` input when stopping.
instancesA JSON list of the GitHub runner labels to be used in the 'runs-on' field