diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml index 26bb223..3e6598e 100644 --- a/.github/workflows/pr-checks.yml +++ b/.github/workflows/pr-checks.yml @@ -19,19 +19,20 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v4 - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 22 - cache: "pnpm" + # Toolchains come from mise.toml, read here by mise-action so the runner + # and a developer's shell resolve identical versions. + - name: Setup toolchains (mise) + uses: jdx/mise-action@v4 - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: "3.13" + - name: Locate pnpm store + run: echo "STORE_PATH=$(pnpm store path --silent)" >> "$GITHUB_ENV" - - name: Setup uv - uses: astral-sh/setup-uv@v6 + - name: Cache pnpm store + uses: actions/cache@v4 + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: ${{ runner.os }}-pnpm-store- - name: Setup Rust toolchain uses: dtolnay/rust-toolchain@stable @@ -43,11 +44,6 @@ jobs: rust/audit -> rust/audit/target cache-on-failure: true - - name: Setup Go - uses: actions/setup-go@v5 - with: - go-version: "1.22" - - name: Setup .NET uses: actions/setup-dotnet@v4 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b8b13df..72e2b72 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,11 +32,20 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v4 - - name: Setup Node.js - uses: actions/setup-node@v4 + # Toolchains come from mise.toml, read here by mise-action so the runner + # and a developer's shell resolve identical versions. + - name: Setup toolchains (mise) + uses: jdx/mise-action@v4 + + - name: Locate pnpm store + run: echo "STORE_PATH=$(pnpm store path --silent)" >> "$GITHUB_ENV" + + - name: Cache pnpm store + uses: actions/cache@v4 with: - node-version: 22 - cache: "pnpm" + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: ${{ runner.os }}-pnpm-store- - name: Setup Rust toolchain uses: dtolnay/rust-toolchain@stable @@ -48,19 +57,6 @@ jobs: rust/audit -> rust/audit/target cache-on-failure: true - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: "3.13" - - - name: Set up uv - uses: astral-sh/setup-uv@v6 - - - name: Setup Go - uses: actions/setup-go@v5 - with: - go-version: "1.22" - - name: Setup .NET uses: actions/setup-dotnet@v4 with: diff --git a/mise.toml b/mise.toml new file mode 100644 index 0000000..00d9294 --- /dev/null +++ b/mise.toml @@ -0,0 +1,16 @@ +# Toolchain versions for this repo — read by mise locally and by +# jdx/mise-action in CI, so a developer's shell and the runner agree. +# +# Not listed here on purpose: +# pnpm -> package.json "packageManager". pnpm self-substitutes to that +# version regardless of which pnpm binary launches it, so a mise +# pin would be cosmetic and would drift. +# dotnet-> actions/setup-dotnet. It installs several SDKs side by side +# (8/9/10 in some repos); mise's dotnet backend pins one. +# rust -> rust-toolchain.toml + dtolnay/rust-toolchain. rustup is canonical +# and mise defers to it anyway. +[tools] +node = "24.14.0" # ships npm 11.9.0 — required (>=11.5.1) for npm OIDC trusted publishing +python = "3.13" +go = "1.22" +uv = "latest" diff --git a/package.json b/package.json index 5247e4a..a873ae8 100644 --- a/package.json +++ b/package.json @@ -112,7 +112,7 @@ "engines": { "node": ">=20.0.0" }, - "packageManager": "pnpm@10.6.1+sha512.40ee09af407fa9fbb5fbfb8e1cb40fbb74c0af0c3e10e9224d7b53c7658528615b2c92450e74cfad91e3a2dcafe3ce4050d80bda71d757756d2ce2b66213e9a3", + "packageManager": "pnpm@10.34.5", "pnpm": { "onlyBuiltDependencies": [ "@smooai/config-typescript"