diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 56d9183..4ba3754 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -30,3 +30,34 @@ jobs: # running anything. - name: Test run: dotnet run --project test --configuration Release --no-restore + + # Compile-only gate for the Fable targets. The cross-target *suites* are not green yet + # (JS 82/84, Python 79/84, BEAM 14/84 — see CLAUDE.md), so they cannot gate anything, but + # compilation is binary and already passes on all three. This keeps a change to src/ from + # silently breaking a target between manual `just test-` runs. + # + # Nothing is executed, only compiled, so no Node, uv, rebar3 or erl is needed. + # fail-fast is off so one broken target does not mask the state of the others. + fable-compile: + + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + lang: [beam, javascript, python] + + steps: + - uses: actions/checkout@v5 + - name: Setup .NET + uses: actions/setup-dotnet@v5 + with: + dotnet-version: 10.0.x + dotnet-quality: preview + # Pulls the `fable` tool pinned in .config/dotnet-tools.json (5.13.0). + - name: Setup paket + run: dotnet tool restore + - name: Install dependencies + run: dotnet restore + - name: Compile src to ${{ matrix.lang }} + run: dotnet fable src --lang ${{ matrix.lang }} --outDir build/gate-${{ matrix.lang }}