Commit Graph

17 Commits

Author SHA1 Message Date
Vincent Haupert
6d8391a3ce nixos/github-runners: add a group option to set the executing group
Similar to the `user` option, the added `group` option sets the group of
the executing process. If not `null`, it also sets `DynamicUser=false`.
In case `user` is set to `null` (the default), systemd would run the
service as root implicitly. As this is dangerous and most certainly not
what users want, we force them to set `user = "root"` explicitly if
that's really their intention. That's achieved through an assertion.
2024-02-09 16:58:09 +01:00
Vincent Haupert
35df23c07d nixos/github-runners: set DynamicUser=false if user not null 2024-02-09 16:19:23 +01:00
Vincent Haupert
782b164523 nixos/github-runners: rework name default 2024-02-09 16:19:19 +01:00
Vincent Haupert
a9c807496f nixos/github-runners: add noDefaultLabels option
Add option `noDefaultLabels` which controls the `--no-default-labels`
switch passed to the configure script.
2024-02-09 15:14:32 +01:00
Vincent Haupert
e6854b295b nixos/github-runners: only override pkg if it has a nodeRuntimes arg
Older versions of the github-runner package might not have the
`nodeRuntimes` argument yet causing an error as the NixOS module always
tries to override the argument.

The commit makes sure we only override `nodeRuntimes` if the configured
package has a `nodeRuntimes` argument.
2024-02-03 14:33:39 +01:00
Vincent Haupert
388bfcef4a nixos/github-runners: add nodeRuntimes option 2023-08-22 15:52:35 +02:00
Vincent Haupert
137db83090 nixos/github-runners: use Runner.Listener directly for registration
Nothing the script `config.sh` does prior to the final call to
`Runner.Listener configure` is relevant for the systemd service.
Particularly, we don't need (nor want) any of the artifacts the `env.sh`
script creates.
2023-02-26 15:39:19 +01:00
Vincent Haupert
36949b9718 nixos/github-runners: clean workDir as root
Purge contents of `workDir` as root to also allow the removal of files
marked as read-only. It is easy to create read-only files in `workDir`,
e.g., by copying files from the Nix store.
2023-02-23 09:05:27 +01:00
Vincent Haupert
b634dbe576 nixos/github-runners: fix format of service file 2023-01-09 09:36:59 +01:00
Vincent Haupert
66dbf9b199 nixos/github-runners: use mkMerge for serviceConfig
The `serviceOverrides` module option is commonly used to loosen the
systemd unit's hardening. This commit merges the `serviceConfig` with
`mkMerge` instead of using the update operator `//` which discards all
existing values on conflict. To avoid a breaking change which requires
defining each option with a higher priority (e.g., through `mkForce`),
this commit prefixes hardening values with `mkDefault`.

Notable exceptions are list hardening options which use `mkBefore`
instead of `mkDefault`. This allows for easy extension of the existing
settings. Resetting redefinitions are still possible through `mkForce`.
2023-01-09 09:36:04 +01:00
Alex Martens
307730fb72 nixos/github-runner: add workDir option 2023-01-03 19:54:25 -08:00
Vincent Haupert
847774470e nixos/github-runners: restart service if exit code signals a retryable error
On some occasions, the GitHub runner service encounters errors which are
deemed retryable but result in the runner's termination. To signal a
retryable error, the runner exits with status code 2:

https://github.com/actions/runner/blob/40ed7f8/src/Runner.Common/Constants.cs#L146

To account for that behavior, this commit sets
`RestartForceExitStatus=2` which results in a service restart regardless
of using an ephemeral runner or not.
2022-11-10 11:06:04 -05:00
Vincent Haupert
ea8cf2e486 nixos/github-runners: support fine-grained personal access tokens
Add support for GitHub's new fine-grained personal access tokens [1]. As
opposed to the classic PATs, those start with `github_pat_` instead of
`ghp_`.

Make sure to use a token which has read and write access to the
"Administration" resource group [2] to allow for registrations of new
runners.

[1] https://github.blog/2022-10-18-introducing-fine-grained-personal-access-tokens-for-github/

[2] https://docs.github.com/en/rest/overview/permissions-required-for-github-apps#administration
2022-10-19 13:50:34 +02:00
Tom McLaughlin
0b67081ad8 Cherry-pick 499748b 2022-10-11 06:10:11 -06:00
Tom McLaughlin
b744fee880 Re-add DynamicUser = true per review discussion 2022-10-11 06:04:25 -06:00
Tom McLaughlin
327e05c382 Get rid of DynamicUser flag 2022-10-11 06:04:25 -06:00
Tom McLaughlin
998083f2ad github-runner: configurable user, environment, service overrides + multiple runners 2022-10-11 06:04:21 -06:00