From 1e1689b5af965dbd79276b7683aec702df0f671d Mon Sep 17 00:00:00 2001 From: William Phetsinorath Date: Fri, 11 Sep 2026 15:17:31 +0200 Subject: [PATCH 1/2] fix: disable workspace package injection to restore link: layout The fa0677c2 lock refresh materialized injectWorkspacePackages as file: copies; install-time snapshots lack the build-generated types/ dirs, breaking keycloak-plugin dependents (TS2307/TS2741/TS2339) on cold caches. Co-authored-by: Automata Signed-off-by: William Phetsinorath Change-Id: I2c4fc9558c697e19ca614e6e7d4e09366a6a6964 fix: force legacy pnpm deploy in server Dockerfiles pnpm v10+ restricts deploy to injected workspaces; with injectWorkspacePackages disabled the deploy step fails with ERR_PNPM_DEPLOY_NONINJECTED_WORKSPACE. --legacy restores the pre-v10 deploy path. Co-authored-by: Automata Signed-off-by: William Phetsinorath Change-Id: I20c7b40edd0bb69676168ff45a3a50c06a6a6964 fix(server-nestjs): make the gitlab mirror rotation test deterministic Draw the vault secret age with faker.date.birthdate({min: 1, max: 2, mode: 'age'}): the draw always lands 1-2 years past, beyond the 250-day rotation threshold, so the rotation branch fires deterministically instead of failing ~1 run in 3. Refs #2706 Co-authored-by: Automata Signed-off-by: William Phetsinorath Change-Id: I28e75a5704c2d7f9f964bb5315b592946a6a6964 --- apps/server-nestjs/Dockerfile | 2 +- .../src/modules/gitlab/gitlab.service.spec.ts | 2 +- apps/server/Dockerfile | 2 +- pnpm-lock.yaml | 22 +++---------------- pnpm-workspace.yaml | 2 +- 5 files changed, 7 insertions(+), 23 deletions(-) diff --git a/apps/server-nestjs/Dockerfile b/apps/server-nestjs/Dockerfile index 8209061048..d83822565b 100644 --- a/apps/server-nestjs/Dockerfile +++ b/apps/server-nestjs/Dockerfile @@ -74,7 +74,7 @@ RUN pnpm --filter @cpn-console/server-nestjs install --frozen-lockfile RUN pnpm --filter @cpn-console/server-nestjs run build # Export @cpn-console/server-nestjs to target build directory -RUN pnpm --filter @cpn-console/server-nestjs --prod deploy build +RUN pnpm --filter @cpn-console/server-nestjs --prod deploy --legacy build # Prod stage ----------------------------------------------------------------------- FROM docker.io/node:26.7.0-bullseye-slim AS prod diff --git a/apps/server-nestjs/src/modules/gitlab/gitlab.service.spec.ts b/apps/server-nestjs/src/modules/gitlab/gitlab.service.spec.ts index 33b81f4f48..a47bd75bb0 100644 --- a/apps/server-nestjs/src/modules/gitlab/gitlab.service.spec.ts +++ b/apps/server-nestjs/src/modules/gitlab/gitlab.service.spec.ts @@ -589,7 +589,7 @@ describe('gitlabService', () => { const staleSecret = makeVaultSecret({ data: { MIRROR_USER: accessToken.name, MIRROR_TOKEN: accessToken.token }, metadata: { - created_time: faker.date.past({ years: 2 }).toISOString(), + created_time: faker.date.birthdate({ min: 1, max: 2, mode: 'age' }).toISOString(), custom_metadata: null, deletion_time: '', destroyed: false, diff --git a/apps/server/Dockerfile b/apps/server/Dockerfile index 35c0076c49..21945e2c69 100644 --- a/apps/server/Dockerfile +++ b/apps/server/Dockerfile @@ -45,7 +45,7 @@ RUN pnpm run build # Build @cpn-console/server RUN pnpm --filter @cpn-console/server run build # Export @cpn-console/server to target build directory -RUN pnpm --filter @cpn-console/server --prod deploy build +RUN pnpm --filter @cpn-console/server --prod deploy --legacy build # Prod stage ----------------------------------------------------------------------- diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6ffab52d71..005e78e526 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3,7 +3,6 @@ lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false - injectWorkspacePackages: true catalogs: build: @@ -1177,7 +1176,7 @@ importers: version: link:../../packages/hooks '@cpn-console/keycloak-plugin': specifier: workspace:^ - version: link:../../plugins/keycloak + version: link:../keycloak '@cpn-console/logger': specifier: workspace:^ version: link:../../packages/logger @@ -1290,7 +1289,7 @@ importers: version: link:../../packages/hooks '@cpn-console/keycloak-plugin': specifier: workspace:^ - version: link:../../plugins/keycloak + version: link:../keycloak '@cpn-console/logger': specifier: workspace:^ version: link:../../packages/logger @@ -1452,7 +1451,7 @@ importers: version: link:../../packages/hooks '@cpn-console/keycloak-plugin': specifier: workspace:^ - version: link:../../plugins/keycloak + version: link:../keycloak '@cpn-console/logger': specifier: workspace:^ version: link:../../packages/logger @@ -2934,10 +2933,6 @@ packages: resolution: {integrity: sha512-QEsX19sFCvknBzV2zelEkZ7waglCqzayY1zDtoRQinHuUiAe2f7q+xXT6R8XNukn+rShB41TOlG4QR2Bt6hxhw==} engines: {node: '>=18'} - '@keycloak/keycloak-admin-client@26.7.3': - resolution: {integrity: sha512-y9wbqcaoRjCvTF+XKaCDTBbHjuFZPbDKS/BRUzIwEBG/prHJ7YuCIsN61FzWzAVAQpvjed5YZ8x9C1/ijGV3mw==} - engines: {node: '>=18'} - '@keyv/bigmap@1.3.1': resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==} engines: {node: '>= 18'} @@ -11298,17 +11293,6 @@ snapshots: camelize-ts: 3.0.0 url-template: 3.1.1 - '@keycloak/keycloak-admin-client@26.7.3': - dependencies: - '@microsoft/kiota-abstractions': 1.0.0-preview.103 - '@microsoft/kiota-http-fetchlibrary': 1.0.0-preview.103 - '@microsoft/kiota-serialization-form': 1.0.0-preview.103 - '@microsoft/kiota-serialization-json': 1.0.0-preview.103 - '@microsoft/kiota-serialization-multipart': 1.0.0-preview.103 - '@microsoft/kiota-serialization-text': 1.0.0-preview.103 - camelize-ts: 3.0.0 - url-template: 3.1.1 - '@keyv/bigmap@1.3.1(keyv@5.6.0)': dependencies: hashery: 1.5.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 6cfe79a563..9d45087973 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -16,7 +16,7 @@ allowBuilds: vue-demi: true allowUnusedPatches: true autoInstallPeers: true -injectWorkspacePackages: true +injectWorkspacePackages: false # minimum number of minutes that must pass after a version is published before # pnpm will install it. This applies to all dependencies, including transitive ones. minimumReleaseAge: 1440 # 1 day From b9d9ee6835646c00c129fdf5155b5aba6fa02835 Mon Sep 17 00:00:00 2001 From: William Phetsinorath Date: Fri, 11 Sep 2026 16:20:50 +0200 Subject: [PATCH 2/2] fix(server-nestjs): make the gitlab mirror rotation test deterministic Draw the secret age with faker.date.birthdate({min:1, max:2, mode:'age'}): always 1-2 years past, beyond the 250-day rotation threshold, so the rotation branch fires deterministically. Refs #2706 Co-authored-by: Automata Signed-off-by: William Phetsinorath Change-Id: I73bd8e79f76b28102a82d8e2d24b3c306a6a6964