Github - Travis
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
editarA 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
editarGarantir 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
editarO 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
editarUm 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
editarAcessar 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
editarComo 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
editarUma 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
editarTambé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.