travis deploy cli travis-ci

travis ci - deploy - Cómo ejecutar travis-ci localmente



travis git (8)

Este proceso le permite reproducir completamente cualquier trabajo de construcción de Travis en su computadora. Además, puede interrumpir el proceso en cualquier momento y realizar una depuración. A continuación se muestra un ejemplo donde reproduzco perfectamente los resultados del trabajo # 191.1 en php-school / cli-menu .

Prerrequisitos

  • Tienes repositorio público en GitHub
  • Has ejecutado al menos una compilación en Travis
  • Tienes Docker configurado en tu computadora

Configurar el entorno de construcción

Referencia: https://docs.travis-ci.com/user/common-build-problems/

  1. Crea tu propia ID de compilación temporal

    BUILDID="build-$RANDOM"

  2. Vea el registro de compilación , abra el botón Mostrar más para obtener INFORMACIÓN DEL TRABAJADOR y encuentre la línea INSTANCE, péguela aquí y ejecute (reemplace la etiqueta después de los dos puntos con la más nueva disponible) :

    INSTANCE="travisci/ci-garnet:packer-1512502276-986baf0"

  3. Ejecutar el servidor sin cabeza

    docker run --name $BUILDID -dit $INSTANCE /sbin/init

  4. Ejecutar el cliente adjunto

    docker exec -it $BUILDID bash -l

Ejecutar el trabajo

Ahora estás dentro de tu entorno de Travis. Ejecute su - travis para comenzar.

Este paso está bien definido pero es más tedioso y manual. Encontrarás todos los comandos que Travis ejecuta en el entorno. Para hacer esto, busque todo en la columna de la derecha que tenga una etiqueta como 0.03s .

En el lado izquierdo verá los comandos reales. Ejecute esos comandos, en orden.

Resultado

Ahora es un buen momento para ejecutar el comando de history . Puede reiniciar el proceso y volver a ejecutar esos comandos para ejecutar la misma prueba en una base de código actualizada.

  • Si su repositorio es privado: ssh-keygen -t rsa -b 4096 -C “YOUR EMAIL REGISTERED IN GITHUB” entonces cat ~/.ssh/id_rsa.pub y cat ~/.ssh/id_rsa.pub clic aquí para agregar una clave
  • FYI: puede hacer que git pull desde el interior de la ventana acoplable para cargar confirmaciones desde su caja de desarrollo antes de empujarlos a GitHub
  • Si desea cambiar los comandos que ejecuta Travis, es SU responsabilidad averiguar cómo se traduce de nuevo en un .travis.yml en funcionamiento.
  • No sé cómo limpiar el entorno Docker, parece complicado, tal vez esto pierda memoria

Me acabo de unir a un proyecto, y soy nuevo en travis-ci. Prefiero no tener que empujar cada pequeño cambio a .travis.yml y cada pequeño cambio que realice en la fuente para ejecutar la compilación. Con jenkins puedes descargar jenkins y correr localmente. ¿Travis ofrece algo como esto?

Nota: He visto el travis-ci cli y lo descargué, pero todo lo que parece hacer es llamar a su API, que luego se conecta a mi repositorio github, así que si no pulso, no importará que reinicie La última construcción.


No estoy seguro de cuál fue su motivo original para ejecutar Travis localmente, si solo quería jugar con él, entonces deje de leer aquí ya que es irrelevante para usted.

Si ya tiene experiencia con Travis alojado y desea obtener la misma experiencia en su propio centro de datos, siga leyendo.

Desde diciembre de 2014, Travis CI ofrece una versión Enterprise local.

http://blog.travis-ci.com/2014-12-19-introducing-travis-ci-enterprise/

El precio es parte del artículo también:

La licencia se realiza por asientos, donde cada licencia incluye 20 usuarios. El precio comienza en $ 6,000 por licencia, que incluye 20 usuarios y 5 construcciones simultáneas. Hay una opción premium con compilaciones ilimitadas por $ 8,500.


Puedes probar Trevor , que usa Docker para ejecutar tu compilación de Travis.

De su descripción:

A menudo necesito ejecutar pruebas para varias versiones de Node.js. Pero no quiero cambiar las versiones manualmente usando n / nvm o empujar el código a Travis CI solo para ejecutar las pruebas.

