From 8a27f3bc7c9889206c52c878d6dd1eff33241f37 Mon Sep 17 00:00:00 2001 From: VPS 4 Builder Date: Sun, 21 Jun 2026 23:21:59 +0200 Subject: [PATCH] =?UTF-8?q?docs+infra:=20corrige=20status=20(JWT=20sem=20c?= =?UTF-8?q?ommit/contagem)=20+=20vers=C3=A3o=20em=20DEV?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - STATUS-SEGURANCA-E-PRODUCAO.md: a rotação do JWT_SECRET deixa de ser atribuída ao commit fcf2fb1 (que só remove .env/adiciona .dockerignore) — passa a constar como ação operacional na VPS, sem commit (segredo não versionado). Ajusta a contagem: 13 commits da sessão (inclui este doc), repo ahead 14 de origin/main (o 14º, docs/LEIA, é anterior à sessão). - dev-build.sh: builda o ambiente de DEV injetando APP_VERSION/GIT_COMMIT/ BUILD_TIME a partir do git (git describe), espelhando o deploy-prod.sh. /api/version em DEV deixa de mostrar apenas "dev". Co-Authored-By: Claude Opus 4.8 --- dev-build.sh | 40 +++++++++++++++++++++ documentação/STATUS-SEGURANCA-E-PRODUCAO.md | 6 +++- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100755 dev-build.sh diff --git a/dev-build.sh b/dev-build.sh new file mode 100755 index 0000000..11bc40a --- /dev/null +++ b/dev-build.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash +# ============================================================================= +# Build + sobe o ambiente de DEV (porta 8020 / dev.scoreodonto.com) carimbando +# a VERSÃO a partir do git — para que /api/version (e o rótulo no app) deixe de +# mostrar apenas "dev". +# +# Uso (NA VPS): ./dev-build.sh +# +# Diferença p/ produção: a prod consome imagem versionada e injeta a tag em +# runtime (deploy-prod.sh). Em DEV buildamos local, então derivamos a versão do +# git AQUI (no host, onde o .git existe) e passamos como build-args do compose. +# ============================================================================= +set -euo pipefail +cd "$(dirname "$0")" + +export DOCKER_HOST=unix:///run/user/1000/docker.sock + +# Versão semântica + commit + carimbo de build, derivados do git. +# APP_VERSION -> ex.: v1.0.18-16-g6adf353 (tag mais próxima + distância + sha) +# GIT_COMMIT -> sha curto +export APP_VERSION="$(git describe --tags --always --dirty 2>/dev/null || echo dev)" +export GIT_COMMIT="$(git rev-parse --short HEAD 2>/dev/null || echo dev)" +export BUILD_TIME="$(date -u +%Y-%m-%dT%H:%M:%SZ)" +export APP_ENV="DEV" + +echo "──────────────────────────────────────────────────────────────" +echo " Build ScoreOdonto → DEV (porta 8020)" +echo " APP_VERSION = $APP_VERSION" +echo " GIT_COMMIT = $GIT_COMMIT" +echo " BUILD_TIME = $BUILD_TIME" +echo "──────────────────────────────────────────────────────────────" + +docker compose up -d --build scoreodonto-backend scoreodonto-frontend nginx + +echo +echo -n " versão no ar (DEV): " +sleep 8 +curl -s --max-time 10 http://localhost:8020/api/version || echo "(ainda subindo — confira em alguns segundos)" +echo +echo "✅ DEV buildado com versão carimbada." diff --git a/documentação/STATUS-SEGURANCA-E-PRODUCAO.md b/documentação/STATUS-SEGURANCA-E-PRODUCAO.md index ba78cf5..7dff5ea 100644 --- a/documentação/STATUS-SEGURANCA-E-PRODUCAO.md +++ b/documentação/STATUS-SEGURANCA-E-PRODUCAO.md @@ -11,7 +11,7 @@ ### 1. Segredos - **`JWT_SECRET` rotacionado em DEV e PRODUÇÃO** (recriado o backend na VPS1 na mesma tag, sem rebuild; `/api/health` e `/api/version` validados). → **vetor de tomada de conta FECHADO** (o segredo vazado não - forja mais tokens). Commit `fcf2fb1`. + forja mais tokens). **Ação operacional na VPS1 — sem commit** (o segredo não é versionado). - **`backend/.env` fora do tracking do git** + `backend/.dockerignore` (o Dockerfile fazia `COPY . .` sem `.dockerignore` → segredos iam para dentro da imagem) + `.env.example`. Commits `fcf2fb1`. - **Senhas hardcoded removidas do `docker-compose.yml`**: banco via `SCOREO_DB_PASS` (com `:?` fail-fast); @@ -89,7 +89,11 @@ do frontend, via 3 helpers: `requireCapability`, `requireCapabilityRow`, `requir --- ## Commits locais da sessão (nenhum `push`, exceto JWT já aplicado em prod) +> **13 commits desta sessão** (incluindo este documento) ainda **locais**. O repositório está +> `ahead 14` de `origin/main` — o 14º (`7c5b199 docs(LEIA)`) é anterior a esta sessão. +> A rotação do `JWT_SECRET` **não** está nesta lista (foi ação operacional na VPS, sem commit). ``` +6adf353 docs: status geral de segurança & produção (este documento) f22e30e docs(skills): completa as 62 skills e83af04 docs(skills): biblioteca operacional 5b99292 docs: auditoria funcional + estratégica