Skip to content

Action inputs and outputs

A stack is deploying: the gate is open and water runs downstreamA stack is deploying: the gate is open and water runs downstream

Modes

One action, five modes, chosen with the mode input.

Mode What it does Runs the infrastructure tool
scan Previews stacks and brings the dashboard up to date. Yes
resolve Reacts to a tick: checks who ticked, records the deploy and hands the stack to apply. No
apply Previews the stack again and deploys it if nothing moved since the tick. Yes
settle Gives a deploy a result when its workflow run ended without reporting one. No
check Reads the repo’s files and says whether the setup is valid. It needs no credentials, no tool and no GitHub API, so it is safe on any pull request. No

Inputs

Generated from the action’s action.yml.

mode

What this step does. One of: scan, resolve, apply, settle, check.

  • Required: yes

concurrency

How many previews a scan runs at the same time. It belongs to the runner, not to the repo, so it is an input and not a config key.

  • Required: no
  • Default: 4

preview-timeout

Time limit for one preview, in minutes. A preview that runs longer is stopped and its stack gets a preview failure row.

  • Required: no
  • Default: 10

github-token

The GITHUB_TOKEN of the workflow run. Leave it at the default. Sluiceway always acts as the workflow’s own token, and a GitHub App token or a personal access token is not supported. The check mode reads files only and never uses it.

  • Required: no
  • Default: ${{ github.token }}

deployment-id

Required in apply mode and an error in every other mode. The deployment record to deploy: the deployment field of a matrix entry of resolve.

  • Required: no

dry-run

apply only. true rehearses a tick: the deployment record, the fresh preview and the hash check run as for a deploy, and then nothing is deployed. The record ends as inactive, “rehearsed, nothing was deployed”, and the job is green.

  • Required: no
  • Default: false

job-id

Leave it at the default. The id of the running job, which GitHub gives no step in any other way. Links on the dashboard use it to land on this job’s log.

  • Required: no
  • Default: ${{ job.check_run_id }}

Outputs

Generated from the action’s action.yml.

matrix

Set by resolve and scan. A JSON list with one { stack, environment, deployment } entry per deploy it started, or []. Hand it to the matrix of the apply job. A scan starts a deploy only for a pull request merged from the dashboard (mergeAndDeploy).

dashboard-url

Set by scan, apply and settle. The web address of the dashboard issue. Empty when the step never got as far as finding it.

pending

Set by scan. The number of pending stacks on the dashboard after this scan. 0 when the scan failed before it wrote the dashboard.

preview-failed

Set by scan. The number of stacks on the dashboard whose preview failed. 0 when the scan failed before it wrote the dashboard.

in-sync

Set by scan. The number of stacks on the dashboard that are in sync. 0 when the scan failed before it wrote the dashboard.

dashboard-changed

Set by scan. true when this scan wrote a body that differs from the one before, false otherwise, so a notify step can stay quiet when nothing changed.

outcome

Set by apply. deployed, in-sync (the fresh preview had nothing to deploy), rehearsed (dry-run stopped after the check of the hash), refused (the change moved since the tick, the deployment record was not one this job may deploy, or deploys are turned off) or failed.

stack

Set by apply. The stack id this job handled. Empty when the job never learned it.

result-file

Set by scan and apply. The path, under RUNNER_TEMP, of a JSON file with what the summary holds: no property value and none of the tool’s own words. Sluiceway does not upload it.