vole
Clone
Read only, no credentials:
https://rodent.software/vole.git
Write over SSH with a registered key:
git clone ssh://git@rodent.software:2222/vole.git
A free and open-source forge that lives in your Git repo.
Keep a finished CI attempt and drain before shutting down
73755a56550dc6819b47469fbb08e85e7c7c5d04 · Keenan Nemetz · 10d ago · parent 1265ea55
Keep a finished CI attempt and drain before shutting down A job whose lease expired was requeued even when its last step had already succeeded. The queue cleared the owner and the runner refused to report, so the same work ran again as attempt 2 for no failing step. Keep the owner on a requeued row and accept a late record and log until another runner leases the job. The runner now sends a late record when the heartbeat says the lease is gone, and the server accepts it only for the attempt that is still current. A clean server stop also drained nothing: closing SSH killed the runner and threw the job away. Stop leasing new work on shutdown and wait up to a minute for the jobs already running to report.
packaging/systemd/vole.service +5
| @@ -12,6 +12,11 @@ ExecStart=/usr/bin/vole serve --config /etc/vole/vole.toml | |||
| 12 | 12 | Restart=on-failure | |
| 13 | 13 | RestartSec=2s | |
| 14 | 14 | ||
| 15 | # A clean stop stops handing out jobs and gives the ones already leased up to a | ||
| 16 | # minute to report, then closes the HTTP listeners with a 20 second budget. Leave | ||
| 17 | # room above both so systemd does not kill the drain early. | ||
| 18 | TimeoutStopSec=100s | ||
| 19 | |||
| 15 | 20 | # Everything the service creates is group-readable at most: 0027 gives the | |
| 16 | 21 | # service account rw, the vole group r, and everybody else nothing. Vole creates | |
| 17 | 22 | # its own secrets at 0600 regardless, but a umask is what covers the files git, | |