Resumo

O build do ambiente de staging do site do PyLadies Brasil quebrou. Foi resolvido em 17 de Novembro inserindo nova chave de API na configuração do Codeship.

Contexto

O site do PyLadies Brasil é escrito em Pelican, um gerador de sites estáticos escrito em Python, e tem seu código hospedado no GitHub, uma rede social de compartilhamento de código. Hoje nós temos no ar dois ambientes: o de staging e o de produção. Ambos tem seu build feito e estão no ar usando duas ferrramentas: o Codeship, ferramenta de integração contínua que usamos para fazer os builds e o Heroku, uma plataforma para colocar webapps no ar.

No GitHub nós configuramos dois ramos principais, assim conseguimos separar staging de produção: para staging nós usamos o ramo develop e para produção usamos a master. Toda nova funcionalidade ou adição de informação é inicialmente adicionada no ramo develop por meio de um pull request. Este ao ser mergeado, desencadeia um build e um deploy para ambiente de staging. Após conferência desse primeiro deploy, nós abrimos um pull request secundário de develop para master, que ao ser mergeado desencadeia novo build e deploy, só que dessa vez para produção.

Como uma das mantenedoras do site do PyLadies Brasil, eu tenho acesso ao Codeship e, no dia 14 de Novembro às 12:04, recebi um e-mail notificando a quebra do build.

Investigação

O primeiro passo da investigação foi olhar o pull request que havia sido margeado em develop e que em tese gerou a quebra do build. O pull request em questão foi o de número #286. Com tantas pessoas mexendo no site, é comum que alguns erros passem desapercebidos no momento do review gerando algum tipo de quebra. Olhando as alterações feitas no pull request, nada indicava um motivo para que o build quebrasse.

Com isso a segunda coisa que fiz foi fazer o build de develop localmente na minha máquina. Fazendo isso, se o problema fosse algo no código fonte do site eu veria essa quebra também na minha máquina. Mas não foi o caso, o build rodou normalmente.

Por fim, acessei o Codeship para ver se lá existia algum detalhe do que estava quebrando o build do site. Olhando o detalhamento do build, mostrava um aviso:

Com isso cheguei a conclusão que algo aconteceu com a chave de API que usávamos para fazer a comunicação entre o Codeship e o Heroku. Sendo assim, mandei um e-mail na lista que temos no google groups do PyLadies Brasil. Nesse e-mail eu pedi para que as pessoas que tem acesso aos projetos no Heroku (eu não tinha esse acesso até então) pudessem ou me adicionar como colaboradora no projeto lá no Heroku ou que investigassem o ocorrido.

Não muito depois do meu e-mail, uma PyLady me colocou como colaboradora do projeto. Infelizmente, isso não nos ajuda, o que acontece é que a chave de API que o Heroku gera é ligada a uma conta, ou seja, se você tem 10 apps no Heroku, você vai usar a mesma chave de API para todos eles. O que eu imagino que aconteceu é que a dona da app no Heroku regerou a própria chave trancando o acesso do Codeship.

Solução

Para começar a resolver o problema do build, criei uma conta para o PyLadies Brasil no Heroku com o nosso e-mail. Em seguida, acessei o Heroku com a minha conta pessoal e adicionei o perfil do PyLadies Brasil como colaborador do projeto.

Após adicionar o PyLadies como colaborador, acessei a conta do PyLadies Brasil no Heroku e copiei a chave da conta. Logo depois colei a chave copiada nas configurações do projeto no Codeship. E por fim, manualmente disparei o build que tinha quebrado novamente. Com a nova chave no lugar, o build então passou.

Conclusão

Precisamos ter melhor controle das ferramentas que usamos para o PyLadies Brasil e também um melhor entendimento como essas ferramentas funcionam e mantém as coisas no ar. Espero que esse post mortem assim como a criação da conta do PyLadies Brasil nessas plataformas, ajudem nesse processo.

Gostou? Compartilhe:

Comments