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.
Let a job start service containers beside it
c1929d2fceb5e9e65204d5eef907d0781b9a5391 · Keenan Nemetz · 5d ago · parent 1d06b008
server/workflows_test.go +6−1
| @@ -64,7 +64,9 @@ jobs: | |||
| 64 | 64 | ID: id, Repo: f.repo, Ref: "refs/heads/main", Branch: "main", | |
| 65 | 65 | SHA: strings.Repeat("a", 40), Workflow: ".vole/workflows/ci.yaml", | |
| 66 | 66 | WorkflowSHA: "bbbb", Job: "test", Status: status, Created: time.Now().UTC(), | |
| 67 | Steps: []runs.Step{{Name: "build", Run: "go build ./...", Timeout: "1m0s"}}, | ||
| 67 | Network: "bridge", | ||
| 68 | Steps: []runs.Step{{Name: "build", Run: "go build ./...", Timeout: "1m0s"}}, | ||
| 69 | Services: []runs.Service{{ID: "db", Image: "postgres:17"}}, | ||
| 68 | 70 | } | |
| 69 | 71 | if status == runs.StatusSuccess { | |
| 70 | 72 | run.Finished = time.Now().UTC() | |
| @@ -81,6 +83,9 @@ jobs: | |||
| 81 | 83 | if resp.StatusCode != 200 || !strings.Contains(body, "Cancel queued run") || strings.Contains(body, ">Rerun<") { | |
| 82 | 84 | t.Fatalf("queued run actions = %d:\n%s", resp.StatusCode, body) | |
| 83 | 85 | } | |
| 86 | if !strings.Contains(body, "db") || !strings.Contains(body, "postgres:17") { | ||
| 87 | t.Fatalf("queued run page does not show its services:\n%s", body) | ||
| 88 | } | ||
| 84 | 89 | ||
| 85 | 90 | resp, _ = f.browserPost(t, "/r/"+f.repo+"/runs/01M5R8XR12EZ5WYJDM0F1928D1/cancel", cookie, | |
| 86 | 91 | url.Values{"csrf": {sess.CSRF}}) | |