Steps
A step has exactly one of run, uses or template.
steps: - name: Checkout uses: slipway/checkout@v1 with: { depth: 1 } - name: Build id: build run: go build ./... shell: bash # bash | sh | pwsh | python | node working_directory: ./svc env: { X: y } timeout: 10m continue_on_error: false if: ${{ git.branch == "main" }} - name: Upload binary uses: slipway/artifact-upload@v1 with: { name: api, path: bin/api, retention: 7d }A shell script. The default shell comes from defaults.shell. Secrets must never be interpolated into run; pass them through env:
- run: ./deploy.sh env: TOKEN: ${{ secrets.DEPLOY_TOKEN }}Direct use of secrets.* in run, name or if is rejected at validation time. This stops accidental disclosure through shell history, process listings and log lines.
| Form | Meaning |
|---|---|
owner/name@ref |
A step from the Slipway registry (OCI-distributed step.yaml plus image or JS bundle) |
docker://image:tag |
Run an image as a step; with becomes environment variables |
./.slipway/steps/foo |
A local step in the repository |
github://actions/checkout@v4 |
A GitHub Action through the compatibility shim (JavaScript and Docker actions) |
Built-in steps you will meet quickly: slipway/checkout@v1, slipway/artifact-upload@v1, slipway/docker-build@v1, slipway/release-create@v1 and slipway/deploy@v1.
template
Section titled “template”template: org/name@v1 pulls an org-level template with parameters. See Templates.
Step outputs and environment
Section titled “Step outputs and environment”Write key=value lines to the file named by $SLIPWAY_OUTPUT:
- id: ver run: echo "version=$(git describe --tags)" >> "$SLIPWAY_OUTPUT"- run: echo "building ${{ steps.ver.outputs.version }}"Export a job output so other jobs can read it:
outputs: version: ${{ steps.ver.outputs.version }}Other conventions: $SLIPWAY_ENV (environment for later steps), $SLIPWAY_PATH (prepend to PATH). Logging commands on stdout (::mask::, ::group::, ::error::) are covered in Workflow commands.
Conditions and failure handling
Section titled “Conditions and failure handling”if:defaults tosuccess(). Usealways()for cleanup,failure()for diagnostics.continue_on_error: truemarks a step’s failure as non-fatal. It can be an expression.timeout:applies per step and cannot exceed the job timeout.
Environment
Section titled “Environment”Environment variables merge from broad to narrow: pipeline env, container env, job env, step env. The runner also sets SLIPWAY_* variables, including SLIPWAY_ID_TOKEN when the job has permissions: { id_token: write }.