Tentando entender o que o Travis CI faz e quando deve ser usado


86

Eu sou muito novo no Git e estou planejando contribuir com algum projeto de código aberto no GitHub depois de descobrir um pequeno erro nele. Ao bifurcar e corrigir o erro, propus uma solicitação de pull e percebi o seguinte:

Falha - A construção do Travis CI falhou

Analisando os detalhes, descobri que era causado por Could not find .travis.yml, o que fazia todo o sentido, já que eu não tinha assinado o Travis Cl com e adicionado .travis.yml ao repositório.

É a primeira vez que ouço falar do Travis e do que é conhecido como integração contínua. E parece muito legal, então, para aprender mais sobre isso, pesquisei na Wikipedia.

Travis CI é um serviço de integração contínua distribuído e hospedado usado para construir e testar projetos hospedados no GitHub. O Travis CI detecta automaticamente quando um commit foi feito e enviado para um repositório GitHub que está usando o Travis CI, e cada vez que isso acontecer, ele tentará construir o projeto e executar testes . Isso inclui commits para todos os branches, não apenas para o branch master.

Meu entendimento atual do Travis CI é que o que ele faz é empurrar o projeto automaticamente git commit -am ".."e eu não entendo muito bem alguma parte dele.

  1. Ao construir o projeto e executar testes , quais testes serão executados? E como isso vai "construir" o projeto? (como compilá-lo para binário?)

  2. Ele afirma que "Isso inclui commits para todos os branches" - mas e se eu não quiser fazer commit de todos os branches?

  3. Tudo bem se eu não usar o Travis Cl? Em que circunstâncias é melhor usá-lo (ou deve ser usado)?

Respostas:


104

A maneira mais simples de explicar o Travis CI é que ele executa os testes do seu programa toda vez que você se compromete com o GitHub (isso pode ser configurado de várias maneiras e você sempre pode desabilitar compilações em alguns branches). O ponto disso é que muitas vezes você pode descobrir muito rapidamente se o seu commit quebrou algo, e consertar antes que se torne um problema. Eu recomendaria executar o Travis CI em cada repositório GitHub em que você tem testes de unidade e está usando uma linguagem de programação suportada pelo Travis CI. Como configurar o Travis CI é muito fácil, normalmente não vejo um bom motivo para não usá-lo, a menos que você não se importe se passou nos testes do programa ou não. Sinta-se à vontade para deixar um comentário se tiver mais perguntas. Você pode ler mais sobre o Travis CI aqui .


1
Ele diz que é "gratuito" para projetos de código aberto, mas diz que seus primeiros 100 builds são gratuitos. Então ... não é grátis então? Mesmo desenvolvendo sozinho, consegui chegar a 100 compilações muito rapidamente. Eu estou lendo errado? Não consigo encontrar nenhuma informação em qualquer lugar. @ joshua-anderson
Mark Pieszak - Trilon.io

2
É sempre gratuito para projetos de código aberto. Para repositórios privados, você recebe 100 compilações gratuitas antes de precisar se inscrever em um plano pago.
joshua-anderson

Não é o fluxo de trabalho git típico puxando o commit mais recente e mesclando localmente e testando e depois empurrando para remoto?
Ben

E as pessoas que desenvolvem web com ferramentas CLI para Angular, React ou Vue? As estruturas fornecem feedback instantâneo de transpilação e teste ao executar o servidor de desenvolvimento. Existe alguma diferença entre isso e o Travis CI, ou devo dizer entre executar testes de unidade antes de comprometer e usar CI em geral?
OzzyTheGiant

Portanto, travis não faz sentido, posso facilmente eliminá-lo usando git commit hooks e block push que retornam erros do comando test.
betoharres 01 de

16

Como você já descobriu o que é Travis-CI, gostaria de apontar diretamente para as suas dúvidas.

Ao construir o projeto e executar testes, quais testes ele executará? E como isso vai "construir" o projeto? (como compilá-lo para binário?)

No .travis.ymlarquivo a, você está especificando seu sistema operacional, a linguagem de programação, seu branch repo, o nome do arquivo do projeto e outros detalhes. Ao ler este arquivo, Travis-CI usará os compiladores específicos instalados em seu servidor para compilar nosso código. Provavelmente eles terão o mesmo mecanismo que temos para o Github. Pela primeira vez, eles podem puxar o código [se tivermos especificado ramificações específicas, eles podem puxar o código apenas dessas ramificações]. Além disso, nos autenticamos para usar nossa conta com o Travis-CI, sempre que fizermos um commit, deverá haver alguma notificação que deve ser disparada no servidor Travis-CI, portanto, será reconhecido como um commit e começará a compilar.


Ele afirma que "Isso inclui commits para todos os branches" - mas e se eu não quiser fazer commit de todos os branches?

Você pode especificar diferentes ramos ou o masterramo. E deve apenas compilar os ramos específicos especificados no .travis.ymlarquivo.


Tudo bem se eu não usar o Travis Cl? Em que circunstâncias é melhor usá-lo (ou deve ser usado)?

Sim, está tudo bem. Não é grande coisa. Mas quais benefícios você perderá por não usar esse mecanismo fácil de integrar com seu repo. Toda vez que você confirma, pode ser possível que algo perca e não seja compilado por causa de um código. Como você vai saber? Portanto, você deve usar o Travis-CI.


Eu escrevi uma postagem no blog que você pode ler para saber o que é Travis-CI, Integrações Contínuas e como vincular o Travis-CI ao seu repositório Github. Eu o escrevi para um repositório Swift.


2

Acho que estou em uma posição muito boa para responder a sua pergunta, pois estou aprendendo o Travis CI no momento. O primeiro problema que você encontrou em primeiro lugar é porque o projeto para o qual você está contribuindo está usando o Travis CI para testar e construir o projeto. Se o projeto não estiver usando o Travis CI, você não teria encontrado esse erro.

A solução é conferir o site do Travis CI e saber como ele funciona e como afetou o projeto em que você está trabalhando. Isso o colocará em uma posição muito boa para entender o que está falhando em seu código e como corrigi-lo.

Para responder à primeira pergunta sobre a construção do projeto.

Ao construir o projeto e executar testes, quais testes ele executará? E como isso vai "construir" o projeto? (como compilá-lo para binário?)

Significa como o código-fonte é processado antes do uso / teste. Depende do idioma que você está escrevendo. Por exemplo, se o projeto estiver escrevendo com PHP. Não vai construir meu código em um arquivo executável como o código-fonte C / C ++. Ele executará meu código PHP no interpretador PHP e o testará enquanto o faz. Ele ainda passa pelo processo normal de compilação pelo qual sua linguagem preferida passa.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.