Skip to content

BYOM (Bring Your Own Metal) and run self-hosted GitHub runners in ephemeral, fast and secure Firecracker based virtual machines.

License

Notifications You must be signed in to change notification settings

hostinger/fireactions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

test Go Report Card

Banner

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.

Architecture

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.

Quickstart

  1. 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
  2. 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.

  3. 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.

  1. 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!"

Contributing

See CONTRIBUTING.md for more information on how to contribute to Fireactions.

License

See LICENSE