Skip to content

Actions reference

Technical reference for action definition files.

File location

Action definitions are YAML files in the data/actions/ directory. The filename (without .yaml) becomes the action's slug.

data/actions/
├── update-copyright.yaml   → slug: "update-copyright"
└── sync-templates.yaml     → slug: "sync-templates"

Definition schema

Field Type Required Default Description
name string Yes — Display name shown on the dashboard
description string Yes — What the action does
targets TargetSpec No null Which repos to run against; null = global action
script string Yes — Bash script to execute
schedule string (cron) No null Cron schedule; null = manual-only
enabled boolean No true Whether the action runs on schedule

Target spec

Works identically to checks targeting. Exactly one of list, regex, or script must be set — or the field can be omitted entirely for a global action.

  • list / regex match by repo full name and run the action against every observed branch of a matched repo.
  • script is evaluated per (repo, branch) in that branch's workdir; the branch is included only when the script exits 0. The target script sees the same env vars as the action script (BRANCH, DEFAULT_BRANCH, ...), so it doubles as a branch filter:

    # Default branch only (e.g. actions that open PRs)
    targets:
      script: '[ "$BRANCH" = "$DEFAULT_BRANCH" ]'
    

If targets is omitted entirely, the action is global — it runs once in the workspace root without iterating over repositories or branches. Global actions do not receive REPO_* / BRANCH / DEFAULT_BRANCH env vars.

Exit codes

Exit code Result
0 Success
Non-zero Failure

Script execution environment

Property Value
Working directory Cloned repo at target branch (or workspace root for global actions)
Timeout 600 seconds (10 minutes)
Output cap 64 KB (stdout + stderr)
Shell /bin/sh (override with a shebang, e.g. #!/usr/bin/env bash)

Environment variables

Variable Description
REPO_OWNER Repository owner
REPO_NAME Repository name
REPO_FULL_NAME owner/name
BRANCH Current branch
DEFAULT_BRANCH Default branch of the repository
GH_TOKEN / GITHUB_TOKEN GitHub token (for gh CLI)

The gh CLI is pre-installed in the Docker image.

Concurrency

Only one instance of a given action can run at a time. A second trigger returns HTTP 409 Conflict.

API endpoints

Method Path Description
GET /api/actions List all action definitions
GET /api/actions/{slug}/runs Run history (reverse chronological)
GET /api/actions/{slug}/runs/{id} Specific run details + logs
POST /api/actions/{slug}/run Trigger action; optional ?repo=owner/name; 409 if already running