Skip to content
Runners & Platforms

Runners & Platforms

A workflow’s runs-on: label has to map to an actual Docker image somehow — fj-act ships sensible defaults and lets you override any of them.

Built-in label → image mapping

// cmd/platforms.go
"ubuntu-latest": "node:16-buster-slim",
"ubuntu-22.04":  "node:16-bullseye-slim",
"ubuntu-20.04":  "node:16-buster-slim",
"ubuntu-18.04":  "node:16-buster-slim",

// Codeberg's own runner size labels: https://codeberg.org/actions/meta
"codeberg-tiny":        "catthehacker/ubuntu:act-latest",
"codeberg-tiny-lazy":   "catthehacker/ubuntu:act-latest",
"codeberg-small":       "catthehacker/ubuntu:act-latest",
"codeberg-small-lazy":  "catthehacker/ubuntu:act-latest",
"codeberg-medium":      "catthehacker/ubuntu:act-latest",
"codeberg-medium-lazy": "catthehacker/ubuntu:act-latest",

The generic ubuntu-* labels map to minimal Node-only images (small, fast to pull, but limited — see the compatibility note below). All six codeberg-{tiny,small,medium}[-lazy] labels — the labels Codeberg’s own hosted runners actually advertise — default to catthehacker/ubuntu:act-latest, matching what those real runners use.

Overriding a label

-P/--platform (repeatable) takes label=image and overwrites or adds an entry in this map:

fj-act -P codeberg-small=catthehacker/ubuntu:act-22.04
fj-act -P ubuntu-18.04=catthehacker/ubuntu:act-18.04

Put a handful of these in your .fjactrc so you don’t retype them every run — or answer the interactive survey the first time fj-act runs with no config and no -P, which writes a Large/ Medium/Micro preset for you automatically.

Choosing an image

node:* images are Debian-based, not Ubuntu — extremely similar, but not identical, to what a real runner provides. catthehacker/ubuntu:* images track actual Ubuntu, which is why they’re the closer match for codeberg-* labels.

See catthehacker/docker_images for the full set of available tags — act-latest/act-22.04/act-20.04/ act-18.04 and their full-* counterparts.