diff --git a/.github/workflows/internals-distcheck-ci.yml b/.github/workflows/internals-distcheck-ci.yml index db64e3de5..b37aad4ab 100644 --- a/.github/workflows/internals-distcheck-ci.yml +++ b/.github/workflows/internals-distcheck-ci.yml @@ -1,8 +1,8 @@ name: Internals distcheck CI # Verification for the internals/distcheck uv package (the dirsql-distcheck -# publishability flows). Consumers (the SDK test workflows' distcheck jobs) -# are deliberately not fanned out to; this lane's own gates are the guard. +# publishability flows). Consumers (the SDK workflows' distcheck jobs) are +# deliberately not fanned out to; this lane runs the flows itself. on: pull_request: paths: @@ -30,3 +30,70 @@ jobs: source: internals/distcheck/src base: ${{ github.event.pull_request.base.sha || 'origin/main' }} gates: '["colocated-test", "unit-lint", "integration-lint", "unit-coverage", "mutation"]' + + python-flow: + name: dirsql-distcheck python + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + + - name: Rust cache + uses: Swatinem/rust-cache@v2 + with: + workspaces: ". -> target" + + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + python-version: "3.13" + + - name: Install dependencies (maturin) + run: uv sync + working-directory: packages/python + + - name: Put maturin on PATH + run: echo "$PWD/packages/python/.venv/bin" >> "$GITHUB_PATH" + + - name: Run the python flow (build -> pack -> install -> run) + run: uv run --project internals/distcheck dirsql-distcheck python + + node-flow: + name: dirsql-distcheck node + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + + - name: Rust cache + uses: Swatinem/rust-cache@v2 + with: + workspaces: ". -> target" + + - name: Install Node + uses: actions/setup-node@v4 + with: + node-version: "24" + + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 11 + + - name: Install uv + uses: astral-sh/setup-uv@v7 + + - name: Install dependencies + working-directory: packages/ts + run: pnpm install + + - name: Build native module + stage platform + working-directory: packages/ts + run: pnpm build + + - name: Run the node flow (build -> pack -> install -> run) + run: uv run --project internals/distcheck dirsql-distcheck node diff --git a/internals/distcheck/README.md b/internals/distcheck/README.md index d165f6bda..f143dc79a 100644 --- a/internals/distcheck/README.md +++ b/internals/distcheck/README.md @@ -51,7 +51,7 @@ Each flow follows the same shape (mirroring `internals/checks`): and calls `gate.run`, turning a `DistcheckError` into a non-zero exit. Every module (except empty `__init__.py`s) carries a colocated `*_test.py`, -gated by `conventions.yml`'s `internals-distcheck` job: `colocated-test`, +gated by `internals-distcheck-ci.yml`'s `internals-distcheck` job: `colocated-test`, `unit-lint`, `integration-lint`, `unit-coverage`, and `mutation`. ## Test tiers @@ -64,7 +64,8 @@ gated by `conventions.yml`'s `internals-distcheck` job: `colocated-test`, execution is the `dirsql-distcheck ` job, which builds them first. No e2e tier / attestation: `tests/integration/` is the outermost tier, and the -CI `distcheck` jobs (`python-test.yml` / `ts-test.yml`) run the real flows directly. +`python-flow` / `node-flow` jobs in `internals-distcheck-ci.yml` run the real +flows directly. ```bash uv run --project internals/distcheck python -m pytest internals/distcheck/src internals/distcheck/tests -q