Handoff | Execução Final

publicacao handoff

Tudo que dependia do meu lado (scaffolds, tagagem, contrato, automação) está pronto. Este documento lista exatamente o que Pedro precisa executar — na ordem — para colocar as 3 wikis no ar. Tempo estimado: ~1h30 (com DNS já propagado).


Status atual

✅ Feito (vault)

✅ Feito (externo)

🔄 A executar (Pedro)

  • Fase 1: rodar bootstrap.sh (~10 min)
  • Fase 2: Cloudflare Pages + Access (~45 min)
  • Fase 3: rclone + secrets GitHub (~15 min)
  • Fase 5: validação final (~15 min)

Checkbox de execução

🔧 1. Rodar bootstrap local (~10 min)

cd "/Users/ppvilla/Library/CloudStorage/GoogleDrive-pedro.villa@anoukpartners.com/Meu Drive/Colliers_Projeto/99-operacao/publish"
bash bootstrap.sh

O script faz: clone → merge Quartz v4 → copy scaffold → install deps → 3 builds locais → commit.

  • Builds passam (3 pastas public-* geradas)
  • Validar localmente: cd ~/workspace/colliers-costal-wiki && npx quartz build --serve --output public-internal
  • Abrir http://localhost:8080 e navegar
  • Push manual: cd ~/workspace/colliers-costal-wiki && git push origin main

Alternativa automática com push: bash bootstrap.sh ~/workspace --push

☁️ 2. Cloudflare Pages (~20 min)

Dashboard Cloudflare → Workers & PagesCreate applicationPagesDirect upload.

Criar 3 projetos com Direct upload (não conectar ao GitHub — o Action faz upload via API):

ProjetoNome no Cloudflare
1colliers-interno
2colliers-cliente
3colliers-board

Após criar cada um:

  • Custom domain em cada projeto:
    • colliers-internointerno.colliers.wiki.anoukpartners.com
    • colliers-clientecliente.colliers.wiki.anoukpartners.com
    • colliers-boardboard.colliers.wiki.anoukpartners.com

Cloudflare cria CNAMEs automaticamente.

🔐 3. Cloudflare Access (~25 min)

Zero TrustSettingsAuthenticationLogin methodsAdd newGoogle Workspace

  • App ID + Secret: criar em https://console.cloud.google.com (OAuth 2.0 credential para Cloudflare)
  • Admin email: pedro.villa@anoukpartners.com
  • Testar: https://anoukpartners.cloudflareaccess.com/cdn-cgi/access/login/test

Zero Trust → Access → Groups — criar 2 grupos antes das applications:

  • lista-costal — e-mails do Igor + designados Costal
  • lista-board — Ricardo, Bruno, Lucas, Pedro

Zero Trust → Access → Applications → Add self-hosted — criar 3 aplicações:

ApplicationDomainSessionPolicy: Allow
Colliers — Internointerno.colliers.wiki.anoukpartners.com24hEmails ending in: @anoukpartners.com
Colliers — Clientecliente.colliers.wiki.anoukpartners.com12h@anoukpartners.com OR group lista-costal
Colliers — Boardboard.colliers.wiki.anoukpartners.com2hgroup lista-board OR pedro.villa@anoukpartners.com

🔄 4. Sync Drive → git + secrets GitHub (~15 min)

brew install rclone
rclone config  # escolher "n" (new remote), nome: gdrive, type: drive
# autorizar via browser
rclone lsd "gdrive:Colliers_Projeto"  # testar acesso (gdrive: já é raiz de "Meu Drive")
cat ~/.config/rclone/rclone.conf  # copiar TODO o conteúdo

No repo GitHub → SettingsSecrets and variablesActionsNew repository secret:

  • VAULT_REMOTE_CONFIG = conteúdo completo de ~/.config/rclone/rclone.conf
  • CLOUDFLARE_API_TOKEN = criar em https://dash.cloudflare.com/profile/api-tokens (template “Edit Cloudflare Workers” — permissão Cloudflare Pages: Edit)
  • CLOUDFLARE_ACCOUNT_ID = copiar do canto direito do dashboard Cloudflare

🚀 5. Primeiro deploy via CI (~5 min)

Repo GitHub → ActionsBuild e deploy das wikisRun workflow → branch mainRun workflow.

  • Job sync-vault termina verde (commit automático em content/)
  • 3 jobs build-and-deploy terminam verde (um por audiência)
  • Abrir as 3 URLs e logar com e-mail apropriado

✅ 6. Validação final (~10 min)

  • interno.colliers.wiki.anoukpartners.com — acessível com e-mail Anouk; bloqueado para outros
  • cliente.colliers.wiki.anoukpartners.com — acessível com Anouk e Igor; bloqueado para outros
  • board.colliers.wiki.anoukpartners.com — acessível só para lista-board
  • Arquivos memory/, feedback/, scripts/ não aparecem em nenhuma wiki
  • HOME.md aparece como home em todas
  • Links internos funcionam; links cruzados entre audiências degradam graciosamente
  • Busca Quartz funcional; grafo e backlinks renderizam
  • Registrar em decisoes: “Wiki do projeto no ar — 3 audiências”

Se algo falhar

SintomaSolução rápida
bootstrap.sh falha em npm installVerificar Node ≥ 22 (Quartz 4.5+ exige): node -v
Argumento desconhecido: configVersão antiga do bootstrap; rebaixar bootstrap.sh (audiência controlada por env var, não por --config)
quartz build erra em AudienceFilterConferir que exports foram adicionados em quartz/plugins/filters/index.ts (o bootstrap faz isso automaticamente)
CI sync-vault falhaValidar VAULT_REMOTE_CONFIG é o conteúdo completo do .conf, com [gdrive] no topo
CI deploy retorna 403Conferir permissão do CLOUDFLARE_API_TOKEN (precisa Pages: Edit)
Custom domain sem SSLAguardar ~5 min após adicionar no Pages — CF emite cert automático
SSO Google não carregaVerificar OAuth credential no Google Cloud Console + domínio autorizado

Troubleshooting completo: deployment-guide § Troubleshooting.


Manutenção pós-deploy

TarefaCadênciaOwner
Sync automático Drive → repodiário 06:00 UTC (cron no workflow)CI
Revisar logs Cloudflare AccesssemanalPedro
Tagar novos arquivos com publish:por gatilhoPedro / Axios
Revisar publish-contractmensalPedro
Atualizar lista-costal / lista-boardpor gatilhoPedro
Upgrade Quartztrimestraldevops Anouk

Ver também