Como usar este template
Este repositório gera o site de entregas da disciplina. O fluxo é sempre o mesmo: você edita um Markdown (ou commita um notebook) dentro de docs/, dá git push na main, e o GitHub Actions publica o site.
Estrutura de pastas
Os nomes abaixo são um contrato com a correção — não os renomeie.
docs/
index.md # capa: grupo e status das entregas
exercises/
data/
index.md # o relatório
code/ # scripts, como arquivos executáveis
figures/ # imagens commitadas
perceptron/
mlp/
vae/
projects/
index.md # visão geral: equipe, dataset, as 3 entregas
eda/
index.md
code/
figures/
classification/ # escolha classification OU regression
regression/ # e apague a pasta que sobrar
generative/
mkdocs.yml
requirements.txt
Cada entrega tem a própria pasta, sempre com o mesmo formato: index.md para o relatório, code/ para os scripts e figures/ para as imagens. Se a entrega for um notebook, ele entra na mesma pasta — data/index.ipynb no lugar de data/index.md.
O projeto é um só: as três entregas de projects/ compartilham equipe e dataset, e a segunda é classificação ou regressão, nunca as duas.
O conjunto de entregas muda de edição para edição
Os slugs acima são os das edições recentes. Confira a lista da sua edição no overview da disciplina e ajuste duas coisas em conjunto: as pastas em docs/ e a nav do mkdocs.yml. Cada nova entrega é uma pasta com index.md, code/ e figures/ — copie uma existente.
Front matter obrigatório
Todo relatório começa com:
Nos projetos, troque exercise: por project: (eda, classification, regression, generative). Os dois campos são obrigatórios.
Colocando uma entrega no menu
Um item de menu por entrega, em mkdocs.yml. O alvo pode ser Markdown, notebook .ipynb ou um link do Colab — os três exemplos estão em Exemplos de uso.
Antes de publicar
Todas as linhas do mkdocs.yml que você precisa trocar estão marcadas com # TROCAR:
site_name: ANN-DL · Entregas # TROCAR: título exibido no topo do site
site_author: Seu Nome, Sobrenome # TROCAR: seu nome (ou os nomes do grupo)
site_url: https://usuario.github.io/ann-dl # TROCAR: https://<seu-usuario>.github.io/<seu-repo>
repo_url: https://github.com/usuario/ann-dl # TROCAR: https://github.com/<seu-usuario>/<seu-repo>
repo_name: usuario/ann-dl # TROCAR: <seu-usuario>/<seu-repo>
Há mais uma no nav, na URL do Colab. Para achar todas:
O passo a passo completo está em Publicação no GitHub Pages.
Pré-requisitos
Antes de começar, certifique-se de que você possui os seguintes pré-requisitos instalados em seu sistema:
- Git: Para clonar o repositório.
Instalando o Python
Python 3.10 ou superior. O GitHub Actions constrói o site com a versão definida em PYTHON_VERSION, no workflow — usar localmente a mesma versão evita surpresas entre o seu build e o do CI.
Instale o Python 3.10 ou superior.
Instale o Python 3.10 ou superior. Baixe o instalador do site oficial do Python (https://www.python.org/downloads/) e execute-o. Certifique-se de marcar a opção "Add Python to PATH" durante a instalação.
Instalando as dependências
Para rodar o site na sua máquina, siga os passos a seguir.
Clone ou fork este repositório:
Crie um ambiente virtual do Python:
Ative o ambiente virtual (você deve fazer isso sempre que for executar algum script deste repositório):
Instale as dependências com:
Publicação no GitHub Pages
O site não é publicado a partir da main: o GitHub Actions constrói o HTML e o empurra para uma branch separada, gh-pages, e é ela que o GitHub Pages serve.
flowchart LR
push["git push<br/>branch main"] --> ci["GitHub Actions<br/>mkdocs gh-deploy --force"]
ci -->|escreve| gp["branch gh-pages<br/>(HTML gerado)"]
gp --> pages["GitHub Pages<br/>usuario.github.io/repo"] Isso significa que você nunca edita a gh-pages à mão — ela é reescrita a cada push.
Os passos 1 a 4 são feitos uma única vez. Depois disso, publicar é dar git push.
Passo 1 — Repositório público e Actions habilitado
Registre o repositório no formulário da disciplina uma vez, no começo do semestre, e o mantenha público: a correção lê o site e o repositório, e o GitHub Pages exige repositório público em contas gratuitas.
Se você usou Fork, os workflows vêm desligados
Em um fork, o GitHub desabilita o Actions por segurança. Abra a aba Actions do seu repositório e clique em I understand my workflows, go ahead and enable them. Sem isso, o push não dispara build nenhum e o site nunca aparece.
Usando Use this template em vez de Fork, o Actions já vem ligado — e o histórico começa limpo, o que é preferível, já que o prazo é medido pelos seus commits.
Passo 2 — Garantir que o CI possa escrever
O workflow precisa escrever na branch gh-pages, e o token do Actions não tem esse escopo por padrão. O workflow deste template já o pede explicitamente:
Esse bloco sobrepõe o padrão do repositório, então normalmente não há nada a fazer aqui. Ele só não basta em dois casos: se você removeu o bloco, ou se uma política do repositório ou da organização impede que o workflow eleve o próprio escopo.
Se o build falhar no último passo
O sintoma é remote: Permission to <usuario>/<repo>.git denied to github-actions[bot] ou error: failed to push some refs. A correção é em Settings → Actions → General → Workflow permissions: marque Read and write permissions, salve, e re-execute o workflow em Actions → (o run que falhou) → Re-run all jobs.
Settings → Actions → General → Workflow permissions
O workflow completo:
name: ci
on:
push:
pull_request:
# Permite disparar o build à mão em Actions > ci > Run workflow, sem precisar
# de um commit novo.
workflow_dispatch:
# Environment
env:
CI: true
PYTHON_VERSION: 3.12
# O job precisa escrever na branch gh-pages.
# Isto só tem efeito se, em Settings > Actions > General > Workflow permissions,
# a opção "Read and write permissions" estiver marcada.
permissions:
contents: write
# Jobs to run
jobs:
# Build and deploy documentation site
deploy:
if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
# Checkout source from GitHub.
# fetch-depth: 0 traz o histórico completo — sem ele os plugins git-authors e
# git-revision-date-localized não conseguem datar as páginas.
- uses: actions/checkout@v4
with:
fetch-depth: 0
# Install Python runtime and dependencies
- uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
# pip
- run: |
pip install -r requirements.txt
# deploy
- run: |
mkdocs gh-deploy --force
Passo 3 — Publicar
Acompanhe em Actions. O primeiro run cria a branch gh-pages; leva 1–2 minutos.
Disparar sem commit
O workflow também aceita disparo manual: Actions → ci → Run workflow. Útil para republicar depois de mexer numa configuração do GitHub, sem precisar inventar um commit.
O prazo é o seu último commit
O prazo de uma entrega é o timestamp do último commit que toca a pasta daquela entrega — não a hora do formulário nem a da publicação. Commite ao longo do trabalho, não tudo no minuto do prazo.
Passo 4 — Apontar o Pages para a branch gh-pages
Só depois que o primeiro run terminar (a branch precisa existir): em Settings → Pages, em Build and deployment, escolha Deploy from a branch, selecione a branch gh-pages e a pasta / (root), e salve.
Settings → Pages → Build and deployment
O endereço aparece no topo dessa mesma tela, no formato https://<seu-usuario>.github.io/<seu-repo>/. Ele precisa ser idêntico ao site_url do mkdocs.yml — é dele que o Material monta os links do menu e o sitemap.xml.
Passo 5 — Conferir
- O run em Actions terminou com o check verde.
- A branch
gh-pagesexiste e tem umindex.htmlna raiz. - A URL de Settings → Pages abre o site.
- O menu tem as suas entregas, e nenhum link quebrado.
- Nada de
usuario/ann-dlsobrou:grep -rn "TROCAR\|usuario/ann-dl" mkdocs.yml docs/
Validando antes do push
O CI publica mesmo com avisos; o modo estrito, não. Rode localmente antes de commitar:
mkdocs serve -o # preview com recarga automática
mkdocs build --strict # falha em link quebrado ou snippet inexistente
Publicação manual
Se precisar publicar sem esperar o CI — ou se o Actions estiver indisponível:
O comando constrói o site e empurra para a gh-pages usando as suas credenciais do Git. Ele não substitui o Passo 2: assim que você voltar a dar push na main, quem publica é o CI.
Quando não funcionar
| Sintoma | Causa provável |
|---|---|
| Nenhum run aparece em Actions depois de um push | Workflows desabilitados no fork (Passo 1) — o botão Run workflow pode funcionar mesmo assim |
Run falha com Permission ... denied to github-actions[bot] | O permissions: do workflow foi removido, ou a política do repositório bloqueia a elevação (Passo 2) |
Settings → Pages não oferece a branch gh-pages | O primeiro run ainda não terminou (Passo 3) |
| Site abre em 404 | Fonte do Pages não configurada (Passo 4), ou repositório privado |
| Site abre, mas CSS e links estão quebrados | site_url diferente da URL real do Pages |
Build falha em Snippet at path ... could not be found | --8<-- apontando para arquivo que não existe ou não foi commitado |
| Notebook aparece sem os gráficos | O .ipynb foi commitado sem as saídas salvas — o CI roda com execute: false |

