Postado em 07.06.2023 19:25
Levei mais tempo para descobrir isso do que me orgulharia em compartilhar, então escrevo aqui para não esquecer.
O [GitHub Pages](https://pages.github.com/) trata diretórios com nomes iniciados por `_` (*underline*) de forma especial **mesmo se você estiver usando GitHub Actions para gerar os arquivos estáticos com outras ferramentas**.
Isso ocorre porque o [GitHub Pages pode gerar e servir um site feito com Jekyll](https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/about-github-pages-and-jekyll) se você quiser e para o [Jekyll](https://jekyllrb.com/), diretórios com nomes iniciados por `_` são especiais.
Aparentemente o Jekyll está envolvido mesmo quando configuramos o Pages para servir os arquivos de um *branch* separado e escrevemos nosso próprio *workflow* no [Actions](https://github.com/features/actions) para escrever nesse *branch*. Achei pouco intuitivo e outras pessoas que conversaram comigo sobre o assunto concordaram, mas é assim que o Pages funciona.
Um site que eu estava tentando servir tinha uma estrutura de arquivos parecida com a seguinte:
about css doc ├── index.html ├── _static │ ├── basic.css │ ├── doctools.js │ ├── documentation_options.js │ ├── file.png │ ├── graphviz.css │ ├── language_data.js │ ├── minus.png │ ├── plus.png │ ├── pygments.css │ ├── scripts │ │ ├── bootstrap.js │ │ ├── bootstrap.js.LICENSE.txt │ │ ├── bootstrap.js.map │ │ ├── pydata-sphinx-theme.js │ │ └── pydata-sphinx-theme.js.map │ ├── searchtools.js │ ├── sphinx_highlight.js │ ├── styles │ │ ├── bootstrap.css │ │ ├── pydata-sphinx-theme.css │ │ └── theme.css │ ├── switcher.json │ └── webpack-macros.html └── tutorial ├── graphs.html ├── index.html ├── plotting_customization.html └── quantum_walk_models.html example.html features gethelp getstarted images index.html index.xml js
O arquivo `doc/index.html` carregava vários recursos de `doc/_static/`. Só a requisição para o arquivo `doc/index.html` era concluída com sucesso. Para as requisições de todos os arquivos em `doc/_static` eu recebia um erro 404 como resposta, **mesmo que os arquivos estivessem lá**.
Para que esses arquivos passassem a ser servidos normalmente, precisei criar um arquivo oculto de nome `.nojekyll` na **raiz do site**. A estrutura ficou mais ou menos a seguinte:
about css doc ├── index.html ├── _static │ ├── basic.css │ ├── doctools.js │ ├── documentation_options.js │ ├── file.png │ ├── graphviz.css │ ├── language_data.js │ ├── minus.png │ ├── plus.png │ ├── pygments.css │ ├── scripts │ │ ├── bootstrap.js │ │ ├── bootstrap.js.LICENSE.txt │ │ ├── bootstrap.js.map │ │ ├── pydata-sphinx-theme.js │ │ └── pydata-sphinx-theme.js.map │ ├── searchtools.js │ ├── sphinx_highlight.js │ ├── styles │ │ ├── bootstrap.css │ │ ├── pydata-sphinx-theme.css │ │ └── theme.css │ ├── switcher.json │ └── webpack-macros.html └── tutorial ├── graphs.html ├── index.html ├── plotting_customization.html └── quantum_walk_models.html example.html features gethelp getstarted images index.html index.xml js .nojekyll
Depois da criação desse arquivo, todas as requisições eram concluídas normalmente.