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.04Put 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.