From 98208b729e72ad7fb0e403b6240ea54e8c970587 Mon Sep 17 00:00:00 2001 From: Sergey Krylov Date: Wed, 14 Oct 2026 16:03:40 +0300 Subject: [PATCH] chore: unify verification preparation (WealthLedger/backend#66) --- .gitea/workflows/image.yml | 3 +-- .gitea/workflows/verify.yml | 4 +--- Dockerfile | 3 ++- README.md | 13 +++++++++---- package.json | 4 ++-- 5 files changed, 15 insertions(+), 12 deletions(-) diff --git a/.gitea/workflows/image.yml b/.gitea/workflows/image.yml index 15ed222..3e9dc7a 100644 --- a/.gitea/workflows/image.yml +++ b/.gitea/workflows/image.yml @@ -28,9 +28,8 @@ jobs: docker version docker buildx version - run: npm ci - - run: npx --no-install prisma generate - run: npm run verify - - run: npm run test:e2e + - run: node test/sqlite.cjs --all - name: Login with dedicated Nexus writer env: REGISTRY_USERNAME: ${{ secrets.NEXUS_USERNAME }} diff --git a/.gitea/workflows/verify.yml b/.gitea/workflows/verify.yml index d1d3318..2280f3c 100644 --- a/.gitea/workflows/verify.yml +++ b/.gitea/workflows/verify.yml @@ -83,12 +83,10 @@ jobs: with: node-version-file: .nvmrc - run: npm ci - - name: Generate Prisma client before typechecks - run: npx --no-install prisma generate - name: Run all backend gates run: npm run verify - name: Run isolated SQLite and runtime OpenAPI suites - run: npm run test:e2e + run: node test/sqlite.cjs --all - name: Analyze develop with SonarQube if: gitea.event_name == 'push' && gitea.ref == 'refs/heads/develop' # v2.3.0: same Docker-based scanner used for SonarQube 9.9. diff --git a/Dockerfile b/Dockerfile index 56f6250..9dd0866 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,8 @@ EXPOSE 3000 CMD ["npm", "run", "start:dev"] FROM dependencies AS build -RUN npm run build && npm prune --omit=dev --omit=optional +# The client is already generated at the shared dependencies stage (same revision). +RUN npx --no-install nest build && npm prune --omit=dev --omit=optional FROM base AS production RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates=20250419~deb12u1 openssl=3.0.20-1~deb12u2 && rm -rf /var/lib/apt/lists/* \ diff --git a/README.md b/README.md index 3d730e0..64221dc 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ cp .env.example .env nvm use --silent npm ci npx prisma migrate deploy +npx prisma generate npm run start:dev ``` @@ -60,7 +61,7 @@ Compose topology принадлежит workspace, эксплуатационн npm run verify ``` -Он запускает zero-warning lint, +Он запускает генерацию Prisma client, zero-warning lint, application/test typechecks, Jest с покрытием и build. `npm run lint:fix` — отдельная записывающая команда. `npm run test:cov` также доступен отдельно; общего числового threshold нет. `npm run test:e2e` отдельно проверяет функциональные HTTP suites @@ -84,8 +85,9 @@ TypeScript 7 требует поддержки со стороны `ts-jest` и и `verify` на metadata-only событии не запускаются. Новый запуск отменяет устаревший для того же PR/ветки и типа события (требуется Gitea 1.26+). Ежедневно в 05:47 UTC выполняется только `security`. -Job `verify` запускает `npm ci`, генерацию Prisma client, -`npm run verify` и функциональный `npm run test:e2e`. Используется только checkout +Job `verify` запускает `npm ci` и `npm run verify` (генерация Prisma client +внутри gate, один Nest build), затем функциональный `node test/sqlite.cjs --all` +на уже собранных артефактах. Используется только checkout backend и его зависимости; OpenAPI генерируется во время проверки, SHA записывается в лог. Успешный unit gate не заменяет SQLite/e2e; ошибка любой suite завершает job с FAIL. @@ -253,7 +255,10 @@ breaking changes относительно предыдущего выпуска. проверяет уникальность DB, сохранность вымышленного внешнего файла, отказ migration и SIGINT/SIGTERM cleanup. Полный e2e набор остаётся в `npm run test:e2e`. Логи остаются в каталоге из вывода. Для одной suite: -`node test/sqlite.cjs app.e2e-spec.ts`. +`node test/sqlite.cjs app.e2e-spec.ts`. Crash-регрессия в +`tbank-operations-sync.e2e-spec.ts` загружает классы из `dist/`, поэтому перед +адресным запуском этой suite выполните `npm run build`, иначе child/dist может +расходиться с parent/src. | Риск | Проверка реальной DB | | --- | --- | diff --git a/package.json b/package.json index 95ca29e..ddcfd8c 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "format": "npm run lint:fix", "start": "nest start", "start:dev": "NODE_ENV=development nest start --watch --path tsconfig.dev.json", - "start:debug": "nest start --debug --watch --path tsconfig.dev.json", + "start:debug": "NODE_ENV=development nest start --debug --watch --path tsconfig.dev.json", "start:prod": "node dist/src/main.js", "lint": "npm run lint:check", "lint:check": "eslint . --max-warnings=0", @@ -31,7 +31,7 @@ "test:container": "node test/container-smoke.cjs", "test:durability": "node test/bank-cards-durability.cjs", "test:openapi-contract": "npm run build && node test/sqlite.cjs openapi-contract.e2e-spec.ts", - "verify": "npm run lint && npm run test:lint && npm run typecheck:app && npm run typecheck:test && npm run test:cov -- --runInBand && npm run build", + "verify": "prisma generate && npm run lint && npm run test:lint && npm run typecheck:app && npm run typecheck:test && npm run test:cov -- --runInBand && nest build", "release:preview": "release-it --dry-run --ci", "release:prepare": "release-it --ci", "commitlint": "commitlint",