Sign in

Search issue titles and bodies, change requests and comments. Private repositories you cannot read are not included.

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/ssh/runner.go +12

@@ -150,6 +150,12 @@ type runnerStep struct {
150 150 Timeout string `json:"timeout"`
151 151 }
152 152
153 type runnerService struct {
154 ID string `json:"id"`
155 Image string `json:"image"`
156 Env map[string]string `json:"env,omitempty"`
157 }
158
153 159 type runnerJob struct {
154 160 ID string `json:"id"`
155 161 Repo string `json:"repo"`
@@ -200,6 +206,9 @@ type runnerJob struct {
200 206 ImageSHA string `json:"image_sha,omitempty"`
201 207 // Env is the job's declared environment, pinned when the run was queued.
202 208 Env map[string]string `json:"env,omitempty"`
209 // Services are the containers the job asked to run beside it, pinned when the
210 // run was queued. The runner gives the job and these one network for the attempt.
211 Services []runnerService `json:"services,omitempty"`
203 212 // Secrets are the values the job declared that this repository has, and Missing
204 213 // are the names it declared that it does not. A missing name is not a failure:
205 214 // the variable is left unset and the runner says so at the top of the log. The
@@ -374,6 +383,9 @@ func (s *Server) serveRunner(ch xssh.Channel, user string) {
374 383 for _, st := range run.Steps {
375 384 job.Steps = append(job.Steps, runnerStep{Name: st.Name, Run: st.Run, Timeout: st.Timeout})
376 385 }
386 for _, svc := range run.Services {
387 job.Services = append(job.Services, runnerService{ID: svc.ID, Image: svc.Image, Env: svc.Env})
388 }
377 389 // A job that acts as a bot gets a key for this run only. The account and
378 390 // the repository are pinned in the row, so the hook can refuse a write that
379 391 // the account's role would not allow and the key stops working when the run