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.
Stream run logs over the runner's SSH channel
5ece70a50ebda392626b92bdf29d28bc9b444954 · Keenan Nemetz · 10d ago · parent fdf2340f
Stream run logs over the runner's SSH channel The runner wrote the log to a temp file and uploaded it as one LFS object when the job ended, so a running job had no log to read and a log was stored like a shared artifact even though it belongs to one attempt. The runner sends 128 KiB chunks over the same runner channel that holds the lease. The server appends them to data/logs/<repo>/<run>/<attempt>.log and records the size while the run is still running. The finish record carries the final size; the server checks the file length, syncs it, and stores the result. A partial or failed stream leaves no log on the record. Logs are no longer LFS objects: they are not shared, not content-addressed, and the web serves the file directly, with range and step slices. GC no longer treats them as LFS roots.
docs/architecture.md +2−1
| @@ -63,7 +63,8 @@ auditable. | |||
| 63 | 63 | | Accounts, instance roles, SSH keys, passkeys, enrollment links, sessions, access rules, locks, page-view counters | `data/users.db` | No; back it up | | |
| 64 | 64 | | Web/search index, including the `#42` alias numbering | `data/index.db` | Yes, with `vole admin index rebuild` | | |
| 65 | 65 | | CI queue, in-progress runs, contributor CI approvals | `data/runs.db` | Partly; in-progress work and approvals are lost | | |
| 66 | | LFS files, CI logs, build artifacts | `data/lfs/` | No; stored by content | | ||
| 66 | | CI logs | `data/logs/` | No; one file per attempt, back it up | | ||
| 67 | | LFS files, build artifacts | `data/lfs/` | No; stored by content | | ||
| 67 | 68 | | Privileged-action history | `data/audit.log` | It is the record; a privileged change that cannot be written there is refused | | |
| 68 | 69 | | SSH host key | `data/ssh_host_ed25519_key` | No; it is the secret | | |
| 69 | 70 | ||