{"repo":"mirego/ekiden","free":true,"listed":false,"github":"https://github.com/mirego/ekiden","clone":"git clone https://github.com/mirego/ekiden.git","description":"GitHub Actions self-hosted arm64 macOS runners","language":"HCL","stars":99,"topics":["github-actions","packer","self-hosted-runner","tart"],"license":"BSD-3-Clause","category":"self-hosted-apps","readme_excerpt":"GitHub Actions self-hosted arm64 macOS runners Introduction The goal of this project is to have a pool of GitHub Actions self-hosted runners in addition to the runners provided by GitHub. Those runners are executed inside an ephemeral arm64 macOS machine. This repo is a collection of documentation, scripts and configuration files that can be used to manage those runners. It uses Tart to orchestrate the virtual machine, Packer to provision these images, Gitea to store the images and Grafana to monitor runners. Configuration - To configure a new host machine, follow the host configuration guide - To create a new VM , follow the guest configuration guide - To setup the VM registry , follow the registry configuration guide - To setup Grafana to monitor the machines, follow the monitoring configuration guide How it Works In order to simplify maintenance and to increase the runner's reliability and the build's repeatability, each runner runs inside an ephemeral virtual machine. This way, whenever a runner picks up a job, the workspace is assured to be in a clean state. Since this is also how the GitHub-hosted runners work, this can simplify interoperability. A typical run-loop looks like this: 1. The host machine pulls the most recent VM from the VM registry. 2. The host machine generates a token from the GitHub API. 3. The host machine launches a virtual machine ( guest ) with a cloned virtual disk. 4. The host machine initiates an SSH connection to the guest . 5. The host machine","default_branch":null,"files":null,"tree":[],"storefront":"/r/mirego","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/mirego/ekiden/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}