fix(ci): midnightbsd drops broken-dep git; haiku uses provides-syntax… #66
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: ci | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: {} | |
| workflow_dispatch: {} | |
| permissions: | |
| contents: read | |
| jobs: | |
| # T1 native tjs legs, CI-smoke tier (release-matrix Decision 3): the same | |
| # ./.github/actions/build-leg recipe the release matrix runs, minus attest. | |
| # glibc Linux artifacts are smoke-only forever (published Linux = musl-static | |
| # via the matrix); darwin here is the cheap early-warning twin of the | |
| # published matrix leg. The tjs build restores from the shared cache, so a | |
| # typical push pays only bundle+fuse+smoke. | |
| tjs: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - leg: darwin-arm64 | |
| os: macos-14 | |
| - leg: linux-x64-glibc | |
| os: ubuntu-latest | |
| - leg: linux-arm64-glibc | |
| os: ubuntu-24.04-arm | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 60 | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: .tool-versions | |
| - uses: ./.github/actions/build-leg | |
| with: | |
| leg: ${{ matrix.leg }} | |
| sea: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-latest # linux-x64 | |
| - os: ubuntu-24.04-arm # linux-arm64 | |
| - os: macos-14 # darwin-arm64 | |
| - os: windows-latest # windows-x64 | |
| - os: windows-11-arm # windows-arm64 | |
| runs-on: ${{ matrix.os }} | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: .tool-versions | |
| - name: Assert Node matches the .tool-versions pin | |
| run: | | |
| set -euo pipefail | |
| want=$(sed -n 's/^nodejs //p' .tool-versions) | |
| have=$(node -v); have=${have#v} | |
| [ "$have" = "$want" ] || { echo "node skew: .tool-versions=$want but runtime=$have" >&2; exit 1; } | |
| - name: Install the Claude provider (npm) | |
| run: npm i -g @anthropic-ai/claude-code 2>&1 | tail -3 | |
| - name: SEA build + smoke + REQUIRED real bundle boot | |
| run: | | |
| set -uo pipefail | |
| # The real Bun binary (~240MB) lives inside the installed package: on POSIX as the | |
| # nested platform dep (…/claude-code/node_modules/@anthropic-ai/claude-code-<os>-<arch>/claude), | |
| # on Windows as …/claude-code/bin/claude.exe. Match both names; clode's byte-scan extractor | |
| # carves either (PE or ELF). Use `npm root -g` (portable: <prefix>/lib/node_modules on POSIX, | |
| # <prefix>/node_modules on Windows) — NOT `npm prefix -g/node_modules`, which is wrong on POSIX. | |
| PROV="$(find "$(npm root -g)/@anthropic-ai/claude-code" -type f \( -name claude -o -name claude.exe \) -size +20M 2>/dev/null | head -1)" | |
| if [ -z "$PROV" ]; then echo "ERROR: no ~240MB Bun provider found under @anthropic-ai/claude-code" >&2; exit 1; fi | |
| echo "provider: $PROV" | |
| # One node:test run: build (sea-build), --clode-version/--clode-help + real boot + sea-deps | |
| # reuse (sea-smoke, with CLODE_CLAUDE_BIN set so they RUN). CLODE_OFFLINE skips online -p. | |
| CLODE_SEA=1 CLODE_OFFLINE=1 CLODE_CLAUDE_BIN="$PROV" \ | |
| node --test --test-concurrency=1 test/sea-build.test.cjs test/sea-smoke.test.cjs | |
| test: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-latest # linux-x64 | |
| - os: windows-latest # windows-x64 | |
| runs-on: ${{ matrix.os }} | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: .tool-versions | |
| - name: Assert Node matches the .tool-versions pin | |
| run: | | |
| set -euo pipefail | |
| want=$(sed -n 's/^nodejs //p' .tool-versions) | |
| have=$(node -v); have=${have#v} | |
| [ "$have" = "$want" ] || { echo "node skew: .tool-versions=$want but runtime=$have" >&2; exit 1; } | |
| - name: Install runtime deps (the six Bun-backing packages, locked) for the fidelity gate | |
| run: npm ci | |
| - name: Full node:test suite (includes the shim-fidelity gate) | |
| run: npm test |