-
Notifications
You must be signed in to change notification settings - Fork 5
Home
PyPi: | Versions |
---|---|
License: | Apache-2.0 |
A simple alternative to Github's Recommended autoscaling solutions.
The github-hetzner-runners service program starts and monitors queued-up jobs for GitHub Actions workflows. When a new job is queued up, it creates a new Hetzner Cloud server instance that provides an ephemeral GitHub Actions runner. Each server instance is automatically powered off when the job completes, and then powered off servers are automatically deleted. Both x64 (x86) and arm64 (arm) runners are supported. See Features and Limitations for more details.
❗Warning: | This program is provided on "AS IS" basis without warranties or conditions of any kind. See LICENSE. Use it at your own risk. Manual monitoring is required to make sure server instances are cleaned up properly and costs are kept under control. |
---|
Costs depend on the server type, number of jobs, and execution time. For each job, a new server instance is created to avoid any cleanup. Server instances are not shared between jobs.
✋ Note: | Currently, Hetzner Cloud server instances are billed on an hourly basis. So a job that takes 1 minute will be billed the same way as for a job that takes 59 minutes. Therefore, the minimal cost for any job, the cost of the server for 1 hour plus the cost of one public IPv4 address. |
---|
- simpler alternative to what GitHub lists in Recommended Autoscaling Solutions
- cost-efficient on-demand runners using Hetzner Cloud
- supports server recycling to minimize costs
- simple configuration, no Webhooks, no need for AWS lambdas, and no need to setup any GitHub application
- supports specifying custom runner server types, images, and locations using job labels
- self-contained program that you can use to deploy, redeploy, and manage the service on a cloud instance
- supports x64 (x86) and ARM64 (arm) runners
- supports using any Hetzner Cloud server types
- supports runners with pre-installed Docker
- supports using any standard Hetzner Cloud images and applications
- supports auto-replenishable fixed standby runner pools for jobs to be picked up immediately
- supports limiting the maximum number of runners created for each workflow run
- supports efficient GitHub API usage using HTTP caching and conditional requests
- supports meta labels to keep your job label list short
- supports estimating the cost of a job, a run, or a set of runs
- Group runners are not supported
- ✎ However, you can run individual services for each repository using different Hetzner Cloud projects.
- A unique Hetzner Cloud project must be used for each repository
- ✎ However, unique projects allow you to easily keep track of runner costs per repository.
- Python >= 3.7
- Hetzner Cloud account
- GitHub API classic token with privileges to manage self-hosted runners
❗Warning: | You must use a classic token. Fine-grained tokens are not supported. |
---|
- Installation
- Quick Start
- Getting Started Tutorial
- Basic Configuration
- Specifying the Maximum Number of Runners
- Specifying the Maximum Number of Runners Used in Workflow a Run
- Recycling Powered‐Off Servers
- Skipping Jobs
- Using Custom Label Prefix
- Jobs That Require the Docker Engine
- Specifying The Runner Type
- Specifying The Runner Location
- Specifying The Runner Image
- Specifying The Custom Runner Server Setup Script
- Specifying The Custom Runner Server Startup Script
- Disabling Setup or Startup Scripts
- Specifying Standby Runners
- Specifying Logger Configuration
- Listing All Current Servers
- Opening The SSH Client To The Server
- Deleting All Runners and Their Servers
- Using a Configuration File
- Specifying SSH Key
- Specifying Additional SSH Keys
- Running as a Service
- Running as a Cloud Service
- Scaling Up Runners
- Scaling Down Runners
- Handling Failing Conditions
- Meta Labels
- Estimating Costs
- Program Options
Developed and maintained by the TestFlows team.
- Home
- Installation
- Quick Start
- Getting Started Tutorial
- Basic Configuration
- Specifying the Maximum Number of Runners
- Specifying the Maximum Number of Runners Used in Workflow a Run
- Recycling Powered‐Off Servers
- Skipping Jobs
- Using Custom Label Prefix
- Jobs That Require the Docker Engine
- Specifying The Runner Type
- Specifying The Runner Location
- Specifying The Runner Image
- Specifying The Custom Runner Server Setup Script
- Specifying The Custom Runner Server Startup Script
- Disabling Setup or Startup Scripts
- Specifying Standby Runners
- Specifying Logger Configuration
- Listing All Current Servers
- Opening The SSH Client To The Server
- Deleting All Runners and Their Servers
- Using a Configuration File
- Specifying SSH Key
- Specifying Additional SSH Keys
- Running as a Service
- Running as a Cloud Service
- Scaling Up Runners
- Scaling Down Runners
- Handling Failing Conditions
- Meta Labels
- Estimating Costs
- Listing Images
- Deleting Images
- Creating Custom Images
- Program Options