From c02e4975013c9f865c18cfa1292091a82a5df352 Mon Sep 17 00:00:00 2001 From: Thibault Le Ouay Ducasse Date: Thu, 10 Sep 2026 13:45:53 +0200 Subject: [PATCH] pnpm 12 --- .github/workflows/buf-push.yml | 2 +- .github/workflows/dx.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/migrate.yml | 2 +- .github/workflows/proto-check.yml | 2 +- apps/server/Dockerfile | 2 +- apps/server/dofigen.lock | 20 +++--- apps/server/dofigen.yml | 2 +- apps/workflows/Dockerfile | 2 +- apps/workflows/dofigen.lock | 92 +++++++++++++-------------- apps/workflows/dofigen.yml | 2 +- package.json | 2 +- packages/db/Dockerfile | 2 +- packages/db/dofigen.lock | 14 ++--- packages/db/dofigen.yml | 2 +- pnpm-lock.yaml | 101 ++++++++++++++++++++++++++++++ pnpm-workspace.yaml | 9 +++ 17 files changed, 185 insertions(+), 75 deletions(-) diff --git a/.github/workflows/buf-push.yml b/.github/workflows/buf-push.yml index 33e03959..c2ac3767 100644 --- a/.github/workflows/buf-push.yml +++ b/.github/workflows/buf-push.yml @@ -27,7 +27,7 @@ jobs: fetch-depth: 0 - name: Set up pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@v6 - name: ⎔ Setup node uses: actions/setup-node@v6 diff --git a/.github/workflows/dx.yml b/.github/workflows/dx.yml index 6ddfb91d..275b90f3 100644 --- a/.github/workflows/dx.yml +++ b/.github/workflows/dx.yml @@ -30,7 +30,7 @@ jobs: uses: actions/checkout@v6 - name: Set up pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@v6 - name: ⎔ Setup node uses: actions/setup-node@v6 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 32aec6e4..b04500ae 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -20,7 +20,7 @@ jobs: uses: actions/checkout@v6 - name: Set up pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@v6 - name: ⎔ Setup node uses: actions/setup-node@v6 diff --git a/.github/workflows/migrate.yml b/.github/workflows/migrate.yml index 5d80891b..4d1ed8ba 100644 --- a/.github/workflows/migrate.yml +++ b/.github/workflows/migrate.yml @@ -18,7 +18,7 @@ jobs: uses: actions/checkout@v6 - name: Set up pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@v6 - name: ⎔ Setup node uses: actions/setup-node@v6 diff --git a/.github/workflows/proto-check.yml b/.github/workflows/proto-check.yml index 2ee4684a..a2ca809f 100644 --- a/.github/workflows/proto-check.yml +++ b/.github/workflows/proto-check.yml @@ -27,7 +27,7 @@ jobs: fetch-depth: 0 - name: Set up pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@v6 - name: ⎔ Setup node uses: actions/setup-node@v6 diff --git a/apps/server/Dockerfile b/apps/server/Dockerfile index bb560e10..65d6b3d1 100644 --- a/apps/server/Dockerfile +++ b/apps/server/Dockerfile @@ -48,7 +48,7 @@ RUN \ --mount=type=cache,target=/root/.local/share/pnpm/store,sharing=locked \ <{for(const e of Deno.readDirSync(p))if(e.name.startsWith(x+"@"))return e.name.slice(x.length+1).split("_")[0]};Deno.writeTextFileSync("/tmp/sc/package.json",JSON.stringify({dependencies:{"@libsql/client":v("@libsql+client"),libsql:v("libsql"),"@google-cloud/tasks":v("@google-cloud+tasks")}}))' - - cd /tmp/sc && deno install --node-modules-dir=auto --allow-scripts - - cd /app/apps/workflows && deno bundle --platform=deno --minify --sloppy-imports --node-modules-dir=manual --external '@libsql/client' --external 'libsql' --external '@google-cloud/tasks' --output /tmp/sc/_serve.bundle.mjs src/serve.ts - - cd /tmp/sc && deno compile --no-check -A --node-modules-dir=manual --output /app/apps/workflows/app /tmp/sc/_serve.bundle.mjs - - mkdir -p /app/data install: fromImage: path: node digest: sha256:b31e7a42fdf8b8aa5f5ed477c72d694301273f1069c5a2f71d53c6482e99a2fc label: org.opencontainers.image.base.digest: sha256:b31e7a42fdf8b8aa5f5ed477c72d694301273f1069c5a2f71d53c6482e99a2fc - org.opencontainers.image.base.name: docker.io/node:24-slim org.opencontainers.image.stage: install + org.opencontainers.image.base.name: docker.io/node:24-slim workdir: /app/ run: - corepack enable pnpm - - pnpm install --prod --frozen-lockfile --filter=@openstatus/workflows... --verbose + - pnpm install --prod --frozen-lockfile --filter=@openstatus/workflows... --loglevel debug cache: - target: /root/.local/share/pnpm/store bind: @@ -125,18 +91,52 @@ effective: | source: packages/locales/package.json - target: packages/status-fetcher/package.json source: packages/status-fetcher/package.json + build: + fromImage: + path: denoland/deno + digest: sha256:69a9f3033e3f381770452648b1cbf4ae96ea409f7ef24f30afeff3d380705f62 + label: + org.opencontainers.image.base.name: docker.io/denoland/deno:2.9.2 + org.opencontainers.image.stage: build + org.opencontainers.image.base.digest: sha256:69a9f3033e3f381770452648b1cbf4ae96ea409f7ef24f30afeff3d380705f62 + workdir: /app/apps/workflows + env: + NODE_ENV: production + copy: + - paths: + - . + target: /app/ + - fromBuilder: install + paths: + - /app/node_modules + target: /app/node_modules + - fromBuilder: install + paths: + - /app/apps/workflows/node_modules + target: /app/apps/workflows/node_modules + - fromBuilder: install + paths: + - /app/packages + target: /app/packages + run: + - mkdir -p /tmp/sc + - deno eval 'const p="/app/node_modules/.pnpm";const v=(x)=>{for(const e of Deno.readDirSync(p))if(e.name.startsWith(x+"@"))return e.name.slice(x.length+1).split("_")[0]};Deno.writeTextFileSync("/tmp/sc/package.json",JSON.stringify({dependencies:{"@libsql/client":v("@libsql+client"),libsql:v("libsql"),"@google-cloud/tasks":v("@google-cloud+tasks")}}))' + - cd /tmp/sc && deno install --node-modules-dir=auto --allow-scripts + - cd /app/apps/workflows && deno bundle --platform=deno --minify --sloppy-imports --node-modules-dir=manual --external '@libsql/client' --external 'libsql' --external '@google-cloud/tasks' --output /tmp/sc/_serve.bundle.mjs src/serve.ts + - cd /tmp/sc && deno compile --no-check -A --node-modules-dir=manual --output /app/apps/workflows/app /tmp/sc/_serve.bundle.mjs + - mkdir -p /app/data fromImage: host: registry.access.redhat.com port: 443 path: hi/curl digest: sha256:848b81ab5d5e55371d7193fd4f1ea7b605d14dbb039344ffad34a4c1f0d880f4 label: - org.opencontainers.image.source: https://github.com/openstatusHQ/openstatus - org.opencontainers.image.authors: OpenStatus Team + org.opencontainers.image.base.digest: sha256:848b81ab5d5e55371d7193fd4f1ea7b605d14dbb039344ffad34a4c1f0d880f4 org.opencontainers.image.description: Background job processing and probe scheduling for OpenStatus - org.opencontainers.image.title: OpenStatus Workflows + org.opencontainers.image.authors: OpenStatus Team org.opencontainers.image.vendor: OpenStatus - org.opencontainers.image.base.digest: sha256:848b81ab5d5e55371d7193fd4f1ea7b605d14dbb039344ffad34a4c1f0d880f4 + org.opencontainers.image.title: OpenStatus Workflows + org.opencontainers.image.source: https://github.com/openstatusHQ/openstatus io.dofigen.version: 2.8.0 user: user: '1000' @@ -164,17 +164,17 @@ effective: | retries: 3 images: docker.io: - library: - node: - 24-slim: - digest: sha256:b31e7a42fdf8b8aa5f5ed477c72d694301273f1069c5a2f71d53c6482e99a2fc denoland: deno: 2.9.2: digest: sha256:69a9f3033e3f381770452648b1cbf4ae96ea409f7ef24f30afeff3d380705f62 + library: + node: + 24-slim: + digest: sha256:b31e7a42fdf8b8aa5f5ed477c72d694301273f1069c5a2f71d53c6482e99a2fc resources: dofigen.yml: - hash: 701b8ce017bf416392a04d9b5c4b5776d55e55b04ebe31f493efd77d7c12fe9f + hash: 614452ec2a7099d450629d841ea4c89e5b10bef8776c82581d57e7b7354fc2bd content: | ignore: - node_modules @@ -231,7 +231,7 @@ resources: # Install dependencies (scoped to the workflows subgraph so node_modules — and the binary that embeds it — stays small) run: - corepack enable pnpm - - pnpm install --prod --frozen-lockfile --filter=@openstatus/workflows... --verbose + - pnpm install --prod --frozen-lockfile --filter=@openstatus/workflows... --loglevel debug cache: - /root/.local/share/pnpm/store diff --git a/apps/workflows/dofigen.yml b/apps/workflows/dofigen.yml index e4a81281..992b7ba4 100644 --- a/apps/workflows/dofigen.yml +++ b/apps/workflows/dofigen.yml @@ -53,7 +53,7 @@ builders: # Install dependencies (scoped to the workflows subgraph so node_modules — and the binary that embeds it — stays small) run: - corepack enable pnpm - - pnpm install --prod --frozen-lockfile --filter=@openstatus/workflows... --verbose + - pnpm install --prod --frozen-lockfile --filter=@openstatus/workflows... --loglevel debug cache: - /root/.local/share/pnpm/store diff --git a/package.json b/package.json index fe474776..7ebcfcd7 100644 --- a/package.json +++ b/package.json @@ -37,5 +37,5 @@ "turbo": "2.9.14", "typescript": "catalog:" }, - "packageManager": "pnpm@11.2.1" + "packageManager": "pnpm@12.3.4" } diff --git a/packages/db/Dockerfile b/packages/db/Dockerfile index 34e99642..395481fc 100644 --- a/packages/db/Dockerfile +++ b/packages/db/Dockerfile @@ -22,7 +22,7 @@ RUN \ --mount=type=cache,target=/root/.local/share/pnpm/store,sharing=locked \ <=18.*'} + hasBin: true + +snapshots: + + '@pnpm/exe.darwin-arm64@12.3.4': + optional: true + + '@pnpm/exe.darwin-x64@12.3.4': + optional: true + + '@pnpm/exe.linux-arm64-musl@12.3.4': + optional: true + + '@pnpm/exe.linux-arm64@12.3.4': + optional: true + + '@pnpm/exe.linux-x64-musl@12.3.4': + optional: true + + '@pnpm/exe.linux-x64@12.3.4': + optional: true + + '@pnpm/exe.win32-arm64@12.3.4': + optional: true + + '@pnpm/exe.win32-x64@12.3.4': + optional: true + + pnpm@12.3.4: + optionalDependencies: + '@pnpm/exe.darwin-arm64': 12.3.4 + '@pnpm/exe.darwin-x64': 12.3.4 + '@pnpm/exe.linux-arm64': 12.3.4 + '@pnpm/exe.linux-arm64-musl': 12.3.4 + '@pnpm/exe.linux-x64': 12.3.4 + '@pnpm/exe.linux-x64-musl': 12.3.4 + '@pnpm/exe.win32-arm64': 12.3.4 + '@pnpm/exe.win32-x64': 12.3.4 + +--- lockfileVersion: '9.0' settings: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 7b1844ce..bc62917b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,6 +2,15 @@ packages: - apps/* - packages/**/* - packages/config/* +# pnpm 12 routes `@jsr` to npm.jsr.io by default when *resolving*, but the +# supply-chain policy pass (`trustPolicy` / `minimumReleaseAge` below) verifies +# every lockfile entry against the default registry, so the `@jsr/std__*` +# packages behind our `jsr:` specifiers 404 on a cold cache. Declaring the route +# here makes both passes agree. +registries: + "https://npm.jsr.io/": + scopes: + - "@jsr" trustPolicy: off minimumReleaseAge: 1440 allowBuilds: -- 2.51.2