Entrega Contínua com Ruby on Rails, GitHub, Code Climate, Travis CI e Heroku

Não se espante com a quantidade de tecnologias que o título do artigo expõe, pois é apenas a linha de frente de um arsenal de ferramentas que executam nos bastidores de cada plataforma. O que veremos a seguir é apenas um passo a passo de como podemos implementar um ambiente automatizado para publicar uma aplicação na web, de ferramentas muito utilizadas na comunidade Open Source mas que algumas pessoas ainda não conhecem.

Entrega Contínua

No livro Entrega Contínua – Como Entregar Software de Forma Rápida e Confiável, Jez Humble e David Farley falam do objetivo como profissionais de desenvolvimento, que é de entregar software útil e funcional aos usuários o mais rápido o possível. Os autores citam alguns antipadrões comuns de entrega de versão como:

  • Implantar software manualmente
  • Implantar em um ambiente similar ao de produção somente quando o desenvolvimento estiver completo
  • Gerência de configuração manual dos ambientes de produção

Eles descobriram que para alcançar o objetivo da Entrega Contínua – tempo de ciclo curto e alta qualidade – precisamos entregar versões frequentes e automatizadas de nosso software. A entrega rápida também é importante porque permite que você descubra quais correções e funcionalidades implementadas de fato são úteis. Para mais detalhes, acesso o recurso Entrega Contínua.

Ferramentas

Ruby on Rails é um framework para desenvolvimento de aplicações para a web. Consiste em desenvolvermos a aplicação nas convenções que ele nos dá. Mas, para isso você tem que dominar a linguagem por trás da cortina, Ruby. Não bastando, terá também que obter conhecimento de HTML, CSS e JavaScript. Conhecimentos de banco de dados também são fundamentais.

GitHub é uma rede social para código-fonte, onde você e seu time podem hospedar seus projetos. Códigos Open Source podem ser hospedados de graça. Para projetos privados você terá que pagar um de seus planos. Caso você tenha um projeto privado e queira hospedar de graça (com algumas limitações), recomendo o Bitbucket. Mas se você não domina os comandos básicos do gerenciador de controle de versão Git, é de fundamental importância o seu aprendizado.

O Code Climate é uma plataforma que automatiza a revisão de código-fonte. Através de um conjunto de ferramentas, é feita uma análise estática do código da aplicação para gerar relatórios de pontos onde deve-se melhorar a escrita do código. Ele detecta duplicação, más práticas, nível de complexidade, vulnerabilidades, cobertura de testes entre outros. Ele utiliza a métrica GPA como forma de indicar a qualidade geral do código da aplicação.

Travis CI é um serviço de Integração Contínua na nuvem. Ele é integrado com o GitHub e oferece suporte para várias linguagens.

Heroku é uma plataforma como serviço (PaaS), dando a possibilidade de publicar sua aplicação com um simples git push. Criando sua conta, você pode hospedar suas aplicações nas linguagens suportadas.

Implementação

Com o domínio em programação na linguagem Ruby e conhecimentos do framework Rails, você deve criar testes para sua aplicação, pois não existe Integração Contínua sem testes automatizados. Utilize o framework de testes que achar melhor. Entre eles, o UnitTest e RSpec.

De posse das configurações básicas do Git em seu computador e de uma conta no GitHub você deve realizar o push de sua aplicação para o repositório remoto.

Agora vamos visualizar alguns screenshots para guiá-lo melhor:

Configurando o Code Climate

  1. Clique no botão “Login” para acessar o Code Climate.
    01_code_climate_home
  2. Clique no link “Log in with GitHub” para acessar o Code Climate com sua conta do GitHub.
    02_code_climate_login
  3. Clique no botão “Add Open Source Repo” para adicionar um repositório público hospedado no GitHub. Perceba que se você possuir uma conta privada no GitHub e também pagar um dos planos do Code Climate, também poderá configurar seus repositórios privados.
    03_code_climate_adicionar_repositorio_-_dashboard
  4. Na caixa “GitHub repo name”, informe o caminho do repositório público e depois clique no botão “Import Repo from GitHub”.
    04_code_climate_importar_repositorio
  5. Aguarde enquanto o Code Climate gera as métricas do projeto.
    05_code_climate_gerando_analise_do_repositorio
  6. O Code Climate gera vários resultados para que você possa analisar a qualidade do código de sua aplicação. Observe a graduação de cores do quadro “Classes by Rating”. A faixa verde mostra o grau de qualidade de seu código, as faixas amarelas, laranjas e vermelhas mostram que você deve agir na melhoria do código. Você pode ver mais detalhas na aba “Issues”.
    06_code_climate_repositorio_adicionado
  7. Na aba “Settings”, opção “Test Coverage” você pode configurar sua aplicação para quando os testes forem executados no servidor de Integração Contínua, também gerar o relatório de métricas de qualidade do Code Climate.

07_code_climate_cobertura_de_testes

  1. Ainda na aba “Settings”, você pode acessar a opção “Badges” para optar pelo formato de sinalização do Code Climate no arquivo README do seu projeto.

