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 declare the network it needs

d79580247b8f33f7ffdf2f05847733cad12c187a · Keenan Nemetz · 6d ago · parent 4ac42680

Let a job declare the network it needs

A runner's --container-network decided the network for every job it took, so a
machine that could reach the network gave it to builds that never asked, and a
job that did need one could be handed to a machine that had none. The docs said
"add bridge only when a job needs it", which no workflow could express.

A job now says `network: none` or `network: bridge`. The request is pinned with
the run, and the lease only hands a bridge job to a runner that advertises the
capability, so a job waits for a capable machine instead of failing on one that
never could. The runner applies the job's request to its container, which means a
bridge runner can still withhold the network from a job that asked for none.

A job that declares nothing keeps the runner's own setting, which is what every
workflow meant before this field existed. The local run applies the same rule and
refuses a bridge job when it was started without one, so `vole workflow run` either
matches CI or says what to change on the command line.

The workflows page, the run page, and the runner's log line now say what a job
asked for and what it ran with. verify.yaml and release.yaml are deliberately not
in this change: the instance validates a pushed workflow with the binary it is
running, so they can declare the field once that binary knows it.

Closes #159.

server/web/workflows.go +2−1

@@ -17,6 +17,7 @@ type workflowJobView struct {
17 17 Description string
18 18 Labels []string
19 19 Image string
20 Network string
20 21 Steps int
21 22 Artifacts int
22 23 Pages bool
@@ -82,7 +83,7 @@ func (w *Web) WorkflowsPage(rw http.ResponseWriter, r *http.Request) {
82 83 }
83 84 view.Jobs = append(view.Jobs, workflowJobView{
84 85 ID: job.ID, Name: job.Name, Description: job.Description,
85 Labels: job.Labels, Image: image,
86 Labels: job.Labels, Image: image, Network: job.Network,
86 87 Steps: len(job.Steps), Artifacts: len(job.Artifacts),
87 88 Pages: job.Pages != nil,
88 89 Last: latest[wf.Path+"\x00"+job.ID],