Documentation / Core Concepts / Supported Actions
Supported Actions
WorkerRun supports Node.js-based GitHub Actions, shell steps, and workflow features across both V8 Isolation and Container execution modes.
Supported (Both Modes)
The following features work in both V8 Isolation mode (runs-on: worker-run) and Container mode (runs-on: worker-run/instance-type=lite).
- Any Node.js action (node12/node16/node20/node24) — Full support including community actions
- Composite actions — Actions using runs.using: composite with nested steps
- run: steps (shell commands) — V8: 80+ built-in commands via @cloudflare/shell; Container: full bash
- Local actions (./path/to/action) — Resolved relative to the repository root
- Pre/post lifecycle hooks — pre: and post: hooks in action.yml
- if: conditions on steps and jobs — Expression-based conditional execution
- continue-on-error — Step failures do not fail the job
- Expression evaluation in with: inputs — contains(), startsWith(), endsWith(), format(), fromJSON(), toJSON(), hashFiles(), success(), failure(), always(), cancelled()
- needs: with job dependencies and outputs — Cross-job data passing via outputs
Container Mode Only
These features require Container mode (runs-on: worker-run/instance-type=lite or runs-on: worker-run/instance-type=basic).
- actions/checkout@v4 — Full git clone with real filesystem
- Docker-based actions — Requires standard-2 or higher instance type
- Full filesystem access — Persistent across steps within a job
- External binaries (git, npm, node, etc.) — Real Ubuntu environment
Not Supported
- Docker-based actions in V8 mode — No Docker runtime in V8 isolates; use Container mode (standard-2+)
- services: / container: workflow keys — Service containers are not available
V8 Mode Built-in Shell Commands
In V8 mode, run: steps are executed via @cloudflare/shell. Over 80 commands are available, including:
echoprintfcurljqgrepsedawksortcatlsfindbase64dateheadtailwccuttrteexargsuniqdirnamebasenamemktemptouchmkdirrmcpmvtesttruefalseenvexportreadsleepIn Container mode, a full bash shell is available with all standard Linux binaries.
Expression Contexts
All standard GitHub Actions expression contexts are available in both modes:
github.*env.*steps.*needs.*runner.*secrets.*inputs.*vars.*matrix.*job.*Supported expression functions:
contains(), startsWith(), endsWith(), format(), fromJSON(), toJSON(), hashFiles(), success(), failure(), always(), cancelled()
Supported operators:
==, !=, ||, &&, !
Workflow Commands & File Commands
Workflow commands (both modes):
::set-output::error::warning::notice::group / ::endgroup::debug::add-maskFile commands (both modes):
$GITHUB_OUTPUT$GITHUB_ENV$GITHUB_STATE$GITHUB_PATHCompatibility Table
| Feature | V8 Mode | Container Mode |
|---|---|---|
| Node.js actions (node12/16/20/24) | Supported | Supported |
| Composite actions | Supported | Supported |
| run: steps (shell commands) | 80+ built-in commands | Full bash |
| Local actions (./path/to/action) | Supported | Supported |
| Pre/post lifecycle hooks | Supported | Supported |
| if: conditions | Supported | Supported |
| continue-on-error | Supported | Supported |
| needs: / job outputs | Supported | Supported |
| Expression evaluation | Supported | Supported |
| actions/checkout@v4 | Not supported | Supported |
| External binaries (git, npm, etc.) | Not supported | Supported |
| Real filesystem | Not supported | Supported |
| Docker-based actions | Not supported | standard-2+ |
| services: / container: | Not supported | Not supported |