docs(status): marca fila A concluída — produção em v1.0.19 (715b2dc)
Atualiza STATUS-SEGURANCA-E-PRODUCAO.md: cabeçalho (prod v1.0.19), nova seção "Fila A concluída" (push → fix CI → build → tag/promote → backup → verificação), seção A marcada como feita, commits agora publicados e "Como retomar" com pendências restantes (B + A.2) e rollback. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
# Status — Segurança & Produção (ScoreOdonto)
|
||||
|
||||
> Resumo do que foi feito e do que falta. Atualizado em **19/jun/2026**.
|
||||
> Produção no ar: **v1.0.18** (`fc00622`). **Todos os commits de código estão LOCAIS (sem `git push`)** —
|
||||
> exceto a rotação do `JWT_SECRET`, que **já foi aplicada e verificada em produção**.
|
||||
> Resumo do que foi feito e do que falta. Atualizado em **22/jun/2026**.
|
||||
> Produção no ar: **v1.0.19** (`715b2dc`) — fila **A** concluída (push → CI → tag → deploy). **Commits
|
||||
> publicados (`git push` feito).** A rotação do `JWT_SECRET` segue aplicada e verificada em produção.
|
||||
|
||||
---
|
||||
|
||||
@@ -48,20 +48,28 @@ do frontend, via 3 helpers: `requireCapability`, `requireCapabilityRow`, `requir
|
||||
### 5. Pré-requisito de produção
|
||||
- **`SCOREO_DB_PASS` provisionado na VPS1** (`/home/deploy/stack/scoreodonto.com/.env`, 0600), valores
|
||||
extraídos do container em execução, `.gitignore` da VPS1 ajustado, conexão validada (`SELECT 1` = ok).
|
||||
**Produção não foi tocada.**
|
||||
|
||||
### 6. Fila A concluída — **PRODUÇÃO EM `v1.0.19`** (22/jun/2026)
|
||||
- **`git push` do lote** (RBAC 99 rotas + segredos fora do compose/imagem + correções de frontend).
|
||||
- **CI desbloqueada:** o build falhou na 1ª vez (`SCOREO_DB_PASS` com `:?` quebrava a interpolação do
|
||||
compose no `docker compose build` do runner) → corrigido com placeholder runtime-only no `build.yml`
|
||||
(commit `715b2dc`). Build verde → imagens `:715b2dc` (back+front, atômicas) publicadas no registry.
|
||||
- **Tag `v1.0.19` → `715b2dc`:** job `promote` re-tagueou `:715b2dc` → `:v1.0.19` **sem rebuild**
|
||||
(digests idênticos conferidos) e rodou `deploy-prod.sh v1.0.19` na VPS1.
|
||||
- **Backup do banco antes do deploy:** `~/backups/scoreodonto_20260622_0005.dump` na VPS1 (PG18).
|
||||
- **Verificado em produção:** `/api/version` = `v1.0.19` (`715b2dc`, PROD); `/api/health` = ok
|
||||
(DB ok, cache ok). DEV (8020) realinhado ao mesmo commit via `./dev-build.sh` (mostra `v1.0.19`).
|
||||
- **Rollback trivial:** `./deploy-prod.sh v1.0.18` (+ dump do banco, se necessário).
|
||||
|
||||
---
|
||||
|
||||
## ⏳ O QUE FALTA
|
||||
|
||||
### A) Levar o trabalho a produção (fila)
|
||||
1. **Imagem limpa `v1.0.19`** (remove segredos embutidos na imagem):
|
||||
`git push` → CI builda `:<sha>` com `.dockerignore` → `git tag v1.0.19` → `deploy-prod.sh v1.0.19` →
|
||||
validar `/api/version` + `/api/health`. **Rollback trivial:** `deploy-prod.sh v1.0.18`.
|
||||
- Leva junto: RBAC (99 rotas), correções de frontend, etc.
|
||||
### A) Levar o trabalho a produção (fila) — ✅ CONCLUÍDA
|
||||
1. ~~**Imagem limpa `v1.0.19`**~~ → **FEITO** (ver "Fila A concluída" acima). Produção em `v1.0.19`/`715b2dc`.
|
||||
2. **Compose novo na VPS1 (opcional, passo 2b):** `deploy-prod.sh` **não faz `git pull`** → o
|
||||
`docker-compose.yml` da VPS1 segue o antigo. Para tirar a senha hardcoded do compose local, copiar o
|
||||
novo `docker-compose.yml` (scp) + recreate. O root `.env` já provisionado cobre isso.
|
||||
novo `docker-compose.yml` (scp) + recreate. O root `.env` já provisionado cobre isso. **Ainda pendente.**
|
||||
|
||||
### B) Rotação dos demais segredos (ainda vivos no histórico/artefatos antigos)
|
||||
3. **Senha do banco** (`scoreodonto_user`) — contida ao scoreodonto; exige refactor já feito no compose +
|
||||
@@ -88,11 +96,12 @@ 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.
|
||||
## Commits da sessão — **PUBLICADOS** (`git push` feito; produção em `v1.0.19`)
|
||||
> Todos empurrados para `origin/main`. Promovidos a produção via tag `v1.0.19` (commit `715b2dc`).
|
||||
> A rotação do `JWT_SECRET` **não** está nesta lista (foi ação operacional na VPS, sem commit).
|
||||
```
|
||||
715b2dc ci(build): desbloqueia build — SCOREO_DB_PASS placeholder na interpolação
|
||||
8a27f3b docs+infra: corrige status (JWT/contagem) + versão em DEV (dev-build.sh)
|
||||
6adf353 docs: status geral de segurança & produção (este documento)
|
||||
f22e30e docs(skills): completa as 62 skills
|
||||
e83af04 docs(skills): biblioteca operacional
|
||||
@@ -110,7 +119,11 @@ fcf2fb1 security(infra): .env fora do git + .dockerignore
|
||||
```
|
||||
|
||||
## Como retomar
|
||||
- **Para publicar:** seguir a fila **A** (push → `v1.0.19` → deploy → validar health/version).
|
||||
- **Fila A:** ✅ concluída — produção em **`v1.0.19`** (`715b2dc`). Próximo release: `git push` → CI
|
||||
builda `:<sha>` → `git tag vX.Y.Z` → job `promote` deploya na VPS1.
|
||||
- **Antes de abrir a usuários reais:** concluir **B** (rotações) — sobretudo as API keys (você) e a senha do banco.
|
||||
- Tudo de código testado em **DEV** (`dev.scoreodonto.com`, banco `pgdev`); produção segue **v1.0.18** intacta.
|
||||
- **Pendência pontual:** passo **A.2** (compose novo na VPS1 via scp + recreate) para tirar a senha
|
||||
hardcoded do compose local.
|
||||
- Código rodando em **DEV** (`dev.scoreodonto.com`) e **PROD** no mesmo commit `715b2dc`; rollback de
|
||||
prod: `./deploy-prod.sh v1.0.18` (+ dump `~/backups/scoreodonto_20260622_0005.dump` se necessário).
|
||||
</content>
|
||||
|
||||
Reference in New Issue
Block a user