Emil SimeonovandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> 749b4d025f GRM-45: fix: generate self-contained SVG badges instead of shields.io JSON
shields.io can't fetch JSON from our self-hosted Gitea instance (not
publicly reachable), so badges showed "unknown". Switched to generating
self-contained SVG badge files that are served directly by Gitea's raw
file API — no external service needed.

Changes:
- generate_badges.py: Added render_svg() to produce shields.io-style
  SVG badges with gradient, rounded corners, and Verdana font
- Replaced xml.sax.saxutils.escape with a simple _xml_escape() to
  avoid bandit B406 warning (no defusedxml dependency needed)
- CI workflow: Push .svg files instead of .json to badges branch
- README.md and docs/index.md: Updated badge URLs to use raw SVG
  from the badges branch instead of shields.io endpoint

Also fixed:
- Coverage regex now handles 100% without decimal (was 100.00%)
- doc_coverage.py: Removed redundant % in pct variable that caused
  double-percent (100%%) in output

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-06-22 00:50:22 +02:00
2026-06-22 00:00:01 +02:00

Gitea Runner Manager (GRM)

A lean command-line tool to automate the installation, configuration, and lifecycle management of Gitea Actions runners on Arch Linux, Ubuntu, and Debian hosts.

Each runner runs in an isolated rootless Docker environment under a dedicated system user, enabling multiple runners to operate in parallel on the same host without conflicts.

Pronunciation: GRM is short for Gitea Runner Manager, but say it like ГРЪМ (roughly "GRUM") — the Bulgarian word for thunder. An open-source project from Oblachno (облачно means cloudy in Bulgarian).

CI License: GPL-3.0 Coverage Tests Docs Code Quality Version Python

Quick Start

git clone https://git.oblachno.oblachno.fyi/oblachno-oss/grm.git
cd grm
make setup
cp .env.example .env  # Edit with your Gitea URL and tokens
grm install 192.168.1.10 --user ubuntu --key ~/.ssh/id_ed25519 --name prod-runner

Tokens: You need two tokens from your Gitea instance — a registration token to register runners, and an admin API token for optional post-install verification. See Getting Started for detailed setup instructions.

Documentation

Full documentation lives on the GRM Wiki.

User Documentation

Technical Documentation

License

GPL-3.0

S
Description
This is the git repository of the Gitea Runner Manager.
Readme GPL-3.0
1.5 MiB
v0.21.0
Latest
2026-08-09 22:50:51 +00:00
Languages
Python 87.1%
Jinja 6.7%
Makefile 5.1%
Shell 1.1%