Tratando de comprender qué hace Travis CI y cuándo debe usarse

86

Soy muy nuevo en Git y planeo contribuir a algún proyecto de código abierto en GitHub después de descubrir un pequeño error en él. Al bifurcarlo y corregir el error, propuse una solicitud de extracción y noté que aparecía esto:

Fallido: la compilación de Travis CI falló

Al analizar los detalles, descubrí que fue causado por Could not find .travis.yml, lo que tenía mucho sentido, ya que no había iniciado sesión en Travis Cl y no había agregado .travis.yml al repositorio.

Esta es la primera vez que escucho sobre Travis y lo que se conoce como integración continua. Y suena muy bien, así que para aprender más sobre él, lo busqué en Wikipedia.

Travis CI es un servicio de integración continua alojado y distribuido que se utiliza para crear y probar proyectos alojados en GitHub. Travis CI detecta automáticamente cuando se ha realizado una confirmación y se ha enviado a un repositorio de GitHub que usa Travis CI, y cada vez que esto sucede, intentará compilar el proyecto y ejecutar las pruebas . Esto incluye confirmaciones para todas las ramas, no solo para la rama maestra.

Mi comprensión actual de Travis CI es que lo que hace es impulsar automáticamente el proyecto git commit -am ".."y no entiendo muy parte de él.

  1. Al construir el proyecto y ejecutar pruebas , ¿qué pruebas ejecutará? ¿Y cómo va a "construir" el proyecto? (como compilarlo en binario?)

  2. Dice que "Esto incluye confirmaciones para todas las ramas", pero ¿qué pasa si no quiero comprometerme para todas las ramas?

  3. ¿Está bien si no uso Travis Cl en absoluto? ¿En qué circunstancias es mejor usarlo (o debe usarse)?

Tratando de averiguarlo
fuente

Respuestas:

104

La forma más sencilla de explicar Travis CI es que ejecuta las pruebas de su programa cada vez que se compromete con GitHub (esto se puede configurar de muchas maneras y siempre puede deshabilitar las compilaciones en algunas ramas). El punto de esto es que a menudo puede descubrir muy rápidamente si su compromiso rompió algo y solucionarlo antes de que se convierta en un problema. Recomendaría ejecutar Travis CI en cada repositorio de GitHub en el que tenga pruebas unitarias y esté utilizando un lenguaje de programación compatible con Travis CI. Dado que configurar Travis CI es muy fácil, normalmente no veo una buena razón para no usarlo, a menos que no le importe si tiene pruebas aprobadas en su programa o no. No dude en dejar un comentario si tiene más preguntas. Puede leer más sobre Travis CI aquí .

Joshua Anderson
fuente
1
Dice que es "gratis" para proyectos de código abierto, pero dice que sus primeras 100 compilaciones son gratuitas. Entonces ... ¿no es gratis entonces? Incluso desarrollando solo, pude llegar a 100 compilaciones muy rápidamente. ¿Estoy leyendo esto mal? No puedo encontrar información en ningún lado. @ joshua-anderson
Mark Pieszak - Trilon.io
2
Siempre es gratis para proyectos de código abierto. Para repositorios privados, obtienes 100 compilaciones gratuitas antes de que debas registrarte en un plan pago.
Joshua-Anderson
¿No es el flujo de trabajo típico de git extrayendo la confirmación más reciente y fusionando localmente y probando y luego presionando a distancia?
Ben
¿Qué pasa con las personas que hacen desarrollo web con herramientas cli para Angular, React o Vue? Los marcos proporcionan retroalimentación instantánea de transpilación y prueba cuando se ejecuta el servidor de desarrollo. ¿Hay alguna diferencia entre eso y Travis CI, o debería decir entre ejecutar pruebas unitarias antes de comprometerse y usar CI en general?
OzzyTheGiant
Entonces, travis no tiene sentido, puedo eliminar fácilmente travis usando git commit hooks y block push que devuelven errores del comando de prueba.
betoharres
16

Como ya ha descubierto qué es Travis-CI, señalaría directamente las preguntas que tiene.

Al construir el proyecto y ejecutar pruebas, ¿qué pruebas ejecutará? ¿Y cómo va a "construir" el proyecto? (como compilarlo en binario?)

En el .travis.ymlarchivo, está especificando su sistema operativo, el lenguaje de programación, la rama de su repositorio, el nombre del archivo del proyecto y otros detalles. Al leer este archivo, Travis-CI usará los compiladores específicos que instalaron en su servidor para compilar nuestro código. Probablemente tendrán el mismo mecanismo que tenemos para Github. Por primera vez, podrían extraer el código [si hemos especificado ramas específicas, podrían extraer el código solo de esas ramas]. Además, nos hemos autenticado para usar nuestra cuenta con Travis-CI, siempre que hagamos una confirmación, debería haber alguna notificación en el servidor Travis-CI, por lo que se reconocerá como una confirmación y comenzará a compilarse.


Dice que "Esto incluye confirmaciones para todas las ramas", pero ¿qué pasa si no quiero comprometerme para todas las ramas?

Puede especificar diferentes ramas o la masterrama. Y solo debe compilar las ramas específicas especificadas en el .travis.ymlarchivo.


¿Está bien si no uso Travis Cl en absoluto? ¿En qué circunstancias es mejor usarlo (o debe usarse)?

Sí, está bien. No es un gran trato. Pero, ¿qué beneficios se perderá al no utilizar este motor fácil de integrar con su repositorio? Cada vez que lo confirma, es posible que se pierda algo y no se pueda compilar debido a un código. ¿Cómo lo sabrás? Por tanto, debería utilizar Travis-CI.


He escrito un blog puesto que se puede leer a saber, lo que es Travis-CI, integraciones continuas y cómo ligado Travis-CI con su Github Repo. Lo he escrito para un repositorio Swift.

Hemang
fuente
2

Creo que estoy en una muy buena posición para responder a su pregunta, ya que actualmente estoy aprendiendo Travis CI en este momento. El primer problema que encontró en primer lugar es porque el proyecto en el que está contribuyendo está utilizando Travis CI para probar y construir el proyecto. Si el proyecto no utiliza Travis CI, no se habría encontrado con ese error.

La solución es consultar el sitio web de Travis CI y aprender cómo funciona y cómo afectó el proyecto en el que está trabajando. Esto lo pondrá en una muy buena posición para comprender qué falla en su código y cómo solucionarlo.

Responder a la primera pregunta sobre la construcción del proyecto.

Al construir el proyecto y ejecutar pruebas, ¿qué pruebas ejecutará? ¿Y cómo va a "construir" el proyecto? (como compilarlo en binario?)

Significa cómo se procesa el código fuente antes de usarlo / probarlo. Depende del idioma que esté escribiendo. Por ejemplo, si el proyecto está escribiendo con PHP. No va a construir mi código en un archivo ejecutable como el código fuente de C / C ++. Ejecutará mi código PHP en el intérprete de PHP y lo probará mientras lo hace. Todavía pasa por el proceso de compilación normal por el que pasa su idioma preferido.

Emmanuel
fuente