Switch workflows to Bun install/test and update pnpm
This commit is contained in:
parent
c3237dfb64
commit
775956c160
37 changed files with 2618 additions and 113 deletions
43
docs/DEV.md
43
docs/DEV.md
|
|
@ -4,10 +4,10 @@ Este documento consolida o estado atual do ambiente de desenvolvimento, descreve
|
|||
|
||||
## Resumo rápido
|
||||
|
||||
- **Node/PNPM**: Node 20.9+ (alinhado ao requisito do Next 15) + pnpm 9 (habilite via `corepack enable && corepack prepare pnpm@9 --activate`).
|
||||
- **Bun (runtime padrão)**: 1.3+ já instalado no runner e VPS (`bun --version`). Após instalar localmente, exporte `PATH="$HOME/.bun/bin:$PATH"` para tornar o binário disponível. Use `pnpm dev:bun` / `pnpm convex:dev:bun` / `pnpm build:bun` / `pnpm start:bun` para executar os scripts com `bun run --bun` (scripts Node continuam disponíveis como fallback).
|
||||
- **Bun (runtime padrão)**: 1.3+ já instalado no runner e VPS (`bun --version`). Após instalar localmente, exporte `PATH="$HOME/.bun/bin:$PATH"` para tornar o binário disponível. Use `bun install`, `bun run dev:bun`, `bun run convex:dev:bun`, `bun run build:bun` e `bun test` como fluxo principal (scripts Node continuam disponíveis como fallback).
|
||||
- **Node/pnpm**: Node 20.9+ permanece obrigatório para ferramentas CLI; pnpm 10 está disponível como alternativa apenas para fluxos do desktop/Tauri.
|
||||
- **Next.js 15.5.5**: Projeto voltou para a versão estável (`next@15.5.5`) com Turbopack como bundler padrão e whitelist de domínios garantida pelo middleware.
|
||||
- **Lint/Test/Build**: `pnpm lint`, `pnpm test`, `pnpm build`. O script de testes usa `vitest --run --passWithNoTests`, eliminando o modo watch interativo.
|
||||
- **Lint/Test/Build**: `bun run lint`, `bun test`, `bun run build:bun`. O test runner do Bun já roda em modo não interativo; utilize `bunx vitest --watch` apenas quando precisar do modo watch manualmente.
|
||||
- **Banco DEV**: SQLite em `prisma/prisma/db.dev.sqlite`. Defina `DATABASE_URL="file:./prisma/db.dev.sqlite"` ao chamar CLI do Prisma.
|
||||
- **Desktop (Tauri)**: fonte em `apps/desktop`. Usa Radix tabs + componentes shadcn-like, integra com os endpoints `/api/machines/*` e suporta atualização automática via GitHub Releases.
|
||||
- **CI**: Workflow `Quality Checks` roda lint/test/build para pushes e PRs na `main`, além do pipeline de deploy existente.
|
||||
|
|
@ -17,17 +17,18 @@ Este documento consolida o estado atual do ambiente de desenvolvimento, descreve
|
|||
1. Gere/atualize o schema local:
|
||||
|
||||
```bash
|
||||
DATABASE_URL="file:./prisma/db.dev.sqlite" pnpm exec prisma db push
|
||||
DATABASE_URL="file:./prisma/db.dev.sqlite" pnpm prisma:generate
|
||||
DATABASE_URL="file:./prisma/db.dev.sqlite" pnpm auth:seed
|
||||
bun install
|
||||
DATABASE_URL="file:./prisma/db.dev.sqlite" bunx prisma db push
|
||||
DATABASE_URL="file:./prisma/db.dev.sqlite" bun run prisma:generate
|
||||
DATABASE_URL="file:./prisma/db.dev.sqlite" bun run auth:seed
|
||||
```
|
||||
|
||||
2. Rode o app Next.js:
|
||||
|
||||
```bash
|
||||
pnpm dev:bun
|
||||
bun run dev:bun
|
||||
```
|
||||
> Alternativas: `pnpm dev` (Node) ou `pnpm dev:webpack` se precisar do fallback oficial.
|
||||
> Alternativas: `pnpm dev` (Node) ou `bun run dev:webpack` se precisar do fallback oficial.
|
||||
|
||||
3. Credenciais padrão (seed): `admin@sistema.dev / admin123`.
|
||||
4. Herdou dados antigos? Execute `node scripts/remove-legacy-demo-users.mjs` para limpar contas demo legadas.
|
||||
|
|
@ -50,12 +51,12 @@ Este documento consolida o estado atual do ambiente de desenvolvimento, descreve
|
|||
|
||||
## Comandos de qualidade
|
||||
|
||||
- `pnpm lint`: executa ESLint (flat config) sobre os arquivos do projeto.
|
||||
- `pnpm test`: Vitest em modo não interativo (`--run --passWithNoTests`). Use `pnpm test -- --watch` somente quando quiser rodar em watch localmente. Inclui testes de API (rotas `/api/machines/*`) e utilitários de SMTP.
|
||||
- `pnpm build`: `next build --turbopack`.
|
||||
- Scripts com Bun (padrão atual): `pnpm dev:bun`, `pnpm convex:dev:bun`, `pnpm build:bun`, `pnpm start:bun`. Eles mantêm o `pnpm` como orquestrador, apenas forçando o runtime do Bun via `bun run --bun`. O `cross-env` garante `NODE_ENV` consistente (`development`/`production`) para evitar warnings/falhas no Next.
|
||||
- Fallback Webpack disponível via `pnpm dev:webpack` / `pnpm build:webpack` quando Turbopack não coopera (caso observado em combinações Bun + Next 16).
|
||||
- `pnpm prisma:generate`: necessário antes do build quando o client Prisma muda.
|
||||
- `bun run lint`: executa ESLint (flat config) sobre os arquivos do projeto.
|
||||
- `bun test`: roda a suíte de testes utilizando o runner nativo do Bun. Para modo watch, use `bunx vitest --watch` manualmente.
|
||||
- `bun run build:bun`: `next build --turbopack` usando o runtime Bun. `bun run build` permanece disponível como fallback em Node.
|
||||
- Scripts com Bun (padrão atual): `bun run dev:bun`, `bun run convex:dev:bun`, `bun run build:bun`, `bun run start:bun`. Eles mantêm os scripts existentes, apenas forçando o runtime do Bun via `bun run --bun`. O `cross-env` garante `NODE_ENV` consistente (`development`/`production`).
|
||||
- Fallback Webpack disponível via `bun run dev:webpack` / `bun run build:webpack` quando Turbopack não coopera (caso observado em combinações Bun + Next 16).
|
||||
- `bun run prisma:generate`: necessário antes do build quando o client Prisma muda. Para migrações use `bunx prisma migrate deploy`.
|
||||
|
||||
### Automação no CI
|
||||
|
||||
|
|
@ -63,17 +64,17 @@ Arquivo: `.github/workflows/quality-checks.yml`
|
|||
|
||||
Etapas:
|
||||
|
||||
1. Instala dependências (`pnpm install --frozen-lockfile`).
|
||||
2. `pnpm prisma:generate`.
|
||||
3. `pnpm lint`.
|
||||
4. `pnpm test`.
|
||||
5. `pnpm build:bun` (Bun 1.3.1 instalado via `oven-sh/setup-bun`).
|
||||
1. Instala dependências (`bun install --frozen-lockfile`).
|
||||
2. `bun run prisma:generate`.
|
||||
3. `bun run lint`.
|
||||
4. `bun test`.
|
||||
5. `bun run build:bun`.
|
||||
|
||||
O workflow dispara em todo `push`/`pull_request` para `main` e fornece feedback imediato sem depender do pipeline de deploy.
|
||||
|
||||
## Testes rápidos via curl (Convites & acessos)
|
||||
|
||||
1. Rode `pnpm dev:bun` (ou `pnpm dev` se preferir Node) e autentique-se em `http://localhost:3000/login` usando `admin@sistema.dev / admin123`.
|
||||
1. Rode `bun run dev:bun` (ou `pnpm dev` se preferir Node) e autentique-se em `http://localhost:3000/login` usando `admin@sistema.dev / admin123`.
|
||||
2. Copie o valor do cookie `BETTER_AUTH_SESSION` e exporte no shell: `export COOKIE="BETTER_AUTH_SESSION=<valor>"`.
|
||||
|
||||
### Usuários
|
||||
|
|
@ -139,7 +140,7 @@ curl -i -X PATCH http://localhost:3000/api/admin/invites/$INVITE_ID \
|
|||
### Build local
|
||||
|
||||
```bash
|
||||
corepack enable && corepack prepare pnpm@9 --activate
|
||||
corepack enable && corepack prepare pnpm@10.20.0 --activate
|
||||
pnpm -C apps/desktop install
|
||||
VITE_APP_URL=http://localhost:3000 \
|
||||
VITE_API_BASE_URL=http://localhost:3000 \
|
||||
|
|
|
|||
|
|
@ -203,7 +203,7 @@ docker run --rm -it \
|
|||
-w /app \
|
||||
-e CONVEX_SELF_HOSTED_URL=https://convex.esdrasrenan.com.br \
|
||||
-e CONVEX_SELF_HOSTED_ADMIN_KEY='COLE_A_CHAVE_AQUI' \
|
||||
node:20-bullseye bash -lc "corepack enable && corepack prepare pnpm@9 --activate && pnpm install --frozen-lockfile --prod=false && pnpm exec convex deploy"
|
||||
node:20-bullseye bash -lc "corepack enable && corepack prepare pnpm@10.20.0 --activate && pnpm install --frozen-lockfile --prod=false && pnpm exec convex deploy"
|
||||
```
|
||||
|
||||
Observação
|
||||
|
|
@ -231,7 +231,7 @@ docker run --rm -it \
|
|||
-v /srv/apps/sistema:/app -w /app \
|
||||
-e CONVEX_SELF_HOSTED_URL=https://convex.esdrasrenan.com.br \
|
||||
-e CONVEX_SELF_HOSTED_ADMIN_KEY='COLE_A_CHAVE' \
|
||||
node:20-bullseye bash -lc "set -euo pipefail; corepack enable && corepack prepare pnpm@9 --activate && pnpm i --frozen-lockfile --prod=false; \
|
||||
node:20-bullseye bash -lc "set -euo pipefail; corepack enable && corepack prepare pnpm@10.20.0 --activate && pnpm i --frozen-lockfile --prod=false; \
|
||||
unset CONVEX_DEPLOYMENT; \
|
||||
pnpm exec convex env set MACHINE_PROVISIONING_SECRET 'seu-hex' -y; \
|
||||
pnpm exec convex env list"
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ docker run --rm -it \
|
|||
-v /srv/apps/sistema:/app -w /app \
|
||||
-e CONVEX_SELF_HOSTED_URL -e CONVEX_SELF_HOSTED_ADMIN_KEY \
|
||||
node:20-bullseye bash -lc "set -euo pipefail; \
|
||||
corepack enable && corepack prepare pnpm@9 --activate && pnpm i --frozen-lockfile --prod=false; \
|
||||
corepack enable && corepack prepare pnpm@10.20.0 --activate && pnpm i --frozen-lockfile --prod=false; \
|
||||
unset CONVEX_DEPLOYMENT; \
|
||||
pnpm exec convex env set MACHINE_PROVISIONING_SECRET '71daa9ef54cb224547e378f8121ca898b614446c142a132f73c2221b4d53d7d6' -y; \
|
||||
pnpm exec convex env list"
|
||||
|
|
@ -27,7 +27,7 @@ docker run --rm -it \
|
|||
-v /srv/apps/sistema:/app -w /app \
|
||||
-e CONVEX_SELF_HOSTED_URL -e CONVEX_SELF_HOSTED_ADMIN_KEY \
|
||||
node:20-bullseye bash -lc "set -euo pipefail; \
|
||||
corepack enable && corepack prepare pnpm@9 --activate && pnpm i --frozen-lockfile --prod=false; \
|
||||
corepack enable && corepack prepare pnpm@10.20.0 --activate && pnpm i --frozen-lockfile --prod=false; \
|
||||
unset CONVEX_DEPLOYMENT; \
|
||||
pnpm exec convex env set MACHINE_TOKEN_TTL_MS '2592000000' -y; \
|
||||
pnpm exec convex env list"
|
||||
|
|
@ -37,7 +37,7 @@ docker run --rm -it \
|
|||
-v /srv/apps/sistema:/app -w /app \
|
||||
-e CONVEX_SELF_HOSTED_URL -e CONVEX_SELF_HOSTED_ADMIN_KEY \
|
||||
node:20-bullseye bash -lc "set -euo pipefail; \
|
||||
corepack enable && corepack prepare pnpm@9 --activate && pnpm i --frozen-lockfile --prod=false; \
|
||||
corepack enable && corepack prepare pnpm@10.20.0 --activate && pnpm i --frozen-lockfile --prod=false; \
|
||||
unset CONVEX_DEPLOYMENT; \
|
||||
pnpm exec convex env set FLEET_SYNC_SECRET '' -y; \
|
||||
pnpm exec convex env list"
|
||||
|
|
|
|||
|
|
@ -24,8 +24,8 @@ Resultado: front/back sobem com o novo código sem editar o stack a cada release
|
|||
|
||||
- Mount fixo: `/home/renan/apps/sistema.current:/app` (não interpolar APP_DIR).
|
||||
- Comando inline (sem script), com migrations na subida:
|
||||
- `command: ["bash","-lc","corepack enable && corepack prepare pnpm@9 --activate && pnpm exec prisma migrate deploy && pnpm start -p 3000"]`
|
||||
- **Se você optar por usar `/app/scripts/start-web.sh`** (como no workflow atual), ele já garante `pnpm@9` via Corepack/NPM antes de rodar Prisma/Next. Certifique-se de copiar esse arquivo para o build publicado; sem ele, a task cai com `pnpm: command not found`.
|
||||
- `command: ["bash","-lc","corepack enable && corepack prepare pnpm@10.20.0 --activate && pnpm exec prisma migrate deploy && pnpm start -p 3000"]`
|
||||
- **Se você optar por usar `/app/scripts/start-web.sh`** (como no workflow atual), ele já garante `pnpm@10.20.0` via Corepack/NPM antes de rodar Prisma/Next. Certifique-se de copiar esse arquivo para o build publicado; sem ele, a task cai com `pnpm: command not found`.
|
||||
- Env obrigatórias (URLs válidas):
|
||||
- `DATABASE_URL=file:/app/data/db.sqlite`
|
||||
- `NEXT_PUBLIC_CONVEX_URL=http://sistema_convex_backend:3210`
|
||||
|
|
@ -43,7 +43,7 @@ APP_DIR=/home/renan/apps/sistema.current
|
|||
docker run --rm -it \
|
||||
-e DATABASE_URL=file:/app/data/db.sqlite \
|
||||
-v "$APP_DIR:/app" -v sistema_sistema_db:/app/data -w /app \
|
||||
node:20-bullseye bash -lc 'corepack enable; corepack prepare pnpm@9 --activate; pnpm i --no-frozen-lockfile; pnpm exec prisma migrate status'
|
||||
node:20-bullseye bash -lc 'corepack enable; corepack prepare pnpm@10.20.0 --activate; pnpm i --no-frozen-lockfile; pnpm exec prisma migrate status'
|
||||
```
|
||||
|
||||
## Diagnóstico rápido
|
||||
|
|
@ -99,7 +99,7 @@ Causas encontradas:
|
|||
docker service update \
|
||||
--mount-rm target=/app \
|
||||
--mount-add type=bind,src=/home/renan/apps/sistema.current,dst=/app \
|
||||
--args 'bash -lc "corepack enable && corepack prepare pnpm@9 --activate && pnpm exec prisma migrate deploy && pnpm start -p 3000"' \
|
||||
--args 'bash -lc "corepack enable && corepack prepare pnpm@10.20.0 --activate && pnpm exec prisma migrate deploy && pnpm start -p 3000"' \
|
||||
sistema_web
|
||||
```
|
||||
|
||||
|
|
@ -110,7 +110,7 @@ APP_DIR=/home/renan/apps/sistema.current
|
|||
docker service scale sistema_web=0
|
||||
docker run --rm -it -e DATABASE_URL=file:/app/data/db.sqlite \
|
||||
-v "$APP_DIR:/app" -v sistema_sistema_db:/app/data -w /app \
|
||||
node:20-bullseye bash -lc 'corepack enable; corepack prepare pnpm@9 --activate; pnpm i --no-frozen-lockfile; pnpm exec prisma migrate resolve --rolled-back 20251015223259_add_company_provisioning_code; pnpm exec prisma migrate deploy'
|
||||
node:20-bullseye bash -lc 'corepack enable; corepack prepare pnpm@10.20.0 --activate; pnpm i --no-frozen-lockfile; pnpm exec prisma migrate resolve --rolled-back 20251015223259_add_company_provisioning_code; pnpm exec prisma migrate deploy'
|
||||
docker service scale sistema_web=1
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ Guia rápido para gerar instaladores do app desktop em cada sistema operacional.
|
|||
|
||||
## Pré‑requisitos
|
||||
- Node.js 20+ e pnpm (Corepack habilitado):
|
||||
- `corepack enable && corepack prepare pnpm@9 --activate`
|
||||
- `corepack enable && corepack prepare pnpm@10.20.0 --activate`
|
||||
- Rust toolchain (stable) instalado.
|
||||
- Dependências nativas por SO:
|
||||
- Linux (Debian/Ubuntu):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue