Actions reference
An action is pure data: a parameter declaration plus a shell template. Nothing in the execution path knows about actions — a flow is compiled into a plain script when you save the job, which is why remote runners need no knowledge of them.
There are 29 built-in actions in eight categories.
General
| Action | ID | What it does |
|---|---|---|
| Run command | shell.run | Runs a shell command in the working directory. The general-purpose action. |
| Print message | shell.echo | Writes a line into the build log. Useful for marking progress. |
| Wait | shell.sleep | Sleeps for a number of seconds — typically waiting for a service to come up. |
| Set environment variable | shell.env | Sets a variable for subsequent steps by appending to $WALIS_ENV_FILE. |
| Change directory | shell.cd | Switches directory; later steps run there too. |
Files
| Action | ID | What it does |
|---|---|---|
| Create directory | file.mkdir | Does not fail if the directory already exists. |
| Copy file | file.copy | Files or directories. |
| Move file | file.move | Move or rename. |
| Delete file | file.remove | Does not fail if the path is absent. |
| Zip | file.zip | Compresses a directory or file into a zip. |
Git
| Action | ID | What it does |
|---|---|---|
| Git clone | git.clone | Optional branch and depth. |
| Git checkout | git.checkout | Switch to a branch or commit. |
| Git pull | git.pull | Fetch and merge the latest commits. |
Node
| Action | ID | What it does |
|---|---|---|
| Install dependencies | node.install | Installs from the lock file. |
| Run npm script | node.script | Runs a script from package.json. |
| Run npx command | node.npx | Runs a command a package provides. |
.NET
| Action | ID | What it does |
|---|---|---|
| dotnet restore | dotnet.restore | Restores NuGet dependencies. |
| dotnet build | dotnet.build | Builds a project or solution. |
| dotnet test | dotnet.test | Runs test projects. |
| dotnet publish | dotnet.publish | Produces publish output. |
Containers
| Action | ID | What it does |
|---|---|---|
| Docker build | docker.build | Builds an image. |
| Docker push | docker.push | Pushes an image to a registry. |
| Docker compose | docker.compose | Brings services up or updates them. |
Deployment
| Action | ID | What it does |
|---|---|---|
| SSH remote command | deploy.ssh | Runs a command on a remote host — restarting a service, running a deploy script. |
| rsync | deploy.rsync | Syncs a directory to a remote host. |
| scp upload | deploy.scp | Copies files to a remote host. |
| HTTP request | deploy.http | Calls an endpoint — triggering a deploy, posting a notification. |
Checks
| Action | ID | What it does |
|---|---|---|
| File exists | check.file | Fails the build when the file is missing. |
| Command available | check.command | Fails the build when the command is not on PATH. |
Per-step switches
Every step in a flow carries three switches, independent of which action it uses:
- Enable this step — off means it is skipped without failing the build.
- Continue on failure — the build carries on past a non-zero exit. Without it, later steps are marked
Skipped. - Run alongside the previous step — see parallel groups.
Custom actions
A custom action is the same shape as a built-in one, stored as JSON in the database. You declare parameters and write a shell template; the template language is documented in the project's Docs/actions.md. Custom actions travel with export and import.
If you need behaviour rather than a template — logic, branching, calling an API — write a plugin instead.