08_code_climate_badges

Configurando o Travis CI

  1. Também será utilizado sua conta do GitHub, então acesse-o clicando no link no canto direito superior chamado “Sign in with GitHub”.

09_travis_login

  1. Ao lado da aba “Recent” clique no botão com sinal de “+” para adicionar um repositório do GitHub

10_travis_adicionar_repositorio

  1. Escolha sua conta ou projetos que você participa. Ative a integração com o Travis CI simplemente clicando no botão “ON” ao lado do nome do repositório.

11_travis_escolher_o_repositorio

  1. Na tela anterior, perceba que existe um ícone de uma ferramenta. É nele que você pode acessar mais detalhes da configuração da integração do Travis CI com seu reposítório.

12_travis_yml

  1. Para poder obter o “Badge” do Travis CI e adicioná-lo no arquivo README de seu projeto, vá para o início do seu projeto no Travis CI e clique no “Badge” que fica no canto direito superior, como mostrado na tela abaixo:

13_travis_badges

  1. A documentação do Travis CI é muito abrangente podendo ser acessada por esse link. Dê uma atenção especial aos GUIDES.

14_travis_guides

  1. Em REFERENCE, você encontrará tópicos avançados e como o Travis CI funciona por dentro.

15_travis_reference

  1. Em INTEGRATIONS, você pode estudar como integrar o Travis com outras ferramentas. Leia o conteúdo do link “Code Climate” para entender melhor como foi realizada a integração exemplificada no artigo.

16_travis_integrations

  1. Em DEPLOYMENT, você encontrará como integrar o Travis CI com vários sistemas de publicação de aplicações em nuvem. Leia o link “Heroku” para compreender a integração exemplificada no artigo.

17_travis_deployment

  1. Abaixo, temos o momento da finalização da execução dos testes em RSpec no Travis CI. Perceba na linha 2975 a geração do relatório de métricas de qualidade no Code Climate. Você receberá um e-mail quando os testes não forem realizados com sucesso, podendo agir em cima disso. Outros e-mails também podem ser cadastrados para serem avisados também.

18_travis_CI_with_codeclimate_and_heroku

  1. A partir da linha 2982, temos o momento da publicação da aplicação no Heroku. Essas telas podem ser acompanhadas na interface do Travis CI. Toda vez que for realizado um push no repositório do projeto no GitHub, você poderá acompanhar o processo em tempo real.

19_travis_CI_deploy_in_heroku

  1. A cada atualização do projeto no GitHub, você poderá acompanhar no Code Climate a evolução da qualidade do código.

20_code_climate_PC_now

Arquivos importantes para configurar

  1. Vamos dar atenção especial para os arquivos .travis.yml e README.md do projeto.

21_github

  1. O arquivo .travis.yml é onde vamos configurar o ambiente do Travis CI (clique no arquivo e depois no botão Raw para vê-lo como na imagem abaixo). É configurado a linguagem e versão. Serviço de banco de dados utilizado. Quais comandos serão instalados e executados antes da bateria de testes. Da linha 12 à 14 é configurado a integração com o Code Climate. Da linha 15 à 19 é configurado como o Travis CI vai publicar sua aplicação após os testes serem executados com sucesso. Mais detalhes sobre a configuração do arquivo, leia aqui.

22_github_travis_yml

  1. O arquivo README.md é onde são adicionadas instruções de como configurar o projeto.

23_readme_badges

  1. No exemplo da tela anterior, clique no arquivo e depois no botão Raw para vê-lo como na imagem abaixo. Você perceberá que o conteúdo do arquivo possui trechos do “Badges” copiados do Code Climate e Travis CI. Simples assim.

24_readme_badges_raw

Heroku

  1. Como dito antes, o Heroku tem suporte para uma gama de linguagens e através de seus plugins, pode-se utilizar vários serviços.

25_heroku_devcenter

  1. O Heroku já configurado, você pode monitorar as publicações realizadas pelo Travis CI pela aba “Activity”. E a partir de então, publicar sua aplicação com um simples git push para seu repositório hospedado no GitHub.

26_heroku_builds

Considerações finais

Foi um tutorial curto e de nível intermediário para quem já conhece um pouco das ferramentas citadas e deseja melhorar o controle da qualidade do código e diminuir o números de tarefas na hora de publicar uma aplicação. Caso você deseje outros artigos aprofundando melhor um dos temas e ferramentas citadas no artigo, deixe um comentário.

Você pode ver o resultado a partir dos links abaixo:

https://github.com/tasafo/palestras-coletivas

https://codeclimate.com/github/tasafo/palestras-coletivas

https://travis-ci.org/tasafo/palestras-coletivas

http://palestrascoletivas.com/

Espero que tenham gostado e até a próxima!

Anúncios

Um comentário sobre “Entrega Contínua com Ruby on Rails, GitHub, Code Climate, Travis CI e Heroku

  1. Pingback: Os 5 posts mais lidos do ano | Blog do Tá safo!

O que tu achas?

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s