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.

Add event, schedule and manual workflow triggers

eb07ff5696e0d83201215966e3ea1e6a24467581 · Keenan Nemetz · 8d ago · parent 1cde8b9e

Add event, schedule and manual workflow triggers

Workflows can now react to change requests, issues, comments, cron
schedules and manual runs, and a push trigger can filter by the paths it
changed. Branch and tag patterns gain ! exclusion.

Event runs are pinned with a JSON payload and the runner exposes it as
VOLE_EVENT, VOLE_EVENT_ACTION and VOLE_EVENT_PATH. Change-request runs
check out the base tip and carry the head and changed files, so an event
never executes an unapproved contributor commit.

Workflow dispatch resolves typed inputs and is available from the
workflows page and `vole workflow dispatch`. Deduplication now includes
an occurrence so the same commit can run for a later event or schedule
slot while a push remains idempotent.

Part of: #138

server/ssh/runner.go +7

@@ -141,6 +141,12 @@ type runnerJob struct {
141 141 Workflow string `json:"workflow"`
142 142 Job string `json:"job"`
143 143 Steps []runnerStep `json:"steps"`
144 // Trigger and EventPayload are the pinned event that requested this run. The
145 // runner writes the payload into a file and sets VOLE_EVENT, VOLE_EVENT_ACTION
146 // and VOLE_EVENT_PATH; it is data, never an interpolated command.
147 Trigger string `json:"trigger,omitempty"`
148 TriggerAction string `json:"trigger_action,omitempty"`
149 EventPayload string `json:"event_payload,omitempty"`
144 150 // Image is a registry reference or "file:<name>". For the latter, ImageDefinition
145 151 // is the pinned recipe and ImageSHA is its digest; the runner builds it locally.
146 152 Image string `json:"image"`
@@ -290,6 +296,7 @@ func (s *Server) serveRunner(ch xssh.Channel, user string) {
290 296 ID: run.ID, Repo: run.Repo, SHA: run.SHA, Attempt: run.Attempts, Branch: run.Branch,
291 297 Ref: run.Ref, Workflow: run.Workflow, WorkflowSHA: run.WorkflowSHA,
292 298 StepsSHA: run.StepsSHA, Job: run.Job, Artifacts: run.Artifacts,
299 Trigger: run.Trigger, TriggerAction: run.TriggerAction, EventPayload: run.EventPayload,
293 300 Image: run.Image, ImageFile: run.ImageFile, ImageDefinition: run.ImageDefinition,
294 301 ImageSHA: run.ImageSHA,
295 302 Env: run.Env,