Fireactions is an orchestrator for GitHub runners. BYOM (Bring Your Own Metal) and run self-hosted GitHub runners in ephemeral, fast and secure Firecracker based virtual machines.
Several key features:
-
Autoscaling
Robust pool based scaling, cost-effective with fast GitHub runner startup time of 20s~.
-
Ephemeral
Each virtual machine is created from scratch and destroyed after the job is finished, no state is preserved between jobs, just like with GitHub hosted runners.
-
Customizable
Define job labels and customize virtual machine resources to fit Your needs. See Configuration for more information.
-
Create and install a GitHub App (see Creating a GitHub App) with the following permissions:
- Read access to metadata
- Read and write access to actions and organization self hosted runners
-
Note down the GitHub App ID and generate a private key, save it to a file on the host machine, e.g.
/root/private-key.pem
. -
Download and run the installation script:
curl -sSL https://raw.githubusercontent.com/hostinger/fireactions/main/install.sh -o install.sh chmod +x install.sh ./install.sh \ --github-app-id=<GITHUB_APP_ID> \ --github-app-key-file="/root/private-key.pem" \ --github-organization="<GITHUB_ORGANIZATION>" --containerd-snapshotter-device="<DEVICE>"
This creates a default configuration with a single pool named default
with a single runner. See Configuration for more information.
- Test the installation by creating a new GitHub workflow in your repository:
# .github/workflows/test.yaml
name: test
on:
workflow_dispatch:
pull_request:
branches:
- '*'
push:
branches:
- main
jobs:
test:
name: test
runs-on: # The label(s) of the Fireactions pool
- self-hosted
- fireactions
steps:
- name: Example
run: |
echo "Hello, Fireactions!"
See CONTRIBUTING.md for more information on how to contribute to Fireactions.
See LICENSE