Remix.run Logo
paulddraper 6 days ago

GitHub Actions runners are hard to self-host.

The runner configuration and registration process is unnecessarily byzantine. [1]

They can't cancel jobs cleanly. [2]

There are consistency problems everywhere. [3]

Their own documentations describes horrible things unless you use runners in JIT mode. Though JIT runners are not always removed after exit.

If there is a worse self-hosted CI runner, I haven't yet met it.

[1] https://docs.github.com/en/actions/how-tos/manage-runners/se...

[2] https://github.com/orgs/community/discussions/26311

[3] https://github.com/orgs/community/discussions/62365

pxc 6 days ago | parent | next [-]

And if you want any concurrency at all, you need 1 runner registration per concurrent job. And each runner needs its own user. And each runner requires a full and separate copy of the runner software, which is large (hundreds of megs) and self-updates.

paulddraper 6 days ago | parent [-]

You don't need your own user.

The rest is correct. (Though you can hardlink the installation.) And you can disable self-update, though it does it by default.

pxc 6 days ago | parent | next [-]

Ah right, I've forgotten because I'm using a multi-user strategy and a patched version of the runner at this point anyway. The config directory for each runner is normally based on its install path (insane), something like that?

paulddraper 3 days ago | parent [-]

The config directory based on the install directory, yes.

To be fair, running multiple copies of a service isn't that common.

E.g. if you wanted to run multiple copies of PostgreSQL you can't just do a vanilla install.

gheltllck 6 days ago | parent | prev [-]

Hard-linking and running concurrent self-updates, sounds like a recipe for disaster.

gheltllck 6 days ago | parent | prev | next [-]

And they are even on their third (fourth?) from-scratch rewrite of their agent server. When will they get it right? (Rhetorical question)

Faaak 5 days ago | parent | prev | next [-]

Yet it works perfectly which forgejo/gitea (uses the act runner)

crohr 6 days ago | parent | prev [-]

I am developing a self-hosted solution for this [1]. It’s true that it’s somewhat of a pain but JIT runners allow a lot of flexibility that we don’t find elsewhere.

[1] https://runs-on.com

paulddraper 6 days ago | parent | next [-]

I did something very similar.

Create/start/stop/terminate EC2.

https://github.com/redoapp/fast-actions-runner-ec2

novok 6 days ago | parent | prev [-]

In my experience even with runs-on it is a bit painful with runner cancellations.