ops(OPS53): etapa de deploy no CI para o homeserver (teqo-1313) #14

Merged
fsolla merged 2 commits from OPS53-ops53-etapa-de-deploy-no-ci-para-o-homeserver-containe into main 2026-08-18 00:50:42 +00:00
Owner

O que entrega

Mergir em main com a suite verde agora publica o site 1313 no homeserver — sem passo manual.

  • .forgejo/workflows/ci.yml: job deploy novo (após checks), runs-on: host na workstation, que streama scripts/deploy-homeserver.sh para o homeserver via SSH.
  • scripts/deploy-homeserver.sh (novo, executa no homeserver): HEAD guard (git ls-remote de main == SHA do job, senão skip "stale") → flock → workspace ~/teqo-deploy → build dos stages runner+migrator (BuildKit secrets do ~/stack/teqo-1313.env, rede stack_default) → push localhost:5000 → swap de tags no compose (backup docker-compose.yml.pre-<sha>) → migrate pelo serviço de maintenance teqo-1313-migrate antes do rollout → up -d → healthcheck → smoke (/, /campanha/login, /admin, barreira 307, WebAuthn login-options, api/revalidate com secret real). Falha pós-swap → rollback automático best-effort + job vermelho.
  • Zero secrets novos no Forgejo: envs continuam chmod-600 no homeserver; chave SSH existente da workstation.
  • Runbook: docs/ops/teqo-1313-deploy.md (rollback, falhas conhecidas, decisão de segurança do host label).
  • Invariantes: tests/unit/deployScript.unit.spec.ts (bash -n + estrutura: HEAD guard, BuildKit secrets, ordem migrate→rollout, smoke, sem eco de secrets).
  • AGENTS.md / AGENT-OPS.md / changelog (OPS44) atualizados.

Divergência deliberada da intenção (fato novo): a intenção assumia o runner no homeserver; verificado que o runner é a workstation-runner (workstation) e o stack vive no homeserver — a recomendação A foi corrigida para "job no host da workstation + todo o deploy no homeserver via SSH".

Rehearsal feito contra o ambiente real: smoke validado contra o site vivo (200/200/200/307/200/revalidated), sed do compose testado no arquivo real, envs sourceiam limpos, flock/git/curl presentes no homeserver, fork-PRs exigem aprovação manual no Forgejo (mitigação do host label verificada).

O primeiro deploy real é o merge deste PR (tracer bullet) — se o job falhar, rollback pelo runbook.

Closes #8

