teqo-backup/docs/changelog/2026-08-19-ops71.md

2.8 KiB

Recently resolved (2026-08-19): OPS71 — CI/PR/deploy do Forgejo Actions de volta para o GitHub Actions, com o tracker de Issues permanecendo no Forgejo (labels, claims, pnpm issue/agent:* e flips pós-merge continuam via API do Forgejo; o GitHub é só o host do Actions). O PR CI (ci-pr.yml, job único checks — OPS62) roda no GitHub com a mesma cascata (guards → lint → format → typecheck → knip → cycles → unit → int → build → e2e selected/afetado via ci-scope.mjs), com concurrency nativo cancelando o run em push novo e if: same-repo (repo público — fork não queima minutes). Seu check-run CI (PR) / checks é o required check do main e o gate do auto-merge nativo (agent-pr-ready-automerge.yml → scripts/github-pr-automerge.mjs: draft cursor/* → Ready via PATCH, arm enablePullRequestAutoMerge GraphQL com REBASE — o servidor espera o required check verde; sem poll; o pin OPS64 "rollup pode mentir" é estrutural aqui: job único posta um check-run honesto). ci.yml (verificador de main) eliminado — publicar é dispatch manual (deploy.yml): verify (hosted, suíte full incl. e2e full) → deploy (needs, runs-on: [self-hosted, homeserver]) executa scripts/deploy-homeserver.sh <sha> localmente no runner do GitHub instalado no homeserver (sem SSH; outbound-only; o hosted nunca toca o homeserver); o script re-aponta o workspace ~/teqo-deploy para TEQO_REPO_URL (default https://github.com/fsolla/teqo.git, público). pnpm push passa a empurrar para origin = GitHub (cutover manual de remote documentado; o repo Forgejo congela em main, tracker vivo por API). Novos helpers plain-Node zero-dep: scripts/lib/github-api.mjs (REST+GraphQL, retry OPS67), scripts/lib/github-pr-flow.mjs (decisão draft/veto/skip, pura), scripts/lib/github-branch-protection.mjs (regra desejada + drift, enforce_admins: true), scripts/github-pr.mjs (criação de PR Ready — nunca draft), scripts/configure-branch-protection.mjs reescrito para a REST do GitHub; forgejo-issue-transition.mjs aceita PR_BODY (body do PR via evento GitHub; flip continua no Forgejo por FORGEJO_API_TOKEN). Cutover em duas fases (gate): nada do Forgejo foi apagado (.forgejo/workflows/, forgejo-pr-automerge.mjs, forgejo-dispatch.mjs, ci-classify-production.mjs preservados como rollback) — a remoção é entrega sucessora pós-validação. Testes: githubApi (10), githubBranchProtection (10), githubPrFlow (9) unit novos. Docs: AGENTS.md, docs/AGENT-OPS.md, .agents/rules/agent-pr-workflow.mdc, work-issue/execution-pipeline.md, agent-work-issue, capture-review-debts, runbook docs/ops/teqo-1313-deploy.md (dispatch manual, runner no homeserver, cutover com ordem, rollback).