3 ms·
GitHub Actions runners are hard to self-host. The runner configuration and registration process is unnecessarily byzantine. [1] They can't cancel jobs cleanly
by paulddraper 10mo 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/self-hosted-runners/add-runners https://docs.github.com/en/actions/how-tos/manage-runners/se...
[2] https://github.com/orgs/community/discussions/26311 https://github.com/orgs/community/discussions/26311
[3] https://github.com/orgs/community/discussions/62365 https://github.com/orgs/community/discussions/62365
- pxc 10mo agoAnd 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 10mo agoYou 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.
- gheltllck 10mo agoHard-linking and running concurrent self-updates, sounds like a recipe for disaster.
- pxc 10mo agoAh 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 10mo agoThe 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.
- crohr 10mo agoI 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 https://runs-on.com
- paulddraper 10mo agoI did something very similar. Create/start/stop/terminate EC2. https://github.com/redoapp/fast-actions-runner-ec2 https://github.com/redoapp/fast-actions-runner-ec2
- novok 10mo agoIn my experience even with runs-on it is a bit painful with runner cancellations.
- gheltllck 10mo agoAnd they are even on their third (fourth?) from-scratch rewrite of their agent server. When will they get it right? (Rhetorical question)
- Faaak 10mo agoYet it works perfectly which forgejo/gitea (uses the act runner)