Por eso creé a Trevor. Lee .travis.yml y ejecuta pruebas en todas las versiones que solicitó, al igual que Travis CI. Ahora, puedes probar antes de presionar y mantener limpio tu historial de git.


Similar a la de Scott McLeod, pero esto también genera una secuencia de comandos bash para ejecutar los pasos desde .travis.yml.

Solución de problemas localmente en Docker con un script Bash generado

# choose the image according to the language chosen in .travis.yml $ docker run -it -u travis quay.io/travisci/travis-jvm /bin/bash # now that you are in the docker image, switch to the travis user sudo - travis # Install a recent ruby (default is 1.9.3) rvm install 2.3.0 rvm use 2.3.0 # Install travis-build to generate a .sh out of .travis.yml cd builds git clone https://github.com/travis-ci/travis-build.git cd travis-build gem install travis # to create ~/.travis travis version ln -s `pwd` ~/.travis/travis-build bundle install # Create project dir, assuming your project is `AUTHOR/PROJECT` on GitHub cd ~/builds mkdir AUTHOR cd AUTHOR git clone https://github.com/AUTHOR/PROJECT.git cd PROJECT # change to the branch or commit you want to investigate travis compile > ci.sh # You most likely will need to edit ci.sh as it ignores matrix and env bash ci.sh


Travis-ci ofrece una nueva infraestructura basada en contenedores que utiliza la ventana acoplable. Esto puede ser muy útil si está intentando solucionar problemas de una compilación de travis-ci reproduciéndola localmente. Esto está tomado de la documentación de Travis CI.

Solución de problemas localmente en una imagen de Docker

Si tiene problemas para rastrear el problema exacto en una compilación, a menudo ayuda a ejecutar la compilación localmente. Para hacer esto, debe utilizar nuestra infraestructura basada en contenedores (es decir, tener sudo: false en su .travis.yml ) y saber qué imagen de Docker está utilizando en Travis CI.

Ejecución de una imagen de Docker basada en contenedor localmente

  1. Descargar e instalar el motor Docker.
  2. Seleccione una imagen de Docker Hub . Si no estás utilizando una imagen específica del idioma, selecciona ci-ruby . Abra un terminal e inicie una sesión interactiva de Docker utilizando la URL de la imagen:

    docker run -it travisci/ci-ruby /bin/bash

  3. Cambie al usuario de travis :

    su - travis

  4. Clona tu repositorio git en la carpeta / de la imagen.
  5. Instalar manualmente las dependencias.
  6. Ejecute manualmente su comando de construcción Travis CI.

Use wwtd (lo que travis haría) ruby gem para ejecutar pruebas en su máquina local aproximadamente como lo harían en travis.

Volverá a crear la matriz de compilación y ejecutará cada configuración, lo que es excelente para la configuración de la comprobación de cordura antes de presionar.

gem i wwtd wwtd


ACTUALIZACIÓN: Ahora tengo una respuesta completa "llave en mano", todo en uno, consulte https://.com/a/49019950/300224 . Sólo tardé 3 años en averiguarlo!

De acuerdo con la documentación de Travis: https://github.com/travis-ci/travis-ci hay una concocción de proyectos que se unen para entregar el servicio web de Travis CI que conocemos y amamos. El siguiente subconjunto de proyectos parece permitir la funcionalidad de make test locales utilizando el .travis.yml en su proyecto:

travis-build

travis-build crea el script de compilación para cada trabajo. Toma la configuración del archivo .travis.yml y crea una secuencia de comandos bash que luego se ejecuta en el entorno de compilación por travis-worker.

travis-libros de cocina

travis-cookbooks contiene los libros de cocina Chef que se utilizan para aprovisionar los entornos de construcción.

travis-trabajador

travis-worker es responsable de ejecutar los scripts de compilación en un entorno limpio. Transmite la salida del registro a travis-logs y empuja las actualizaciones de estado (inicio / finalización de la compilación) a travis-hub.

(Los otros subproyectos son responsables de comunicarse con GitHub, su interfaz web, correo electrónico y su API).


ACTUALIZACIÓN: esta respuesta ya no está actualizada.

Puedes probar https://github.com/jolicode/JoliCi

usa la ventana acoplable para tratar de ser un reemplazo local para travis-ci. debería soportar php, nodejs y ruby. Si falta algo, puede presentar un error en la página del proyecto.