From 60d95e453784f34aceef40fc2c8153481aa840b5 Mon Sep 17 00:00:00 2001 From: Colin Ozanne Date: Fri, 22 May 2026 12:53:52 +0000 Subject: [PATCH] fix(server): install deps with pnpm (#2186) * fix(server): install deps with pnpm keeping build with bun * chore: generate dockerfile with dofigen * fix: container build removes the patched deps beofre installing to avoid pnpm failure * fix: use prod pnpm installs and update base images * ci: apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- apps/server/.dockerignore | 2 +- apps/server/Dockerfile | 33 ++++++--- apps/server/dofigen.lock | 76 +++++++++++++------- apps/server/dofigen.yml | 18 +++-- apps/workflows/.dockerignore | 2 +- apps/workflows/Dockerfile | 45 ++++++++---- apps/workflows/dofigen.lock | 111 ++++++++++++++++++----------- apps/workflows/dofigen.yml | 25 +++++-- apps/workflows/src/build-docker.ts | 52 +++++++++++++- packages/assertions/package.json | 6 +- packages/emails/package.json | 2 +- pnpm-lock.yaml | 12 ++-- 12 files changed, 271 insertions(+), 113 deletions(-) diff --git a/apps/server/.dockerignore b/apps/server/.dockerignore index a6903313..36b71308 100644 --- a/apps/server/.dockerignore +++ b/apps/server/.dockerignore @@ -1,4 +1,4 @@ -# This file is generated by Dofigen v2.6.0 +# This file is generated by Dofigen v2.8.0 # See https://github.com/lenra-io/dofigen node_modules diff --git a/apps/server/Dockerfile b/apps/server/Dockerfile index 16a3cc0f..31bbfdf5 100644 --- a/apps/server/Dockerfile +++ b/apps/server/Dockerfile @@ -1,16 +1,18 @@ # syntax=docker/dockerfile:1.19.0 -# This file is generated by Dofigen v2.6.0 +# This file is generated by Dofigen v2.8.0 # See https://github.com/lenra-io/dofigen # install -FROM oven/bun@sha256:f20d9cf365ab35529384f1717687c739c92e6f39157a35a95ef06f4049a10e4a AS install +FROM node@sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf AS install LABEL \ - org.opencontainers.image.base.digest="sha256:f20d9cf365ab35529384f1717687c739c92e6f39157a35a95ef06f4049a10e4a" \ - org.opencontainers.image.base.name="docker.io/oven/bun:1.3.6" \ + org.opencontainers.image.base.digest="sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf" \ + org.opencontainers.image.base.name="docker.io/node:24-slim" \ org.opencontainers.image.stage="install" WORKDIR /app/ RUN \ - --mount=type=bind,target=bunfig.toml,source=bunfig.toml \ + --mount=type=bind,target=pnpm-workspace.yaml,source=pnpm-workspace.yaml \ + --mount=type=bind,target=pnpm-lock.yaml,source=pnpm-lock.yaml \ + --mount=type=bind,target=patches,source=patches \ --mount=type=bind,target=package.json,source=package.json \ --mount=type=bind,target=apps/server/package.json,source=apps/server/package.json \ --mount=type=bind,target=packages/analytics/package.json,source=packages/analytics/package.json \ @@ -44,8 +46,11 @@ RUN \ --mount=type=bind,target=packages/locales/package.json,source=packages/locales/package.json \ --mount=type=bind,target=packages/services/package.json,source=packages/services/package.json \ --mount=type=bind,target=packages/importers/package.json,source=packages/importers/package.json \ - --mount=type=cache,target=/root/.bun/install/cache,sharing=locked \ - bun install --production --frozen-lockfile --verbose + --mount=type=cache,target=/root/.local/share/pnpm/store,sharing=locked \ + < { + const lines = workspaceConfig.split(/\r?\n/); + let inCatalog = false; + const entries: Record = {}; + + for (const line of lines) { + if (!inCatalog) { + if (line.trim() === "catalog:") { + inCatalog = true; + } + continue; + } + + if (!line.startsWith(" ")) { + break; + } + + const match = line.match(/^\s{2}("[^"]+"|[^:]+):\s*(.+)$/); + if (!match) { + continue; + } + + const key = match[1].replace(/^"|"$/g, "").trim(); + const value = match[2].replace(/^"|"$/g, "").trim(); + entries[key] = value; + } + + return entries; +})(); + +const resolveVersion = (name: string, spec: string) => { + if (!spec.startsWith("catalog:")) { + return spec; + } + + const resolved = catalog[name]; + if (!resolved) { + throw new Error(`Missing catalog entry for ${name}`); + } + + return resolved; +}; + const extractedDependencies = extractDependenciesNames.reduce( (acc, cur) => { - if (packageJson.dependencies[cur]) { - acc[cur] = packageJson.dependencies[cur]; + const spec = packageJson.dependencies[cur]; + if (spec) { + acc[cur] = resolveVersion(cur, spec); } return acc; diff --git a/packages/assertions/package.json b/packages/assertions/package.json index 24fd4976..49758b48 100644 --- a/packages/assertions/package.json +++ b/packages/assertions/package.json @@ -5,12 +5,12 @@ "main": "src/index.ts", "scripts": {}, "dependencies": { - "jsonpath-plus": "catalog:" + "jsonpath-plus": "catalog:", + "zod": "catalog:" }, "devDependencies": { "@openstatus/tsconfig": "workspace:*", - "typescript": "catalog:", - "zod": "catalog:" + "typescript": "catalog:" }, "keywords": [], "author": "", diff --git a/packages/emails/package.json b/packages/emails/package.json index 10ccf0b5..4057addf 100644 --- a/packages/emails/package.json +++ b/packages/emails/package.json @@ -13,6 +13,7 @@ "dependencies": { "@t3-oss/env-core": "catalog:", "effect": "catalog:", + "react": "catalog:", "react-email": "catalog:", "resend": "catalog:", "zod": "catalog:" @@ -22,7 +23,6 @@ "@react-email/ui": "catalog:", "@types/node": "catalog:", "@types/react": "catalog:", - "react": "catalog:", "typescript": "catalog:" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index df3223af..d080ac8d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1976,6 +1976,9 @@ importers: jsonpath-plus: specifier: 'catalog:' version: 7.2.0 + zod: + specifier: 'catalog:' + version: 4.1.13 devDependencies: '@openstatus/tsconfig': specifier: workspace:* @@ -1983,9 +1986,6 @@ importers: typescript: specifier: 'catalog:' version: 5.9.3 - zod: - specifier: 'catalog:' - version: 4.1.13 packages/db: dependencies: @@ -2050,6 +2050,9 @@ importers: effect: specifier: 'catalog:' version: 3.21.2 + react: + specifier: 'catalog:' + version: 19.2.6 react-email: specifier: 'catalog:' version: 6.1.5(react-dom@19.2.6(react@19.2.6))(react@19.2.6) @@ -2072,9 +2075,6 @@ importers: '@types/react': specifier: 'catalog:' version: 19.2.15 - react: - specifier: 'catalog:' - version: 19.2.6 typescript: specifier: 'catalog:' version: 5.9.3 -- 2.51.2