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/ci.go +12
| @@ -218,6 +218,7 @@ func (s *Server) queue(m *repo.Meta, repoName string, spec queueSpec) int { | |||
| 218 | 218 | Artifacts: artifactPaths(job), | |
| 219 | 219 | Secrets: job.Secrets, | |
| 220 | 220 | Env: job.Env, | |
| 221 | Services: services(job), | ||
| 221 | 222 | Network: job.Network, | |
| 222 | 223 | Timeout: durationText(job.Timeout), | |
| 223 | 224 | Bot: job.Bot, | |
| @@ -406,6 +407,17 @@ func releasePaths(job ci.Job) []string { | |||
| 406 | 407 | return out | |
| 407 | 408 | } | |
| 408 | 409 | ||
| 410 | // services pins the containers a job asked to run beside it. Like the steps and the | ||
| 411 | // artifact patterns, the list is read at queue time: a workflow edited afterwards | ||
| 412 | // cannot change what an already-queued job starts. | ||
| 413 | func services(job ci.Job) []runs.Service { | ||
| 414 | out := make([]runs.Service, 0, len(job.Services)) | ||
| 415 | for _, svc := range job.Services { | ||
| 416 | out = append(out, runs.Service{ID: svc.ID, Image: svc.Image, Env: svc.Env}) | ||
| 417 | } | ||
| 418 | return out | ||
| 419 | } | ||
| 420 | |||
| 409 | 421 | func steps(job ci.Job) []runs.Step { | |
| 410 | 422 | out := make([]runs.Step, 0, len(job.Steps)) | |
| 411 | 423 | for _, st := range job.Steps { | |