~ / blog / devops
16 set 2026devops6 min de leitura

GitHub Actions para publicar site estático

Pipeline mínimo para build e deploy no GitHub Pages com cache e branch main.

GitHub ActionsCI/CDPages

Workflow mínimo

Publicar HTML no GitHub Pages pode ser só um push — ou um workflow estável com validação.

name: deploy
on:
  push:
    branches: [main]
permissions:
  contents: read
  pages: write
  id-token: write
jobs:
  deploy:
    runs-on: ubuntu-latest
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    steps:
      - uses: actions/checkout@v4
      - name: validate
        run: python3 scripts/validate-site.py
      - uses: actions/upload-pages-artifact@v3
        with:
          path: .
      - id: deployment
        uses: actions/deploy-pages@v4

Dicas

  • Rode o validador local antes do push
  • Use concurrency para cancelar deploys antigos
  • Secrets só quando precisar de token externo

Combina bem com o curso de Docker quando o próximo passo for containerizar o front.

O workflow explicado, linha a linha

TrechoO que faz
name: deployNome do workflow na aba Actions.
on: push: branches: [main]Dispara a cada push na branch main.
permissions: contents: readO job só pode ler o código do repositório.
pages: write e id-token: writePermissões necessárias para o job publicar no GitHub Pages.
runs-on: ubuntu-latestExecuta em uma máquina virtual Linux da própria GitHub.
environment: name: github-pagesDeclara o ambiente de publicação, exigido pelo deploy-pages.
uses: actions/checkout@v4Baixa o código do repositório para a máquina do job.
run: python3 scripts/validate-site.pyRoda o validador. Se falhar, o deploy não acontece.
actions/upload-pages-artifact@v3 com path: .Empacota a pasta atual como o artefato do site.
actions/deploy-pages@v4Publica o artefato no GitHub Pages.
GatilhoQuando dispara
pusha cada envio para as branches listadas
pull_requestao abrir ou atualizar um PR, bom para rodar só a validação
workflow_dispatchmanualmente, pelo botão na aba Actions

O ambiente github-pages e a URL publicada

TrechoO que faz
environment: name: github-pagesLiga o job ao ambiente de publicação do GitHub Pages. Sem ele o deploy-pages costuma falhar com "Missing environment".
url: ${{ steps.deployment.outputs.page_url }}Mostra o endereço do site publicado no resumo da execução.
id: deploymentDá um nome ao passo de deploy, para outro trecho ler a saída dele (steps.deployment.outputs.page_url).

Nas configurações do repositório, em Pages, a origem precisa estar como GitHub Actions.

Erros comuns

SintomaCausa provávelSolução
Erro "Missing environment"O job de deploy não declara o environment.Acrescente environment: name: github-pages, como no exemplo acima.
O deploy falha por permissãoFaltam pages: write ou id-token: write.Confira o bloco permissions do workflow.
O site não atualiza depois do pushA origem do Pages não está em GitHub Actions ou o validador falhou.Veja a aba Actions e as configurações de Pages.
O workflow nem apareceO arquivo não está em .github/workflows/ ou o YAML tem erro de indentação.Mova o arquivo e valide o YAML.

Quer aplicar isso ao seu contexto?

Se esse problema existe na sua operação, podemos analisar o cenário em um diagnóstico gratuito de 30 minutos.

solicitar diagnóstico gratuito →

Leia também