Atualizar Deploy no CloudFlare Pages
Por que esta skill existe
Depois que um domínio já foi publicado (via publicacao-dominio-cloudflare), o trabalho do dia a dia passa a ser bem mais simples: só puxar a versão nova do código e republicar. Esta skill isola esse fluxo curto e frequente, sem repetir as perguntas de zona/DNS/registrador — que só fazem sentido na primeira vez.
Ela reaproveita os mesmos scripts da skill de publicação inicial (prepare_source.ps1 e deploy_pages.ps1), sem duplicar lógica — veja scripts/ lá.
Guardrails (regras de segurança)
- Confirme com o usuário antes de publicar — sobrescrever o site no ar é uma ação de publicação de conteúdo, mesmo que pareça rotineira.
- Nunca peça o CloudFlare API Token no chat — os scripts o buscam sozinhos no cofre (
credential-manager, service cloudflare-domain-publisher), já configurado quando o domínio foi publicado.
- Repositórios privados usam as credenciais Git já configuradas na máquina do usuário — não peça nem armazene token de GitHub/GitLab.
- Não gere ou edite conteúdo do site — só republica o que já está no repositório/pasta informado.
Fluxo
Perguntar (se ainda não informado):
- Qual endereço/projeto no CloudFlare deve ser atualizado (o domínio customizado, ex.
projetvs.com.br, ou a URL *.pages.dev)?
- Qual repositório Git tem a versão nova (URL do GitHub/GitLab), ou é uma pasta local? Se for repositório, perguntar também a branch, se não for a padrão.
Resolver o projeto/conta CloudFlare a partir do endereço informado, sem precisar que o usuário saiba o "nome do projeto" ou "account ID":
- Extrair o domínio puro (sem
https://, sem www.).
- Se for um domínio customizado (não termina em
.pages.dev), achar a zona para pegar a conta:powershell -ExecutionPolicy Bypass -File ../publicacao-dominio-cloudflare/scripts/cloudflare_api.ps1 -Action find-zone -Domain <dominio> -Json
Pegue result[0].account.id como AccountId. Se não achar zona nenhuma, avise o usuário — provavelmente o domínio ainda não passou pela skill de publicação inicial.
- Com o
AccountId, achar o projeto Pages correspondente:powershell -ExecutionPolicy Bypass -File ../publicacao-dominio-cloudflare/scripts/cloudflare_api.ps1 -Action find-pages-project -AccountId <id> -Domain <dominio> -Json
O campo name do resultado é o ProjectName.
- Se for direto uma URL
*.pages.dev, o nome do projeto é o subdomínio (ex.: projetvs.pages.dev → projetvs), mas ainda assim é preciso o AccountId — se não estiver óbvio (ex.: usuário só tem uma conta, ou já foi usada antes na conversa), pergunte qual conta CloudFlare usar, ou rode find-pages-project contra as contas conhecidas.
- Se a busca não encontrar nada, não adivinhe — pergunte ao usuário o nome exato do projeto Pages.
Confirmar com o usuário o que vai acontecer antes de agir: "vou puxar a branch X do repositório Y e publicar no projeto Z (conta W) — confirma?".
Resolver a origem dos arquivos:
# git (GitHub ou GitLab)
powershell -ExecutionPolicy Bypass -File ../publicacao-dominio-cloudflare/scripts/prepare_source.ps1 -SourceType github -RepoUrl "<url>" -Branch "<branch, se informado>" -SubPath "<se aplicável>"
# ou -SourceType gitlab, ou -SourceType local -Path "<pasta>"
Isso clona na primeira vez e só atualiza (git pull) nas próximas — não deixa lixo acumulando.
Publicar:
powershell -ExecutionPolicy Bypass -File ../publicacao-dominio-cloudflare/scripts/deploy_pages.ps1 -FolderPath "<path retornado>" -ProjectName "<nome>" -AccountId "<id>"
Reportar o resultado com a URL de deploy retornada, e lembrar que pode levar um minuto para o cache da CDN atualizar globalmente.
Saída esperada
✓ projetvs.com.br atualizado com a versão mais recente de github.com/usuario/repo (branch main) — deploy em https://<hash>.projetvs.pages.dev
Se a resolução do projeto/conta falhar em algum ponto, pare e pergunte ao usuário o dado que faltou, em vez de tentar adivinhar — publicar no projeto errado é o tipo de erro caro de reverter.
1---2name: atualizar-deploy-cloudflare-pages3description: Atualiza um site estático já publicado em CloudFlare Pages, puxando a versão mais recente de um repositório Git (GitHub ou GitLab) ou de uma pasta local e republicando. Use esta skill sempre que o usuário pedir para "atualizar o site", "publicar a nova versão", "fazer deploy", "subir as mudanças do GitHub/GitLab para o CloudFlare", "colocar a versão nova no ar" ou similar — mesmo sem citar CloudFlare Pages explicitamente, desde que o site já esteja publicado nele. Não use esta skill para a configuração inicial de domínio/DNS/zona (isso é a skill publicacao-dominio-cloudflare) — esta aqui é só para republicar conteúdo em um site que já existe.4---56# Atualizar Deploy no CloudFlare Pages78## Por que esta skill existe910Depois que um domínio já foi publicado (via [publicacao-dominio-cloudflare](../publicacao-dominio-cloudflare/SKILL.md)), o trabalho do dia a dia passa a ser bem mais simples: só puxar a versão nova do código e republicar. Esta skill isola esse fluxo curto e frequente, sem repetir as perguntas de zona/DNS/registrador — que só fazem sentido na primeira vez.1112Ela reaproveita os mesmos scripts da skill de publicação inicial (`prepare_source.ps1` e `deploy_pages.ps1`), sem duplicar lógica — veja `scripts/` lá.1314## Guardrails (regras de segurança)1516- **Confirme com o usuário antes de publicar** — sobrescrever o site no ar é uma ação de publicação de conteúdo, mesmo que pareça rotineira.17- **Nunca** peça o CloudFlare API Token no chat — os scripts o buscam sozinhos no cofre (`credential-manager`, service `cloudflare-domain-publisher`), já configurado quando o domínio foi publicado.18- Repositórios privados usam as credenciais Git já configuradas na máquina do usuário — não peça nem armazene token de GitHub/GitLab.19- Não gere ou edite conteúdo do site — só republica o que já está no repositório/pasta informado.2021## Fluxo22231. **Perguntar (se ainda não informado):**24 - Qual endereço/projeto no CloudFlare deve ser atualizado (o domínio customizado, ex. `projetvs.com.br`, ou a URL `*.pages.dev`)?25 - Qual repositório Git tem a versão nova (URL do GitHub/GitLab), ou é uma pasta local? Se for repositório, perguntar também a branch, se não for a padrão.26272. **Resolver o projeto/conta CloudFlare** a partir do endereço informado, sem precisar que o usuário saiba o "nome do projeto" ou "account ID":28 - Extrair o domínio puro (sem `https://`, sem `www.`).29 - Se for um domínio customizado (não termina em `.pages.dev`), achar a zona para pegar a conta:30 ```powershell31 powershell -ExecutionPolicy Bypass -File ../publicacao-dominio-cloudflare/scripts/cloudflare_api.ps1 -Action find-zone -Domain <dominio> -Json32 ```33 Pegue `result[0].account.id` como `AccountId`. Se não achar zona nenhuma, avise o usuário — provavelmente o domínio ainda não passou pela skill de publicação inicial.34 - Com o `AccountId`, achar o projeto Pages correspondente:35 ```powershell36 powershell -ExecutionPolicy Bypass -File ../publicacao-dominio-cloudflare/scripts/cloudflare_api.ps1 -Action find-pages-project -AccountId <id> -Domain <dominio> -Json37 ```38 O campo `name` do resultado é o `ProjectName`.39 - Se for direto uma URL `*.pages.dev`, o nome do projeto é o subdomínio (ex.: `projetvs.pages.dev` → `projetvs`), mas ainda assim é preciso o `AccountId` — se não estiver óbvio (ex.: usuário só tem uma conta, ou já foi usada antes na conversa), pergunte qual conta CloudFlare usar, ou rode `find-pages-project` contra as contas conhecidas.40 - Se a busca não encontrar nada, não adivinhe — pergunte ao usuário o nome exato do projeto Pages.41423. **Confirmar com o usuário** o que vai acontecer antes de agir: "vou puxar a branch X do repositório Y e publicar no projeto Z (conta W) — confirma?".43444. **Resolver a origem dos arquivos:**45 ```powershell46 # git (GitHub ou GitLab)47 powershell -ExecutionPolicy Bypass -File ../publicacao-dominio-cloudflare/scripts/prepare_source.ps1 -SourceType github -RepoUrl "<url>" -Branch "<branch, se informado>" -SubPath "<se aplicável>"48 # ou -SourceType gitlab, ou -SourceType local -Path "<pasta>"49 ```50 Isso clona na primeira vez e só atualiza (`git pull`) nas próximas — não deixa lixo acumulando.51525. **Publicar:**53 ```powershell54 powershell -ExecutionPolicy Bypass -File ../publicacao-dominio-cloudflare/scripts/deploy_pages.ps1 -FolderPath "<path retornado>" -ProjectName "<nome>" -AccountId "<id>"55 ```56576. **Reportar o resultado** com a URL de deploy retornada, e lembrar que pode levar um minuto para o cache da CDN atualizar globalmente.5859## Saída esperada6061```62✓ projetvs.com.br atualizado com a versão mais recente de github.com/usuario/repo (branch main) — deploy em https://<hash>.projetvs.pages.dev63```6465Se a resolução do projeto/conta falhar em algum ponto, pare e pergunte ao usuário o dado que faltou, em vez de tentar adivinhar — publicar no projeto errado é o tipo de erro caro de reverter.