Skip to main content

Local CI Runner

Test your GitHub Actions workflows locally before pushing.

Why Run Locally?

  • Faster feedback — No waiting for cloud runners
  • Debug locally — Full access to logs and state
  • Save minutes — Test changes without using CI credits
  • Protected output — Same secret redaction as cloud

Quick Start

# List available jobs
dotset ci --list

# Run all jobs in first workflow
dotset ci

# Run specific jobs
dotset ci build test

List Available Workflows

$ dotset ci --list

Available workflows:
  ci.yml
 build: Build Application
 test: Run Tests
 lint: Lint Code
  release.yml  
 publish: Publish to npm

Run with Protection

dotset ci --mode redact

Use Different Scopes

# Use staging secrets
dotset ci --scope staging

# Use production secrets (be careful!)
dotset ci --scope production

Choose a Workflow File

dotset ci --file release.yml publish

Example Output

$ dotset ci test

Workflow: CI

╭─ Job: Run Tests (test)

├─ Step 1: Install Dependencies
 Passed (5234ms)
├─ Step 2: Run Linter
 Passed (1234ms)
├─ Step 3: Run Tests
 Passed (8521ms)

╰─ Job passed (14989ms)
 2 secret exposure(s) detected

Supported Features

FeatureLocal RunnerGitHub
run steps
Environment variables
Secrets
if conditions
Matrix builds
Docker actions
uses actions
The local runner executes run steps directly. Actions using uses are skipped.

Workflow Example

Create .github/workflows/ci.yml:
name: CI

on: [push]

jobs:
  test:
    name: Run Tests
    runs-on: ubuntu-latest
    steps:
      - name: Install
        run: npm ci
      - name: Test
        run: npm test
Then run locally:
dotset ci test