Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

awesome-runners

A curated list of awesome self-hosted GitHub Action runners in a large comparison matrix
https://github.com/jonico/awesome-runners

Last synced: about 15 hours ago
JSON representation

  • Purpose

    • General collection of self-hosted runner best practices

    • A word about self-hosted action runner images / virtual environments and how to test locally

      • nektos/act - P option](https://github.com/nektos/act#use-an-alternative-runner-image), see a more complex example [here](https://github.com/jonico/visualize-actions-matrix-builds-on-k8s/blob/master/simulate-action-workflow.sh).
      • a LOT of pre-installed tools - hosted runner, this would result in [images > 18 GB](https://github.com/nektos/act#alternative-runner-images). In many cases where you have a better picture for which purposes/platforms you will use your self-hosted runners, this is probably not what you want for performance and maintenance reasons. All of the self-hosted solutions compared allow to define custom images with custom tooling.
  • The matrix (might be better readable on [GitHub pages](https://jonico.github.io/awesome-runners/))

    • A word about self-hosted action runner images / virtual environments and how to test locally

      • actions/actions-runner-controller - runner-controller.svg)](https://github.com/actions/actions-runner-controller/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/actions/actions-runner-controller.svg)](https://github.com/actions/actions-runner-controller/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/actions/actions-runner-controller.svg)](https://github.com/actions/actions-runner-controller/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/actions/actions-runner-controller.svg)](https://GitHub.com/actions/actions-runner-controller/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/actions/actions-runner-controller.svg)](https://GitHub.com/actions/actions-runner-controller/issues?q=is%3Aissue+is%3Aclosed) | k8s | ✅ | Enterprise, Org, Repo, Labels, RunnerGroups | k8s manifests & dynamic scaling | ✅ (pending + running jobs or percentage runners already busy, check run events, scale up/down and flapping prevention parameters) | x86, AMD64, ARM, ARM64 | ✅ | no | yes (if ephemeral option is used) | yes (install time, optional DinD) | only if github-webhook autoscaler is used | no | yes ([IssueOps project available](https://github.com/jonico/auto-scaling-github-runners-kubernetes-issueops)) | actions-runner controller + at least one pod per org runner |
      • philips-labs/terraform-aws-github-runner - labs/terraform-aws-github-runner.svg)](https://github.com/philips-labs/terraform-aws-github-runner/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/philips-labs/terraform-aws-github-runner.svg)](https://github.com/philips-labs/terraform-aws-github-runner/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/philips-labs/terraform-aws-github-runner.svg)](https://github.com/philips-labs/terraform-aws-github-runner/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/philips-labs/terraform-aws-github-runner.svg)](https://GitHub.com/philips-labs/terraform-aws-github-runner/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/philips-labs/terraform-aws-github-runner.svg)](https://GitHub.com/philips-labs/terraform-aws-github-runner/issues?q=is%3Aissue+is%3Aclosed) | AWS EC2/Lambda for Linux and Windows VMs | ✅ | Org, Repo, Labels, RunnerGroups | Terraform config & dynamic scaling | ✅ (pending jobs in org/repo, scale up/down and flapping prevention parameters) | x86, AMD64, ARM, ARM64 | ✅ | no | yes (if ephemeral option is used) | no | yes (GitHub check_run events) | yes (at least intended this way) | yes ([IssueOps project available](https://github.com/jonico/auto-scaling-github-runners-ec2-issueops)) | no (only Lambdas, KMS, queue service, API gateway) |
      • myoung34/docker-github-actions-runner - github-actions-runner.svg)](https://github.com/myoung34/docker-github-actions-runner/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/myoung34/docker-github-actions-runner.svg)](https://github.com/myoung34/docker-github-actions-runner/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/myoung34/docker-github-actions-runner.svg)](https://github.com/myoung34/docker-github-actions-runner/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/myoung34/docker-github-actions-runner.svg)](https://GitHub.com/myoung34/docker-github-actions-runner/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/myoung34/docker-github-actions-runner.svg)](https://GitHub.com/myoung34/docker-github-actions-runner/issues?q=is%3Aissue+is%3Aclosed) | Docker | ✅ | Org, Repo, Labels, RunnerGroups | docker-compose, Nomad & k8s examples | ❌ | x86, ARM64, ARM | ✅ | yes | no | yes (DinD) | no | no | no | no |
      • evryfs/github-actions-runner-operator - actions-runner-operator.svg)](https://github.com/evryfs/github-actions-runner-operator/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/evryfs/github-actions-runner-operator.svg)](https://github.com/evryfs/github-actions-runner-operator/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/evryfs/github-actions-runner-operator.svg)](https://github.com/evryfs/github-actions-runner-operator/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/evryfs/github-actions-runner-operator.svg)](https://GitHub.com/evryfs/github-actions-runner-operator/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/evryfs/github-actions-runner-operator.svg)](https://GitHub.com/evryfs/github-actions-runner-operator/issues?q=is%3Aissue+is%3Aclosed) | k8s | ✅ | Organization, Repo | yes (k8s manifests define max and min) |✅ scales up to min runners ASAP, then adds one runner at a time up to max if all current runners are busy, scales down idle runners up to min| x86 | ✅ | no | yes (ephemeral from v0.10.0) | yes (install time, optional DinD) | no | no | no | actions-runner controller |
      • MonolithProjects/ansible-github_actions_runner - github_actions_runner.svg)](https://github.com/MonolithProjects/ansible-github_actions_runner/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/MonolithProjects/ansible-github_actions_runner.svg)](https://github.com/MonolithProjects/ansible-github_actions_runner/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/MonolithProjects/ansible-github_actions_runner.svg)](https://github.com/MonolithProjects/ansible-github_actions_runner/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/MonolithProjects/ansible-github_actions_runner.svg)](https://GitHub.com/MonolithProjects/ansible-github_actions_runner/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/MonolithProjects/ansible-github_actions_runner.svg)](https://GitHub.com/MonolithProjects/ansible-github_actions_runner/issues?q=is%3Aissue+is%3Aclosed) | bare metal/VM | ✅ | Organization, Repo, Labels | based on Ansible playbook | ❌ | x86, AMD64, ARM, ARM64 | explicitly in playbook | no | no | install Ansible agents | Ansible agents | possible | no | Ansible agents |
      • SanderKnape/github-runner - runner.svg)](https://github.com/SanderKnape/github-runner/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/SanderKnape/github-runner.svg)](https://github.com/SanderKnape/github-runner/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/SanderKnape/github-runner.svg)](https://github.com/SanderKnape/github-runner/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/SanderKnape/github-runner.svg)](https://GitHub.com/SanderKnape/github-runner/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/SanderKnape/github-runner.svg)](https://GitHub.com/SanderKnape/github-runner/issues?q=is%3Aissue+is%3Aclosed) | Docker | ❌ | Org, Repo, Labels | k8s manifest example | ❌ | x86 | ✅ | yes | no | no | no | no | no | no |
      • machulav/ec2-github-runner - github-runner.svg)](https://github.com/machulav/ec2-github-runner/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/machulav/ec2-github-runner.svg)](https://github.com/machulav/ec2-github-runner/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/machulav/ec2-github-runner.svg)](https://github.com/machulav/ec2-github-runner/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/machulav/ec2-github-runner.svg)](https://GitHub.com/machulav/ec2-github-runner/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/machulav/ec2-github-runner.svg)](https://GitHub.com/machulav/ec2-github-runner/issues?q=is%3Aissue+is%3Aclosed) | AWS EC2 | ❌ | Repo | GitHub Actions workflow params | ✅ (1 runner per workflow run that requests it) | x86 | part of Actions workflow | no | yes (ephemeral) | no | embedded in GitHub Action workflow | possible | yes (Actions Workflow) | no |
      • terraform-google-modules/terraform-google-github-actions-runners - google-modules/terraform-google-github-actions-runners.svg)](https://github.com/terraform-google-modules/terraform-google-github-actions-runners/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/terraform-google-modules/terraform-google-github-actions-runners.svg)](https://github.com/terraform-google-modules/terraform-google-github-actions-runners/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/terraform-google-modules/terraform-google-github-actions-runners.svg)](https://github.com/terraform-google-modules/terraform-google-github-actions-runners/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/terraform-google-modules/terraform-google-github-actions-runners.svg)](https://GitHub.com/terraform-google-modules/terraform-google-github-actions-runners/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/terraform-google-modules/terraform-google-github-actions-runners.svg)](https://GitHub.com/terraform-google-modules/terraform-google-github-actions-runners/issues?q=is%3Aissue+is%3Aclosed)| k8s (GKE), Docker, VMs (GCE) | ❌ | Repo | Terraform config/k8s manifests | only on k8s, based on generic pod CPU consumption (HPA metric) | x86 | only worked for Docker | yes | no | no | no | VMs could be configured like this | no | at least one idle runner to allow HPA to kick in based on CPU consumption |
      • github-developer/self-hosted-runners-anthos - developer/self-hosted-runners-anthos.svg)](https://github.com/github-developer/self-hosted-runners-anthos/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/github-developer/self-hosted-runners-anthos.svg)](https://github.com/github-developer/self-hosted-runners-anthos/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/github-developer/self-hosted-runners-anthos.svg)](https://github.com/github-developer/self-hosted-runners-anthos/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/github-developer/self-hosted-runners-anthos.svg)](https://GitHub.com/github-developer/self-hosted-runners-anthos/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/github-developer/self-hosted-runners-anthos.svg)](https://GitHub.com/github-developer/self-hosted-runners-anthos/issues?q=is%3Aissue+is%3Aclosed)| k8s (Anthos GKE) | ❌ | Repo | Terraform config/k8s manifests | only on k8s, based on generic pod CPU consumption (HPA metric) | x86 | ✅ | yes | no | yes, for DinD (can be turned off) | no | no | no | at least one idle runner to allow HPA to kick in based on CPU consumption |
      • cosmoconsult/github-runner-windows - runner-windows.svg)](https://github.com/cosmoconsult/github-runner-windows/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/cosmoconsult/github-runner-windows.svg)](https://github.com/cosmoconsult/github-runner-windows/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/cosmoconsult/github-runner-windows.svg)](https://github.com/cosmoconsult/github-runner-windows/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/cosmoconsult/github-runner-windows.svg)](https://GitHub.com/cosmoconsult/github-runner-windows/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/cosmoconsult/github-runner-windows.svg)](https://GitHub.com/cosmoconsult/github-runner-windows/issues?q=is%3Aissue+is%3Aclosed) | Windows Docker container | ❌ | Org, Repo | docker compose example in [blog post](https://tobiasfenster.io/building-docker-images-for-multiple-windows-server-versions-using-self-hosted-github-runners) | ❌ | win-x86 | replace but not remove | yes | no | no | no | no | no | no |
      • aslafy-z/github-runner - z/github-runner.svg)](https://github.com/aslafy-z/github-runner/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/aslafy-z/github-runner.svg)](https://github.com/aslafy-z/github-runner/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/aslafy-z/github-runner.svg)](https://github.com/aslafy-z/github-runner/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/aslafy-z/github-runner.svg)](https://GitHub.com/aslafy-z/github-runner/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/aslafy-z/github-runner.svg)](https://GitHub.com/aslafy-z/github-runner/issues?q=is%3Aissue+is%3Aclosed) | (fat) Docker, AWS EC2 | ❌ | Repo, Labels | k8s & Nomad examples | ❌ | x86 | ❌ | yes | no | optional to run DinD | no | yes (50G+ image with all tools) | no | no |
      • redhat-actions/self-hosted-runner-installer - actions/self-hosted-runner-installer.svg)](https://github.com/redhat-actions/self-hosted-runner-installer/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/redhat-actions/self-hosted-runner-installer.svg)](https://github.com/redhat-actions/self-hosted-runner-installer/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/redhat-actions/self-hosted-runner-installer.svg)](https://github.com/redhat-actions/self-hosted-runner-installer/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/redhat-actions/self-hosted-runner-installer.svg)](https://GitHub.com/redhat-actions/self-hosted-runner-installer/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/redhat-actions/self-hosted-runner-installer.svg)](https://GitHub.com/redhat-actions/self-hosted-runner-installer/issues?q=is%3Aissue+is%3Aclosed) | Kubernetes (OpenShift) | ✅ | Org, Repo, Labels | HELM chart parameters | ❌ | x86 | ✅ | yes | no | no | no | no | no | no |
      • peter-murray/github-actions-runner-container - murray/github-actions-runner-container.svg)](https://github.com/peter-murray/github-actions-runner-container/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/peter-murray/github-actions-runner-container.svg)](https://github.com/peter-murray/github-actions-runner-container/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/peter-murray/github-actions-runner-container.svg)](https://github.com/peter-murray/github-actions-runner-container/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/peter-murray/github-actions-runner-container.svg)](https://GitHub.com/peter-murray/github-actions-runner-container/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/peter-murray/github-actions-runner-container.svg)](https://GitHub.com/peter-murray/github-actions-runner-container/issues?q=is%3Aissue+is%3Aclosed) | Docker | ❌ | Enterprise, Org, Repo, Labels, RunnerGroups | ❌ | ❌ | x86 | ✅ | yes | yes | no | no | no | no | no |
      • lts-beratung/ansible-github-action-runner - beratung/ansible-github-action-runner.svg)](https://github.com/lts-beratung/ansible-github-action-runner/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/lts-beratung/ansible-github-action-runner.svg)](https://github.com/lts-beratung/ansible-github-action-runner/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/lts-beratung/ansible-github-action-runner.svg)](https://github.com/lts-beratung/ansible-github-action-runner/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/lts-beratung/ansible-github-action-runner.svg)](https://GitHub.com/lts-beratung/ansible-github-action-runner/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/lts-beratung/ansible-github-action-runner.svg)](https://GitHub.com/lts-beratung/ansible-github-action-runner/issues?q=is%3Aissue+is%3Aclosed) | bare metal or VM | ❌ | Org, Repo | Ansible playbook | ❌ | x86 | ✅ | yes | no | install Ansible agents | Ansible agents | possible | no | Ansible agents |
      • rakheshster/github-runner-on-ubuntu - runner-on-ubuntu.svg)](https://github.com/rakheshster/github-runner-on-ubuntu/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/rakheshster/github-runner-on-ubuntu.svg)](https://github.com/rakheshster/github-runner-on-ubuntu/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/rakheshster/github-runner-on-ubuntu.svg)](https://github.com/rakheshster/github-runner-on-ubuntu/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/rakheshster/github-runner-on-ubuntu.svg)](https://GitHub.com/rakheshster/github-runner-on-ubuntu/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/rakheshster/github-runner-on-ubuntu.svg)](https://GitHub.com/rakheshster/github-runner-on-ubuntu/issues?q=is%3Aissue+is%3Aclosed) | Azure VM (ARM template) | ❌ | Repo | ❌ | ❌ | x86 | ❌ | yes | no | no | no | possible | no | no |
      • ChristopherHX/github-act-runner - act-runner.svg)](https://github.com/ChristopherHX/github-act-runner/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/ChristopherHX/github-act-runner.svg)](https://github.com/ChristopherHX/github-act-runner/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/ChristopherHX/github-act-runner.svg)](https://github.com/ChristopherHX/github-act-runner/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/ChristopherHX/github-act-runner.svg)](https://github.com/ChristopherHX/github-act-runner/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/ChristopherHX/github-act-runner.svg)](https://github.com/ChristopherHX/github-act-runner/issues?q=is%3Aissue+is%3Aclosed)|bare metal|✅|Enterprise, Org, Repo, Labels, RunnerGroups|❌|❌|x86, AMD64, ARM, ARM64, riscv64, s390x, ppc64, ppc64le, mips, mipsle, mips64, mips64le on Linux, Windows, macOS, Openbsd, Freebsd, Netbsd, Solaris, Dragonfly, Plan9, Android and Illumos|❌|no|yes|no|no|no|no|no|
      • related-sciences/gce-github-runner - sciences/gce-github-runner.svg)](https://github.com/related-sciences/gce-github-runner/blob/main/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/related-sciences/gce-github-runner.svg)](https://github.com/related-sciences/gce-github-runner/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/related-sciences/gce-github-runner.svg)](https://github.com/related-sciences/gce-github-runner/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/related-sciences/gce-github-runner.svg)](https://GitHub.com/related-sciences/gce-github-runner/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/related-sciences/gce-github-runner.svg)](https://GitHub.com/related-sciences/gce-github-runner/issues?q=is%3Aissue+is%3Aclosed) | GCP GCE | ❌ | Repo | GitHub Actions workflow params | ✅ (1 runner per workflow run that requests it) | x86 | part of Actions workflow | no | yes (ephemeral) | no | embedded in GitHub Action workflow | possible | yes (Actions Workflow) | no |
      • whywaita/myshoes - closed](https://img.shields.io/github/issues-closed/whywaita/myshoes.svg)](https://github.com/whywaita/myshoes/issues?q=is%3Aissue+is%3Aclosed) | Virtual Machine: LXD, OpenStack, AWS, and more! (pluggable, can implement any platform) The already implemented provider is [whywaita/myshoes-providers](https://github.com/whywaita/myshoes-providers) | ✅ | Repo, Org | GitHub Actions workflow params | ✅ (1 runner per workflow run that requests it) | any platform that can start bash script or transpiled script from a bash script | part of Actions workflow | no | yes (ephemeral) | no | yes (GitHub check_run events) | possible (provide image in some provider, e.g. [whywaita/virtual-environments-lxd](https://github.com/whywaita/virtual-environments-lxd/) and [shoes-lxd](https://github.com/whywaita/myshoes-providers/tree/master/shoes-lxd/images)) | no | myshoes daemon process |
      • boozallen/goobernetes - closed](https://img.shields.io/github/issues-closed/boozallen/goobernetes.svg)](https://GitHub.com/boozallen/goobernetes/issues?q=is%3Aissue+is%3Aclosed) | k8s | ✅ | Enterprise, Org, Repo, Labels, RunnerGroups | k8s manifests & dynamic scaling | ✅ (pending + running jobs or percentage runners already busy, check run events, scale up/down and flapping prevention parameters) | AMD64, others possible | ✅ | no | yes (if ephemeral option is used) | yes (install time, optional DInD) | only if github-webhook autoscaler is used | no | yes ([IssueOps project available](https://github.com/jonico/auto-scaling-github-runners-kubernetes-issueops)) | actions-runner controller + at least one pod per org runner |
      • some-natalie/kubernoodles - natalie/kubernoodles.svg)](https://github.com/some-natalie/kubernoodles/blob/main/LICENSE.md) [![GitHub contributors](https://img.shields.io/github/contributors/some-natalie/kubernoodles.svg)](https://github.com/some-natalie/kubernoodles/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/some-natalie/kubernoodles.svg)](https://github.com/some-natalie/kubernoodles/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/some-natalie/kubernoodles.svg)](https://GitHub.com/some-natalie/kubernoodles/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/some-natalie/kubernoodles.svg)](https://GitHub.com/some-natalie/kubernoodles/issues?q=is%3Aissue+is%3Aclosed) | k8s | ✅ | Enterprise, Org, Repo, Labels, RunnerGroups | k8s manifests & dynamic scaling | ✅ (pending + running jobs or percentage runners already busy, check run events, scale up/down and flapping prevention parameters) | AMD64, others possible | ✅ | no | yes (if ephemeral option is used) | yes (install time, optional DinD) | only if github-webhook autoscaler is used | no | yes ([IssueOps project available](https://github.com/jonico/auto-scaling-github-runners-kubernetes-issueops)) | actions-runner controller + at least one pod per org runner |
      • knatnetwork/github-runner - runner.svg)](https://github.com/knatnetwork/github-runner/blob/master/LICENSE.md) [![GitHub contributors](https://img.shields.io/github/contributors/knatnetwork/github-runner.svg)](https://github.com/knatnetwork/github-runner/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/knatnetwork/github-runner.svg)](https://github.com/knatnetwork/github-runner/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/knatnetwork/github-runner.svg)](https://GitHub.com/knatnetwork/github-runner/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/knatnetwork/github-runner.svg)](https://GitHub.com/knatnetwork/github-runner/issues?q=is%3Aissue+is%3Aclosed) | Docker for single machine quick start or K8s deployments for multiple replicas | ❌ | Org, Repo, Labels | docker-compose or k8s deployment | ❌ | AMD64, ARM64 | ✅ | no | yes (if ephemeral option is used) | yes (install time, optional DinD) | no | no | no | no |
      • CloudSnorkel/cdk-github-runners - github-runners.svg)](https://github.com/CloudSnorkel/cdk-github-runners/blob/master/LICENSE.md) [![GitHub contributors](https://img.shields.io/github/contributors/CloudSnorkel/cdk-github-runners.svg)](https://github.com/CloudSnorkel/cdk-github-runners/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/CloudSnorkel/cdk-github-runners.svg)](https://github.com/CloudSnorkel/cdk-github-runners/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/CloudSnorkel/cdk-github-runners.svg)](https://GitHub.com/CloudSnorkel/cdk-github-runners/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/CloudSnorkel/cdk-github-runners.svg)](https://GitHub.com/CloudSnorkel/cdk-github-runners/issues?q=is%3Aissue+is%3Aclosed) | Docker on AWS CodeBuild, Fargate or Lambda | ✅ | Labels | On-demand | ✅ | AMD64, ARM64 | ✅ | no | yes (always ephemeral) | yes | yes (Lambda URL with secret) | possible | no | no |
      • vbem/multi-runners - runners.svg)](https://github.com/vbem/multi-runners/blob/master/LICENSE.md) [![GitHub contributors](https://img.shields.io/github/contributors/vbem/multi-runners.svg)](https://github.com/vbem/multi-runners/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/vbem/multi-runners.svg)](https://github.com/vbem/multi-runners/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/vbem/multi-runners.svg)](https://GitHub.com/vbem/multi-runners/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/vbem/multi-runners.svg)](https://GitHub.com/vbem/multi-runners/issues?q=is%3Aissue+is%3Aclosed) | bare metal/VM | ✅ | Org, Repo, Labels, RunnerGroups | CLI control | ❌ | x86, AMD64, ARM, ARM64 | CLI control | yes | no | yes | no | possible | yes (CLI) | no |
      • runs-on/runs-on - on/runs-on.svg)](https://github.com/runs-on/runs-on/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/runs-on/runs-on.svg)](https://github.com/runs-on/runs-on/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/runs-on/runs-on.svg)](https://github.com/runs-on/runs-on/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/runs-on/runs-on.svg)](https://GitHub.com/runs-on/runs-on/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/runs-on/runs-on.svg)](https://GitHub.com/runs-on/runs-on/issues?q=is%3Aissue+is%3Aclosed) | AWS EC2 | ✅ | Repo, Dynamic Labels | On-demand | ✅ | x86, AMD64, ARM64 | ✅ | No PAT, only JIT token | Auto-cleanup | No runtime privilege | GitHub App exposed | AllInOne and custom images possible | yes (Actions Workflow) | $15/month |
      • cloudbase/garm - closed](https://img.shields.io/github/issues-closed/cloudbase/garm.svg)](https://GitHub.com/cloudbase/garm/issues?q=is%3Aissue+is%3Aclosed)|k8s,VM,Bare Metal ([pluggable](https://github.com/cloudbase/garm/blob/main/doc/external_provider.md)), available providers: [k8s](https://github.com/mercedes-benz/garm-provider-k8s), [EC2](https://github.com/cloudbase/garm-provider-aws), [OpenStack](https://github.com/cloudbase/garm-provider-openstack), [OCI](https://github.com/cloudbase/garm-provider-oci), [GCP](https://github.com/cloudbase/garm-provider-gcp), [LXD](https://github.com/cloudbase/garm-provider-lxd), [Incus](https://github.com/cloudbase/garm-provider-incus), [Equinix Metal](https://github.com/cloudbase/garm-provider-equinix), [Azure](https://github.com/cloudbase/garm-provider-azure).|✅|Enterprise, Org, Repo, Labels, RunnerGroups|On-demand|✅ Scales based on workflow jobs, allows setting min/max runners per pool, scales up to "min" immediately, maintains "min" idle runners as long as "max" is not reached|x86, AMD64, ARM, ARM64|✅|no|yes (all runners are ephemeral and automatically disposed from the provider once removed from GitHub)|no (GARM can run as a non privileged user)|yes, required for github-webhook endpoint, needed for auto scaling|yes (if used as standalone, optionally it can be integrated in k8s using the [garm-operator](https://github.com/mercedes-benz/garm-operator/))|yes, GARM has pools which can be created in any number on any entity (org, repo, enterprise), with any runner group and with any labels|the cost of running a single container or VM with GARM, and any idle runners configured in the pools, cost depends on provider used (EC2, Azure, etc)|
      • Privatehive/gcp-hosted-github-runner - hosted-github-runner.svg)](https://github.com/Privatehive/gcp-hosted-github-runner/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/Privatehive/gcp-hosted-github-runner.svg)](https://github.com/Privatehive/gcp-hosted-github-runner/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/Privatehive/gcp-hosted-github-runner.svg)](https://github.com/Privatehive/gcp-hosted-github-runner/stargazers/) [![GitHub issues](https://img.shields.io/github/issues/Privatehive/gcp-hosted-github-runner.svg)](https://GitHub.com/Privatehive/gcp-hosted-github-runner/issues/) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/Privatehive/gcp-hosted-github-runner.svg)](https://GitHub.com/Privatehive/gcp-hosted-github-runner/issues?q=is%3Aissue+is%3Aclosed) | GCP GCE | ✅ | Enterprise, Org, Repo, Labels, RunnerGroups | On-demand | ✅ 1 runner per workflow job. Created when job is "queued". Deleted when job is "completed". | x86, AMD64, ARM64 | ✅ | No PAT, only JIT token | yes (always ephemeral) | no | yes, required for github-webhook endpoint, needed for auto scaling | possible | no | no (covered by GCP free tier) |
  • Matrix bonus