Chaining steps
steps: - id: analyze task: techlite/analyze-commits@^1.0.0 implementation: techlite/analyze-commits-alpine dependencies: source: "."
- id: version task: techlite/version-bump@^1.0.0 implementation: techlite/version-bump-alpine inputs: change: ${outputs['analyze'].change} dependencies: source: "."The value is typed and validated: if change does not satisfy the contract
of version-bump, the step fails before any container starts.
Directories that come back
Section titled “Directories that come back”A contract can declare that it writes to a directory:
dependencies: source: type: directory mutable: true # whatever the worker writes comes back to the hostWithout mutable, whatever the worker writes is discarded with the container.
With mutable, the change is exported back and later steps mounting the same
path see the result.
That is what lets version-bump change package.json and commit-and-tag
commit what it changed.
Where outputs live
Section titled “Where outputs live”Every run writes to .oren/runs/<id>/:
manifest.json # the resolved pipelinesteps/analyze/output.jsonsteps/analyze/status.jsonOren re-reads the outputs from that directory rather than keeping them in memory. That is what makes a local run behave the same as a CI run, where each step is a separate job and nothing survives between them.
Values marked as secret are written redacted.