## O que entrega Mergir em `main` com a suite verde agora **publica** o site 1313 no homeserver — sem passo manual. - **`.forgejo/workflows/ci.yml`**: job `deploy` novo (após `checks`), `runs-on: host` na workstation, que streama `scripts/deploy-homeserver.sh` para o homeserver via SSH. - **`scripts/deploy-homeserver.sh`** (novo, executa no homeserver): HEAD guard (`git ls-remote` de `main` == SHA do job, senão skip "stale") → `flock` → workspace `~/teqo-deploy` → build dos stages `runner`+`migrator` (BuildKit secrets do `~/stack/teqo-1313.env`, rede `stack_default`) → push `localhost:5000` → swap de tags no compose (backup `docker-compose.yml.pre-<sha>`) → **migrate pelo serviço de maintenance `teqo-1313-migrate` antes do rollout** → `up -d` → healthcheck → smoke (`/`, `/campanha/login`, `/admin`, barreira 307, WebAuthn login-options, `api/revalidate` com secret real). Falha pós-swap → rollback automático best-effort + job vermelho. - **Zero secrets novos no Forgejo**: envs continuam chmod-600 no homeserver; chave SSH existente da workstation. - **Runbook**: `docs/ops/teqo-1313-deploy.md` (rollback, falhas conhecidas, decisão de segurança do host label). - **Invariantes**: `tests/unit/deployScript.unit.spec.ts` (bash -n + estrutura: HEAD guard, BuildKit secrets, ordem migrate→rollout, smoke, sem eco de secrets). - AGENTS.md / AGENT-OPS.md / changelog (OPS44) atualizados. **Divergência deliberada da intenção (fato novo):** a intenção assumia o runner no homeserver; verificado que o runner é a `workstation-runner` (workstation) e o stack vive no homeserver — a recomendação A foi corrigida para "job no host da workstation + todo o deploy no homeserver via SSH". Rehearsal feito contra o ambiente real: smoke validado contra o site vivo (200/200/200/307/200/revalidated), sed do compose testado no arquivo real, envs sourceiam limpos, `flock`/`git`/`curl` presentes no homeserver, fork-PRs exigem aprovação manual no Forgejo (mitigação do host label verificada). O **primeiro deploy real é o merge deste PR** (tracer bullet) — se o job falhar, rollback pelo runbook. Closes #8
fsolla added 1 commit 2026-08-18 00:27:07 +00:00
ops(OPS53): etapa de deploy no CI para o homeserver (teqo-1313)
Some checks failed
Agent PR Ready + auto-merge / ready-automerge (pull_request) Has been skipped
CI (PR) / docs-guards (pull_request) Failing after 3s
CI (PR) / plans-only-closes (pull_request) Failing after 5s
CI (PR) / cycles (pull_request) Has been skipped
CI (PR) / unit (pull_request) Has been skipped
CI (PR) / int (pull_request) Has been skipped
CI (PR) / build (pull_request) Has been skipped
CI (PR) / e2e (1) (pull_request) Has been skipped
CI (PR) / e2e (2) (pull_request) Has been skipped
CI (PR) / checks (pull_request) Failing after 1s
CI (PR) / scope (pull_request) Successful in 32s
CI (PR) / lint (pull_request) Successful in 43s
CI (PR) / format (pull_request) Successful in 51s
CI (PR) / typecheck (pull_request) Successful in 32s
CI (PR) / knip (pull_request) Successful in 34s
9c74b9634f
Job deploy em ci.yml (runs-on host na workstation) streama
scripts/deploy-homeserver.sh para o homeserver via SSH: build dos stages
runner+migrator com secrets do teqo-1313.env, push no registry local,
migrate pelo serviço de maintenance antes do rollout, up + smoke. Zero
secrets novos no Forgejo; HEAD guard + flock; rollback automático com
backup do compose; runbook docs/ops/teqo-1313-deploy.md; invariantes
unit do script (bash -n + estrutura).
fsolla added 1 commit 2026-08-18 00:44:52 +00:00
docs(ops OPS53): falha conhecida do runner — PATH dos containers quebra com runner.envs.PATH só de host
All checks were successful
Agent PR Ready + auto-merge / ready-automerge (pull_request) Has been skipped
CI (PR) / docs-guards (pull_request) Successful in 7s
CI (PR) / plans-only-closes (pull_request) Successful in 7s
CI (PR) / scope (pull_request) Successful in 36s
CI (PR) / lint (pull_request) Successful in 47s
CI (PR) / format (pull_request) Successful in 59s
CI (PR) / typecheck (pull_request) Successful in 36s
CI (PR) / knip (pull_request) Successful in 37s
CI (PR) / cycles (pull_request) Successful in 38s
CI (PR) / unit (pull_request) Successful in 53s
CI (PR) / build (pull_request) Has been skipped
CI (PR) / e2e (1) (pull_request) Has been skipped
CI (PR) / e2e (2) (pull_request) Has been skipped
CI (PR) / int (pull_request) Successful in 2m52s
CI (PR) / checks (pull_request) Successful in 1s
Promote plan-issue Related on main merge / plan-issue-ready (pull_request) Has been skipped
Main merge flips claimed issues to done + in-prod / issue-done (pull_request) Successful in 15s
Agent pool supervisor / tick (pull_request) Successful in 33s
9dc6b42802
fsolla merged commit 02c922eac8 into main 2026-08-18 00:50:42 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: fsolla/teqo#14
No description provided.