O GitHub Pages é um serviço do GitHub que fornece hospedagem gratuita de páginas web a partir de repositórios Git, perfeito para blogs pessoais e documentação de projetos.
O processo para criar uma página para documentar um projeto até que é simples:
basta criar um novo branch no repositório e incluir os arquivos .html
nele.
Nesse post, irei mostrar como fazer para gerar documentação de um projeto Python utilizando o Sphinx e disponibilizar o resultado automaticamente no GitHub pages.
Para criar a página do GitHub Pages para um repositório já existente, basta
criar o branch gh-pages
no repositório:
O branch é criado como --orphan
, indicando que ele não conterá o histórico de
commits do master
. Todo o conteúdo é removido do branch e é criado um único
arquivo index.html
que será a página inicial. Por enquanto o único conteúdo é
Hello World!
só para testar. Fazendo o commit e push, a página já deverá
estar disponível no endereço:
https://<nome_de_usuario>.github.io/<nome_do_projeto>
Com isso funcionando, o processo pra incluir a documentação do Sphinx é
basicamente copiar o que for gerado no diretório build
ou _build
(dependendo da configuração) para o root do branch gh-pages
.
Pra fazer isso de maneira automática, podemos criar um novo Makefile
no root
do projeto contendo:
Linha a linha:
- Checkout no branch
gh-pages
; - Remover diretórios já existentes (se não o
mv
depois pode falhar); - Copia os arquivos fonte de documentação do
master
(Dependendo do projeto, pode ser necessário incluir outros arquivos/diretórios na variávelGH_PAGES_SOURCES
); - Faz um reset para tirar os arquivos da staging area;
- Faz um
cd
prodocs
e faz o build do HTML; - Move os arquivos do diretório
docs/build/html
pro root do branch (pode ser necessário ajustar essa linha, dependendo das configurações do Sphinx); - Remove os arquivos/diretórios com arquivos fonte;
- Adiciona os novos arquivos na staging area;
- Commita as alterações com uma mensagem automática apontando o SHA1
abreviado (do commit no
master
); - Faz o push para o branch remoto;
- Checkout de volta no
master
;
Aconselho a testar o novo Makefile sem as duas últimas linhas, para não fazer push de besteira la pro repositório remoto.
Com isso, sempre que houver uma alteração na documentação no master
, basta
commitar as alterações e depois rodar:
Atribuições
A receitinha do Makefile para gerar e publicar a documentação automaticamente foi adaptada a partir deste post no Nikhil’s Blog