Como e por que usamos Octopress nesse blog

Publicado por Leonardo Lima no dia dev

octopress icon Um dos valores do nosso Culture Code é praticar o Out-Teach, ou seja, repassar à comunidade boas práticas e conhecimentos adquiridos durante o dia-a-dia da Resultados Digitais. Seguindo essa mentalidade, a equipe de desenvolvimento sentiu a necessidade de criar um blog. Mas não queríamos colocar no ar apenas mais um blog técnico dentre tantos outros. Queríamos entregar algo a mais.

O diferencial começa pela plataforma que escolhemos utilizar. Uma das mais bacanas que encontramos foi o Octopress, um framework para blog baseado em Jekyll - a ferramenta usada para criar sites estáticos através do GitHub Pages.

Abaixo, segue algumas vantages que nos auxiliaram na decisão de escolher o Octopress:

  • Performance e segurança por ser estático

  • Github Workflow com branches, Pull Requests e reviews para os posts

  • Facilidade de design (HTML/CSS e JS simples) Basta que um rake setup_github_pages seja executado para termos um layout pronto e funcional para customizar. Se usássemos somente o Jekyll, por exemplo, teríamos que criar do zero todos os elementos anteriores. Além disso, com um rake preview, é possível editar e visualizar a página localmente.

Chegamos a considerar o uso de um CMS como o WordPress: fácil de implementar e interface amigável. Mesmo assim, decidimos que o Octopress traria mais identificação à equipe pelos pontos citados anteriormente.

Como era esperado, enfrentamos desafios e barreiras durante o processo de implementação e evangelização da equipe:

#1 Entendendo como o Octopress trabalha com branches

Uma das maiores dificuldades foi entender a forma como o Octopress lida com seus ambientes. Basicamente, ao trabalhar com o framework, deve-se ter em mente que o branch master é o que mantém sua página no ar e o branch source é o que você vai trabalhar localmente.

octopress branchs sketch

De forma mais aprofundada, depois de escrever um post, por exemplo, rodamos:

1
2
3
4
5
rake generate 
// reúne todas as alterações (posts, layouts, pages) na pasta _deploy

rake deploy 
// entra no path _deploy (sincronizado com o master) e dá um push para o repositório no GitHub

#2 Como apontar um subdomínio para a sua GitHub Page com o Octopress

Outro problema enfrentado durante a implementação do Ship It! foi o apontamento CNAME de um subdomínio da página da Resultados Digitais para a nossa página de origem no GitHub Pages.

Para que esse apontamento ocorra com sucesso, é fundamental que um arquivo de nome CNAME com o valor do seu subdomínio completo (Ex: shipit.resultadosdigitais.com.br) permaneça no branch master. Caso contrário, o GitHub Pages não conseguirá resolver o apontamento externo.

O maior perigo dessa dependência do arquivo CNAME no master são os deploys mal feitos. Diversas vezes, durante o processo de implantação do blog, enfrentamos deploys que extirpavam o arquivo do master - o que fazia nosso endereço principal sair do ar.

Para resolver esse problema, passamos a seguir um processo unificado de configuração inicial de cada máquina que passaria a postar no blog:

1) Após clonar o projeto locamente, execute:

rake setup_github_pages

O script irá pedir o caminho da Github Pages, digite: git@github.com:[GithubUser]/[GithubUser].github.io.git
Esse comando é necessário apenas para a primeira configuração de ambiente.

2) Para sincronizar o master execute:

1
2
3
4
cd ./_deploy
git fetch --all
git reset --hard origin/master
cd ..

3) Verifique se o branch atual voltou para source.

#3 Octopress Flavoured - integramos o Octopress com o Boxen

No nosso dia-a-dia, fazemos uso do Boxen para manter todas as máquinas atualizadas com as mais diversas mudanças e atualizações de ambiente que fazemos durante o processo de desenvolvimento. Decidimos integrar o boxen também com o nosso processo de configuração e criação do blog.

Para clonar e configurar o ambiente, executamos: boxen rdblog
Para visualizar nosso trabalho localmente também é simples: script/server

#4 Next steps

Está nos nossos planos otimizar e controlar melhor o processo de deploy do blog por meio do Capybot.

Em um próximo post, explicaremos como automatizamos o nosso processo de deploy no RD Station usando o Slack e um mod do Hubot para criar o Capybot - a adorável e prestativa capivara azul que leva à produção nosso trabalho. Você pode dar uma olhadinha nela aqui.

Aprendizado

De fato, apostar no uso do Octopress requer uma curva de aprendizado mais longa se comparada à implementação do WordPress, por exemplo. Contudo, avaliamos que foi uma opção acertada. O sentimento geral é de orgulho: poder escrever um conteúdo de qualidade sobre uma plataforma que traduz tão fielmente nosso ambiente de trabalho é ser coerente e consistente - valores fundamentais do time.

Leonardo Lima

Leonardo Lima

Team Leader

Comentários