O Travis é uma plataforma de integração contínua gratuita. Através da integração com outros serviços de repositório, como o GitHub, é possível automatizar a geração de builds, garantindo a integração automática de código a partir de repositórios compartilhados.

Integração Contínua

editar

A Integração Contínua é a prática da Engenharia de Software que dedica atenção à combinação recorrente do código presente em cópias independentes de desenvolvimento em uma linha central de trabalho. Surge como tentativa de garantir que o código desenvolvido paralelamente por equipes separadas seja integrado com segurança, reduzindo a quantidade de defeitos naturalmente introduzidos neste processo.

O conceito foi inicialmente proposto por Grady Booch.[1] No entanto, ganhou grande destaque ao ser introduzido por Kent Bech e Ron Jeffries como uma das práticas do Extreme Programming,[2] onde é proposto que a técnica seja aplicada diversas vezes durante o dia.

Serviços automatizados

editar

Garantir a integração do código envolve pelo menos a combinação das linhas de desenvolvimento e a execução de testes. Deste modo, a partir do momento em que tal atividade é executada continuamente durante o dia, é conveniente a existência de serviços capazes de executá-la automaticamente.

A automatização pode ser realizada através de scripts, ou através de plataformas desenvolvidas para este fim, como é o caso do Travis e do Jenkins. Algumas plataformas colaborativas de repositório também possuem seus serviços próprios, como é o caso do GitLab, que oferece o GitLab CI.

Travis

editar

O Travis é uma plataforma de integração contínua gratuita que permite a configuração e execução de builds de forma automatizada. Seus componentes são distribuídos sob a licença MIT, e estão disponíveis no GitHub (como por exemplo o travis-build, travis-web, e travis-core).

Funcionamento

editar

Um projeto no Travis deve consumir o código de um repositório compartilhado e acessível pela rede (como por exemplo o GitHub, ou qualquer instância do GitLab). De modo geral, cada build será executada em uma máquina virtual recém criada, seguindo os passos definidos por um arquivo de configuração para o preparo, execução, e finalização.

Cada projeto Travis deve ser individualmente configurado, seguindo as tarefas específicas da atividade de integração para cada caso. Considera-se que uma build foi bem sucedida se todos os comandos definidos para a sua execução terminaram se reportar nenhum erro. Caso contrário, a build será marcada como falha.

São alguns possíveis passos de execução para builds automatizadas:

  • Execução de tests
  • Análise estática de código e relatório de cobertura de testes
  • Manipulação do repositório
  • Deploy automatizado

Configuração

editar

Acessar a página do repositório no Github

Na aba "Settings", selecionar no menu lateral a opção "Webhooks & services", e então procurar e selecionar o serviço "Travis CI"

 

O Github irá solicitar sua autenticação para adicionar o serviço.

 

O Github irá alertar se o Travis foi adicionado corretamente

 

Acesse o site https://travis-ci.org/

Se necessário crie sua conta, e então realize o login no site

Na lateral esquerda do site é mostrado os repositórios que estão usando o Travis e ao selecionar um repositório é mostrado seu status

Clique no botão "+" para adicionar um repositório ao Travis

 

Clique no botão "Sync account" para que o Travis possa ser sincronizado com seus repositórios no Github

 

Agora há uma lista com seus repositórios, então basta selecionar qual repositório em que deseja utilizar o Travis

 

Feito os passos acima o serviço do Travis já está cofigurado para funcionar com seu repositório, porém além disso é necessário criar um arquivo de configuração no diretório raíz do seu repositório com o nome ".travis.yml". A documentação do Travis possui templates e exemplos de como fazer o conteúdo desse do arquivo de configuração, mas um layout básico para um projeto python cuja build só executa os testes é o seguinte:

language: python

python:
- "2.7"

script:
- python setup.py test

Após configurar o arquivo ".travis.yml" em uma branch e fazer um push para o repositório, o Travis irá executar o que foi definido no arquivo de configuração, no caso desse exemplo o Travis irá executar os testes toda vez que uma branch for enviada ao repositório, e então o Travis notifica se os testes estão passando ou quais testes estão quebrando.

 

Clicando em algum projeto desse menu lateral o será mostrado os detalhes da execução do Travis, onde se pode analisar cada uma das branchs do repositório e se seus respectivos testes estão passando, e também cada comando que o Travis executou no terminal para rodar os testes.

 

Os recursos deste guia podem ser encontrados no repositório utilizado para o exemplo, e no projeto Travis do respectivo exemplo.

Outras Funcionalidades

editar

Como dito, uma build pode ser personalizada conforme as necessidades de cada projeto, o que pode incluir passos de configuração ou preparação de bases de dados. Além do que vai ser executado durante a build (definido no passo script do arquivo de configuração), o Travis oferece outras funcionalidades para a construção de passos mais elaborados.

Estágios de execução

editar

Uma build do Travis consiste na execução sucessiva de diversos estágios com propósitos bem definidos, como por exemplo a instalação das dependências, e a execução do script. Cada um destes estágios podem ser sobrescritos para a execução de tarefas personalizadas.

Todos os estágios suportados pelo Travis são:

  • before_install
  • install
  • before_script
  • script
  • after_success ou after_failure
  • before_deploy
  • deploy
  • after_deploy
  • after_script

Deploy

editar

Também é possível executar o deploy de aplicações através do Travis. A plataforma possui integração nativa com uma série de serviços (como por exemplo o Heroku e Amazon AWS), mas pode ainda ser integrada manualmente a partir do estágio de deploy.

Referências

editar
  1. Booch, Grady (December 1998). "Object-Oriented Analysis and Design with applications (2nd edition, 15th printing)". www.cvauni.edu. Retrieved 2 December 2014.
  2. Fowler, Martin (1 May 2006). "Continuous Integration". martinfowler.com. Retrieved 9 January 2014.