Skip to content

feat(inspect+dogfood): broader inspect --json + canonical bundle lock-down #306

feat(inspect+dogfood): broader inspect --json + canonical bundle lock-down

feat(inspect+dogfood): broader inspect --json + canonical bundle lock-down #306

Workflow file for this run

name: CI
# Keep this workflow hand-curated. `mise generate github-action` is useful as a
# starting point, but this checked-in file is the maintained source of truth so
# repo-specific triggers, deterministic bootstrap, and step-level logs stay
# explicit.
on:
workflow_dispatch:
pull_request:
merge_group:
push:
branches:
- main
concurrency:
group: ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
linux-static:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Check out repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Set up mise
uses: jdx/mise-action@5228313ee0372e111a38da051671ca30fc5a96db # v3.6.3
with:
install_args: --locked
- name: Install CI dependencies
run: mise run bootstrap-ci
- name: Install Playwright Chromium
run: npx playwright install chromium
- name: Check formatting
run: mise run format-check
- name: Workflow lint
run: mise run workflow-lint
- name: Lint
run: mise run lint
- name: Typecheck
run: mise run typecheck
- name: Validate canonical proof bundles
run: mise run validate-bundles
- name: Build
run: mise run build
- name: Packaging smoke
run: mise run install-smoke
test-unit:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Check out repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Set up mise
uses: jdx/mise-action@5228313ee0372e111a38da051671ca30fc5a96db # v3.6.3
with:
install_args: --locked
- name: Install CI dependencies
run: mise run bootstrap-ci
- name: Install Playwright Chromium
run: npx playwright install chromium
- name: Test unit
run: mise run test-unit
test-integration:
runs-on: ubuntu-latest
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
shard: [1/4, 2/4, 3/4, 4/4]
steps:
- name: Check out repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Set up mise
uses: jdx/mise-action@5228313ee0372e111a38da051671ca30fc5a96db # v3.6.3
with:
install_args: --locked
- name: Install CI dependencies
run: mise run bootstrap-ci
- name: Install Playwright Chromium
run: npx playwright install chromium
- name: Test integration shard
run: npm run test:integration -- --shard=${{ matrix.shard }}
test-e2e:
runs-on: ubuntu-latest
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
shard: [1/3, 2/3, 3/3]
steps:
- name: Check out repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Set up mise
uses: jdx/mise-action@5228313ee0372e111a38da051671ca30fc5a96db # v3.6.3
with:
install_args: --locked
- name: Install CI dependencies
run: mise run bootstrap-ci
- name: Install Playwright Chromium
run: npx playwright install chromium
- name: Test e2e shard
run: npm run test:e2e -- --shard=${{ matrix.shard }}
quality-gates:
runs-on: ubuntu-latest
timeout-minutes: 5
needs:
- linux-static
- test-unit
- test-integration
- test-e2e
if: ${{ always() }}
steps:
- name: Report Linux quality gate results
run: |
echo "linux-static: ${{ needs.linux-static.result }}"
echo "test-unit: ${{ needs.test-unit.result }}"
echo "test-integration: ${{ needs.test-integration.result }}"
echo "test-e2e: ${{ needs.test-e2e.result }}"
- name: Fail if any Linux quality gate failed
if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped') }}
run: exit 1
# macOS compilation and static-analysis counterpart to the Ubuntu quality
# gates above. Tests are excluded because the macOS GitHub Actions runner
# has pre-existing issues with PTY spawning and Unix domain sockets that
# cause integration/e2e test failures. The full test suite runs on Linux;
# macOS validates that the code compiles and passes static checks.
quality-gates-macos:
runs-on: macos-latest
timeout-minutes: 20
steps:
- name: Check out repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Set up mise
uses: jdx/mise-action@5228313ee0372e111a38da051671ca30fc5a96db # v3.6.3
with:
# The macOS job does not run workflow linting or Communique, so avoid
# installing release-only tools. It still needs aube for bootstrap-ci.
install_args: --locked node python aube
- name: Install CI dependencies
run: mise run bootstrap-ci
- name: Check formatting
run: mise run format-check
- name: Lint
run: mise run lint
- name: Typecheck
run: mise run typecheck
- name: Build
run: mise run build