Skip to content

Commit 607c4fb

Browse files
committed
Merge pull request #264 from humrochagf/pelican
postagem ghpages com pelican
2 parents 6938355 + 246937e commit 607c4fb

File tree

10 files changed

+261
-0
lines changed

10 files changed

+261
-0
lines changed
Lines changed: 261 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,261 @@
1+
GitHub Pages com Pelican e Travis-CI
2+
====================================
3+
4+
:slug: github-pages-com-pelican-e-travis-ci
5+
:date: 2016-05-04 21:46
6+
:tags: tutorial,gh-pages,pelican,travis-ci
7+
:category: Pelican
8+
:author: Humberto Rocha
9+
:email: humrochagf@gmail.com
10+
:github: humrochagf
11+
:twitter: humrochagf
12+
:facebook: humrochagf
13+
:linkedin: humrochagf
14+
15+
**Publicado originalmente em:** `df.python.org.br/blog/github-pages-com-pelican-e-travis-ci`_
16+
17+
Olá pessoal!
18+
19+
Estou fazendo esta postagem para ajudar quem quer criar seu site no `GitHub Pages`_ usando `Pelican`_ para a criação das páginas e o `Travis-CI`_ para automatizar a tarefa de geração e publicação.
20+
21+
Este guia assume que o leitor possua conta no `GitHub`_ e no `Travis-CI`_ e tenha familiaridade com o ambiente python. A versão do pelican utilizada ao elaborar esta publicação foi a 3.6.
22+
23+
O GitHub Pages
24+
--------------
25+
26+
O GitHub Pages é uma funcionalidade gratuita do GitHub para hospedar conteúdo estático (html, css, js e imagens) e publicar através de um sub-domínio de **github.io** ou até mesmo de um domínio customizado. É baseado em seu funcionamento que iremos guiar nossos próximos passos.
27+
28+
Resumidamente existem duas formas de se criar uma página pelo gh pages:
29+
30+
**1 - Página de usuário/organização**
31+
32+
Para este tipo de página crie um repositório com o nome ``usuario.github.io``, onde ``usuario`` é o nome de usuário ou organização da conta em que o repositório será criado:
33+
34+
.. figure:: /images/humrochagf/gh-pelican-travis/pagina-usuario.png
35+
:alt: Repositório da página de usuário
36+
:align: center
37+
38+
O conteúdo a ser publicado deve ser colocado na **branch master** e os arquivos do pelican na **branch pelican**.
39+
40+
**2 - Página de projeto**
41+
42+
Para este tipo de página crie um repositório com o nome ``meuprojeto``, onde ``meuprojeto`` é o nome desejado para o projeto que será publicado em ``usuario.github.io``:
43+
44+
.. figure:: /images/humrochagf/gh-pelican-travis/pagina-projeto.png
45+
:alt: Repositório da página de projeto
46+
:align: center
47+
48+
O conteúdo a ser publicado deve ser colocado na **branch gh-pages** e os arquivos do pelican na **branch pelican**.
49+
50+
Para mais informações acesse o site oficial do `GitHub Pages`_.
51+
52+
Pelican
53+
-------
54+
55+
O pelican é um gerador de site estático otimizado por padrão para criação de blogs. Utilizaremos aqui, para fins de demonstração, o modelo padrão do de blog seguindo o caminho de criação de página de usuário/organização, qualquer diferença do caminho de página de projeto será descrita quando necessário.
56+
57+
Para instalar o pelican basta rodar o comando:
58+
59+
.. code-block:: bash
60+
61+
$ pip install pelican==3.6
62+
63+
Para criar um projeto faça:
64+
65+
.. code-block:: bash
66+
67+
$ mkdir humrochagf.github.io
68+
$ cd humrochagf.github.io
69+
$ pelican-quickstart
70+
Welcome to pelican-quickstart v3.6.3.
71+
72+
This script will help you create a new Pelican-based website.
73+
74+
Please answer the following questions so this script can generate the files
75+
needed by Pelican.
76+
77+
78+
> Where do you want to create your new web site? [.]
79+
> What will be the title of this web site? Meu Blog
80+
> Who will be the author of this web site? Humberto Rocha
81+
> What will be the default language of this web site? [en] pt
82+
> Do you want to specify a URL prefix? e.g., http://example.com (Y/n) n
83+
> Do you want to enable article pagination? (Y/n) y
84+
> How many articles per page do you want? [10]
85+
> What is your time zone? [Europe/Paris] America/Sao_Paulo
86+
> Do you want to generate a Fabfile/Makefile to automate generation and publishing? (Y/n) y
87+
> Do you want an auto-reload & simpleHTTP script to assist with theme and site development? (Y/n) y
88+
> Do you want to upload your website using FTP? (y/N) n
89+
> Do you want to upload your website using SSH? (y/N) n
90+
> Do you want to upload your website using Dropbox? (y/N) n
91+
> Do you want to upload your website using S3? (y/N) n
92+
> Do you want to upload your website using Rackspace Cloud Files? (y/N) n
93+
> Do you want to upload your website using GitHub Pages? (y/N) y
94+
> Is this your personal page (username.github.io)? (y/N) y
95+
Done. Your new project is available at /caminho/para/humrochagf.github.io
96+
97+
Inicialize um repositório neste diretório e suba os dados para a **branch pelican**:
98+
99+
.. code-block:: bash
100+
101+
$ git init
102+
$ git remote add origin git@github.com:humrochagf/humrochagf.github.io.git
103+
$ git checkout -b pelican
104+
$ git add .
105+
$ git commit -m 'iniciando branch pelican'
106+
$ git push origin pelican
107+
108+
Para publicar o conteúdo na **branch master** é necessário o módulo ghp-import:
109+
110+
.. code-block:: bash
111+
112+
$ pip install ghp-import
113+
$ echo 'pelican==3.6\nghp-import' > requirements.txt
114+
$ git add requirements.txt
115+
$ git commit -m 'adicionando requirements'
116+
$ git push origin pelican
117+
118+
119+
Publicando o blog:
120+
121+
.. code-block:: bash
122+
123+
$ make github
124+
125+
.. figure:: /images/humrochagf/gh-pelican-travis/blog.png
126+
:alt: Primeira publicação do blog
127+
:align: center
128+
129+
Para publicar no caso da página de projeto altere o conteúdo da variável ``GITHUB_PAGES_BRANCH`` do makefile de ``master`` para ``gh-pages``.
130+
131+
Agora que o nosso blog está rodando no gh pages vamos automatizar a tarefa de geração das páginas para poder alterar o conteúdo do blog e fazer novas postagens sem precisar estar um uma máquina com o ambiente do pelican configurado.
132+
133+
Travis-CI
134+
---------
135+
136+
O Travis-CI é uma plataforma de Integração Contínua que monta e testa projetos hospedados no github e será nossa ferramenta para automatizar a montagem das páginas do blog.
137+
138+
A Primeira coisa a ser feita é ir ao `Travis-CI`_ e habilitar seu repositório.
139+
140+
.. figure:: /images/humrochagf/gh-pelican-travis/travis-repo1.png
141+
:alt: Habilitando repositório no travis
142+
:align: center
143+
144+
Em seguida vá nas configurações do repositório no travis e desabilite a opção **Build pull requests** para seu blog não ser atualizado quando alguém abrir um pull request e habilite o **Build only if .travis.yml is present** para que somente a branch que possuir o arquivo .travis.yml gerar atualização no blog.
145+
146+
.. figure:: /images/humrochagf/gh-pelican-travis/travis-repo2.png
147+
:alt: Configurando remositório no travis
148+
:align: center
149+
150+
O próximo passo é criar uma **Deploy Key** para que o travis possa publicar conteúdo no github. Para isso gere uma chave ssh na raiz do repositório local:
151+
152+
.. code-block:: bash
153+
154+
$ ssh-keygen -f publish-key
155+
Generating public/private rsa key pair.
156+
Enter passphrase (empty for no passphrase):
157+
Enter same passphrase again:
158+
Your identification has been saved in publish-key.
159+
Your public key has been saved in publish-key.pub.
160+
161+
Criada a chave vamos cifrar usando a ferramenta `Travis-CLI`_ (certifique-se de que esteja instalada em sua máquina) para poder publicar em nosso repositório sem expor o conteúdo da chave privada:
162+
163+
.. code-block:: bash
164+
165+
$ travis encrypt-file publish-key
166+
Detected repository as humrochagf/humrochagf.github.io, is this correct? |yes| yes
167+
encrypting publish-key for humrochagf/humrochagf.github.io
168+
storing result as publish-key.enc
169+
storing secure env variables for decryption
170+
171+
Please add the following to your build script (before_install stage in your .travis.yml, for instance):
172+
173+
openssl aes-256-cbc -K $encrypted_591fe46d4973_key -iv $encrypted_591fe46d4973_iv -in publish-key.enc -out publish-key -d
174+
175+
Pro Tip: You can add it automatically by running with --add.
176+
177+
Make sure to add publish-key.enc to the git repository.
178+
Make sure not to add publish-key to the git repository.
179+
Commit all changes to your .travis.yml.
180+
181+
Como dito no resultado do comando podemos adicionar a opção `--add` para já adicionar as informações no `.travis.yml`, porém, para evitar de sobrescrever algum comando que venha existir no seu arquivo é recomendado editar manualmente.
182+
183+
Em nosso caso iremos criar o arquivo:
184+
185+
.. code-block:: bash
186+
187+
$ touch .travis.yml
188+
189+
E adicionar o seguinte conteúdo:
190+
191+
.. code-block:: yaml
192+
193+
sudo: false
194+
branches:
195+
only:
196+
- pelican
197+
language: python
198+
before_install:
199+
# troque a linha abaixo pelo resultado do comando:
200+
# travis encrypt-file publish-key
201+
# porém mantenha o final:
202+
# -out ~/.ssh/publish-key -d
203+
- openssl aes-256-cbc -K $encrypted_591fe46d4973_key -iv $encrypted_591fe46d4973_iv -in publish-key.enc -out ~/.ssh/publish-key -d
204+
- chmod u=rw,og= ~/.ssh/publish-key
205+
- echo "Host github.com" >> ~/.ssh/config
206+
- echo " IdentityFile ~/.ssh/publish-key" >> ~/.ssh/config
207+
# substitua git@github.com:humrochagf/humrochagf.github.io.git
208+
# pelo endereço de acesso ssh do seu repositório
209+
- git remote set-url origin git@github.com:humrochagf/humrochagf.github.io.git
210+
# Caso esteja montando a página de projeto troque master:master
211+
# por gh-pages:gh-pages
212+
- git fetch origin -f master:master
213+
install:
214+
- pip install --upgrade pip
215+
- pip install -r requirements.txt
216+
script:
217+
- make github
218+
219+
Removemos em seguida a chave privada não cifrada para não correr o risco de publicar no repositório:
220+
221+
.. code-block:: bash
222+
223+
$ rm publish-key
224+
225+
**ATENÇÃO**: Em hipótese alguma adicione o arquivo **publish-key** em seu repositório, pois ele contém a chave privada não cifrada que tem poder de commit em seu repositório, e não deve ser publicada. Adicione somente o arquivo **publish-key.enc**. Se você adicionou por engano refaça os passos de geração da chave e cifração para gerar uma chave nova.
226+
227+
Agora adicionaremos os arquivos no repositório:
228+
229+
.. code-block:: bash
230+
231+
$ git add .travis.yml publish-key.enc
232+
$ git commit -m 'adicionando arquivos do travis'
233+
$ git push origin pelican
234+
235+
Para liberar o acesso do travis adicionaremos a deploy key no github com o conteúdo da chave pública **publish-key.pub**:
236+
237+
.. figure:: /images/humrochagf/gh-pelican-travis/deploy-key.png
238+
:alt: Adicionando a deploy key no github
239+
:align: center
240+
241+
Pronto, agora podemos publicar conteúdo em nosso blog sem a necessidade de ter o pelican instalado na máquina:
242+
243+
.. figure:: /images/humrochagf/gh-pelican-travis/primeira-postagem1.png
244+
:alt: Fazendo a primeira postagem
245+
:align: center
246+
247+
Que o travis irá publicar para você:
248+
249+
.. figure:: /images/humrochagf/gh-pelican-travis/primeira-postagem2.png
250+
:alt: Blog com a primeira postagem
251+
:align: center
252+
253+
Caso você tenha animado de criar seu blog pessoal e quer saber mais sobre pelican você pode acompanhar a série do `Mind Bending`_ sobre o assunto.
254+
255+
.. _df.python.org.br/blog/github-pages-com-pelican-e-travis-ci: http://df.python.org.br/blog/github-pages-com-pelican-e-travis-ci
256+
.. _GitHub Pages: http://pages.github.com
257+
.. _Pelican: http://blog.getpelican.com
258+
.. _Travis-CI: https://travis-ci.org
259+
.. _GitHub: http://github.com
260+
.. _Travis-CLI: https://github.com/travis-ci/travis.rb
261+
.. _Mind Bending: http://mindbending.org/pt/series/migrando-para-o-pelican
51 KB
Loading
39.9 KB
Loading
28.9 KB
Loading
54.6 KB
Loading
55.2 KB
Loading
31.6 KB
Loading
62.7 KB
Loading
4.74 KB
Loading
12.1 KB
Loading

0 commit comments

Comments
 (0)