vole
Clone
Read only, no credentials:
https://rodent.software/git/vole.git
Write over SSH with a registered key:
git clone ssh://git@0.0.0.0:2222/vole.git
A free and open-source forge that lives in your Git repo.
Document runners, and check the three files that describe one agree
e21f6c5e26cc49d5a08d337cb1c7b70d373a8cce · Keenan Nemetz · 3d ago · parent d0d4239f
Document runners, and check the three files that describe one agree A runner is a second decision after the forge, not part of its first boot: it executes repository code, it can read every secret a job declares, and the allowlist that lets it take work is per repository. The guide says what the deployment creates, how to set one up on a machine you already have, the one step only an admin can do, what to know before giving it a repository, and how to upgrade it. render.sh now renders either first-boot file, taking its placeholder list from the render line it uses, so the checker reads the same line instead of keeping a second copy. check-deploy.py renders both templates, requires each one's promised files with literal modes, and holds the runner's three descriptions together: the template writes the arguments, the unit reads them, and the package ships the example an operator copies. A name that drifts leaves a machine enabled and idle, which looks exactly like a runner that is working.
docs/deploy/hetzner.md +8
| @@ -65,11 +65,19 @@ Everything else has a working default. Pass these with `-var` or in a | |||
| 65 | 65 | | `enable_backups` | `true` | Daily snapshots kept for a week, for about 20% of the server price | | |
| 66 | 66 | | `tls_mode` | `acme` | `proxy` leaves TLS to a proxy you run instead, and serves plain HTTP on loopback | | |
| 67 | 67 | | `instance_name` | `Vole` | What the landing page calls this forge | | |
| 68 | | `runner` | `false` | Create a second machine that runs CI jobs. See [CI runners](runner.md): it needs one more step per repository before it takes work | | ||
| 69 | | `runner_type` | `cx22` | Server type for that machine. Builds want memory, so raise this before the forge's own type | | ||
| 70 | | `runner_labels` | `["linux"]` | What the runner advertises; a job with `runs-on` only comes to a machine carrying every label it asks for | | ||
| 71 | | `runner_network` | `bridge` | Whether a job that asks for a network gets one. Jobs that fetch dependencies need it | | ||
| 68 | 72 | | `protect_instance` | `true` | Refuses deletion and rebuild through the API, so `terraform destroy` needs `-var protect_instance=false` | | |
| 69 | 73 | ||
| 70 | 74 | `terraform apply` is safe to run again: it reports no changes. It does not | |
| 71 | 75 | upgrade Vole, and it does not touch the machine's data. | |
| 72 | 76 | ||
| 77 | With `-var runner=true`, `terraform output runner_setup` prints the commands that | ||
| 78 | let the second machine take jobs. It needs one step per repository before it | ||
| 79 | receives any work; see [CI runners](runner.md). | ||
| 80 | |||
| 73 | 81 | ## If something is not right | |
| 74 | 82 | ||
| 75 | 83 | - **The browser shows a certificate warning.** DNS is not answering with the | |