{ "name": "cicd-workload", "description": "computer.socialweb.cicd.workload.run: a CI job's checkout and steps on a machine, through the computer.socialweb.cicd.process.* hooks.", "actions": [ { "entry": "run", "label": "Run a job", "description": "The machine clones job.checkout (git over https), then runs each step as `sh -s` in /work, its env on stdin; stops at the first that fails. Result as it runs: {step, output}; at the end: {steps: [{name, exitCode}], ok}.", "fields": [ { "key": "url", "label": "Machine shell URL", "type": "string", "required": true, "description": "What the process hooks reach the machine at (iroh:////shell/mcp)." }, { "key": "job", "label": "Job", "type": "object", "required": true, "description": "{checkout: {git, commit, merge?: {git, commit}}, env?: {NAME: value}, steps: [{name, run, env?}]}" } ] } ], "calls": [], "hooks": [ { "nsid": "computer.socialweb.cicd.process.start", "required": true, "reason": "each step is a job on the machine" }, { "nsid": "computer.socialweb.cicd.process.write", "required": true, "reason": "close the job's stdin once its script is in" }, { "nsid": "computer.socialweb.cicd.process.read", "required": true, "reason": "follow the job's output until it ends" } ], "implements": [{ "nsid": "computer.socialweb.cicd.workload.run", "entry": "run" }] }