Skip to content

Dry Run

Dry Run #128

Workflow file for this run

# Manual trigger: test everything before pushing a release.
# Each step can be skipped for faster iteration.
name: Dry Run
on:
workflow_dispatch:
inputs:
skip_lint:
description: 'Skip lint + security + CodeQL'
type: boolean
default: false
skip_tests:
description: 'Skip unit/integration tests'
type: boolean
default: false
skip_builds:
description: 'Skip build + smoke'
type: boolean
default: false
soak_level:
description: 'Soak: full (quick+asan), quick (10min), none'
type: choice
options: ['full', 'quick', 'none']
default: 'quick'
permissions:
contents: read
jobs:
# ── Lint + Security ──────────────────────────────────────────
lint:
if: ${{ inputs.skip_lint != true }}
uses: ./.github/workflows/_lint.yml
secrets: inherit
# ── Tests (all platforms, perf tests skipped on CI) ──────────
test:
needs: [lint]
if: ${{ inputs.skip_tests != true && !cancelled() && (needs.lint.result == 'success' || needs.lint.result == 'skipped') }}
uses: ./.github/workflows/_test.yml
with:
skip_perf: true
# ── Build all platforms ──────────────────────────────────────
build:
if: ${{ inputs.skip_builds != true && !cancelled() && (needs.test.result == 'success' || needs.test.result == 'skipped') }}
needs: [test]
uses: ./.github/workflows/_build.yml
# ── Smoke test every binary ─────────────────────────────────
smoke:
if: ${{ inputs.skip_builds != true && !cancelled() && needs.build.result == 'success' }}
needs: [build]
uses: ./.github/workflows/_smoke.yml
# ── Soak tests (optional, parallel with smoke) ──────────────
soak:
if: ${{ inputs.soak_level != 'none' && !cancelled() && needs.build.result == 'success' }}
needs: [build]
uses: ./.github/workflows/_soak.yml
with:
duration_minutes: 10
run_asan: ${{ inputs.soak_level == 'full' }}