From 27648ee2f70d56566113115a15da718766f0d791 Mon Sep 17 00:00:00 2001 From: "Zimin A.N." Date: Fri, 8 May 2026 00:35:41 +0300 Subject: [PATCH] =?UTF-8?q?fix(ci):=20pnpm=20via=20npm=20install=20(skip?= =?UTF-8?q?=20corepack)=20=E2=80=94=20Dockerfile=20+=20build-docs=20job?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corepack может hang в CI runner на integrity-check либо non-TTY prompt при первом activate. Заменяем на прямой npm install с pinned version 9.15.4 (latest stable v9, lockfile compat: lockfileVersion '9.0'). Изменения: - ordinis-admin-ui/Dockerfile: corepack → npm install -g pnpm@9.15.4 - docs/Dockerfile: same swap - .gitlab-ci.yml build-docs: same swap Verified locally: docker build ordinis-admin-ui за 23 sec, no hang. --- .gitlab-ci.yml | 4 ++-- docs/Dockerfile | 4 ++-- ordinis-admin-ui/Dockerfile | 13 +++++++------ 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9a4c8fe..defff60 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -126,8 +126,8 @@ build-docs: stage: build image: repo.nstart.cloud/library/node:20-alpine before_script: - - corepack enable - - corepack prepare pnpm@9.0.0 --activate + # npm install pnpm — corepack может hang на CI runner integrity checks. + - npm install -g --silent pnpm@9.15.4 script: - cd docs - pnpm install --frozen-lockfile diff --git a/docs/Dockerfile b/docs/Dockerfile index 08214dd..5997fe6 100644 --- a/docs/Dockerfile +++ b/docs/Dockerfile @@ -11,8 +11,8 @@ WORKDIR /docs # Layered cache: package.json + lockfile меняются реже чем content. COPY package.json pnpm-lock.yaml ./ -RUN corepack enable \ - && corepack prepare pnpm@9.0.0 --activate \ +# npm install pnpm — corepack может hang в CI на integrity check / TTY prompts. +RUN npm install -g --silent pnpm@9.15.4 \ && pnpm install --frozen-lockfile # Copy остальное (toc, .yfm, markdown). diff --git a/ordinis-admin-ui/Dockerfile b/ordinis-admin-ui/Dockerfile index 7e3a988..0701faf 100644 --- a/ordinis-admin-ui/Dockerfile +++ b/ordinis-admin-ui/Dockerfile @@ -3,12 +3,13 @@ WORKDIR /app # .npmrc нужен ДО pnpm install, иначе @nstart/* резолвятся в public npm и 404. # pnpm-lock.yaml — для воспроизводимости (frozen lockfile в CI). COPY package.json pnpm-lock.yaml .npmrc ./ -# Pin pnpm@9 — v10+ блокирует postinstall scripts по умолчанию ("Run pnpm -# approve-builds to pick which dependencies should be allowed"). В CI -# интерактивного prompt'а нет → exit 1. v9 keeps старое поведение либо -# прокидывает --config.dangerouslyAllowAllBuilds; v9 проще и совместимо -# с lockfile'ом (lockfile v9.0). -RUN corepack enable && corepack prepare pnpm@9 --activate +# Pin pnpm@9.15.4 — exact version для reproducibility + lockfile compat +# (pnpm-lock.yaml lockfileVersion: '9.0'). +# - corepack может hang в CI на integrity-check / non-TTY prompts. npm +# install --silent надёжнее. +# - v10+ блокирует postinstall scripts ("Run pnpm approve-builds..."), в CI +# нет интерактивного prompt'а → exit 1. v9 keeps старое поведение. +RUN npm install -g --silent pnpm@9.15.4 RUN --mount=type=cache,target=/root/.local/share/pnpm/store pnpm install --frozen-lockfile COPY . . RUN pnpm build