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 hago en la fuente para ejecutar la compilación. Con jenkins puedes descargar jenkins y ejecutarlo localmente. ¿Travis ofrece algo como esto?
Nota: He visto el cli de travis-ci y lo descargué, pero todo lo que parece hacer es llamar a su API, que luego se conecta a mi repositorio de github, por lo que si no presiono, no importará que reinicie La última construcción.
install:
sección, y es probable que estos sean los temas que más preocupan.Respuestas:
Este proceso le permite reproducir completamente cualquier trabajo de compilación de Travis en su computadora. Además, puede interrumpir el proceso en cualquier momento y depurar. A continuación se muestra un ejemplo donde reproduzco perfectamente los resultados del trabajo # 191.1 en php-school / cli-menu .
Prerrequisitos
Configurar el entorno de compilación
Referencia: https://docs.travis-ci.com/user/common-build-problems/
Crea tu propia ID de compilación temporal
Vea el registro de compilación , abra el botón Mostrar más para INFORMACIÓN DEL TRABAJADOR y encuentre la línea INSTANCE, péguela aquí y ejecútela (reemplace la etiqueta después de los dos puntos por la más nueva disponible) :
Ejecute el servidor sin cabeza
Ejecute el cliente adjunto
Ejecutar el trabajo
Ahora ya está dentro de su entorno Travis. Corre
su - travis
para comenzar.Este paso está bien definido pero es más tedioso y manual. Encontrará todos los comandos que Travis ejecuta en el entorno. Para hacer esto, busque todo en la columna 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
history
comando. Puede reiniciar el proceso y reproducir esos comandos para ejecutar la misma prueba en una base de código actualizada.ssh-keygen -t rsa -b 4096 -C "YOUR EMAIL REGISTERED IN GITHUB"
a continuacióncat ~/.ssh/id_rsa.pub
y haga clic aquí para añadir una clavegit pull
cargar desde el Docker desde el cuadro de desarrollo antes de enviarlos a GitHub.travis.yml
.fuente
instance:
No puedo ver una ruta de imagen de acoplador válida, solo algo asítravis-ci-garnet-trusty-1512502259-986baf0
. Intentétravisci/ci-garnet:$INSTANCE
ytravisci/$INSTANCE
no funciona, no puedo encontrar la imagen. Además, simplemente tomar el postfix (es decirtravisci/ci-garnet:packer-1512502259-986baf0
) no funcionó.travisci/ci-garnet:packer-1512502276-986baf0
imagen que se sugiere en los documentos de Travis . Este está disponible, pero anticuado. Por ejemplo, CMake es mucho más antiguo que uno disponible en Travis. Noci-garnet
se ha cargado ninguna versión nueva de Docker Hub en los últimos seis meses, mientras que anteriormente había muchas actualizaciones por mes.sudo: required
configurado? En una versión actual mía, veotravis-ci-sardonyx-xenial-1547455603-2c98a19
cuál puedo asignar a travisci / ci-sardonyx: packer-1547455648-2c98a19Travis-ci ofrece una nueva infraestructura basada en contenedores que utiliza docker. Esto puede ser muy útil si está intentando solucionar un problema de travis-ci al reproducirlo localmente. Esto se toma de la documentación de Travis CI .
Solución de problemas localmente en una imagen Docker
Si tiene problemas para localizar 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.Ejecutar una imagen de Docker basada en contenedor localmente
Seleccione una imagen de Docker Hub . Si no está utilizando una selección de imagen específica del idioma
ci-ruby
. Abra una terminal e inicie una sesión interactiva de Docker con la URL de la imagen:Cambiar al
travis
usuario:/
carpeta de la imagen.fuente
make test
.> Manually install any dependencies
Eso suena como una buena manera de terminar con resultados que no coinciden con las versiones regulares de Travis.Manually tun your Travis CI build command
... ¿Qué? ¿Cómo? ¿Qué es? Tengo un.travis.yml
archivo Intenté travis-build pero es un callejón sin salida.ACTUALIZACIÓN: ahora tengo una respuesta completa, llave en mano, consulte https://stackoverflow.com/a/49019950/300224 . ¡Solo tomó 3 años para darse cuenta!
Según la documentación de Travis: https://github.com/travis-ci/travis-ci hay una mezcla de proyectos que se unen para ofrecer el servicio web Travis CI que conocemos y amamos. El siguiente subconjunto de proyectos parece permitir la
make test
funcionalidad local usando el.travis.yml
en su proyecto:travis-build
travis-build crea el script de compilación para cada trabajo. Toma la configuración del
.travis.yml
archivo y crea unbash
script que luego travis-worker ejecuta en el entorno de compilación.libros de cocina travis
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 envía 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).
fuente
make test
función sería genial. Comenta si te gustaría trabajar en eso conmigo.travis-build
? No hay instrucciones en el repositorio.Similar a Scott McLeod, pero esto también genera un script bash para ejecutar los pasos desde .travis.yml.
Solución de problemas localmente en Docker con un script Bash generado
fuente
travis # to create ~/.travis
. Travis necesita un comando para ejecutarse.sudo - travis
debería sersu - travis
./home/travis/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- travis/support (LoadError)
cd ~/.travis/travis-build/ bundle install bundler add travis bundler binstubs travis cd <REPO_YOU_WANT_TO_RUN_COMPILE_IN> ~/.travis/travis-build/bin/travis compile
Use wwtd (lo que haría Travis) ruby gem para ejecutar las pruebas en su máquina local más o menos como se ejecutarían en travis.
Volverá a crear la matriz de compilación y ejecutará cada configuración, ideal para configurar la comprobación de cordura antes de presionar.
fuente
ruby
soportetl; dr Use la imagen especificada en https://docs.travis-ci.com/user/common-build-problems/#troubleshooting-locally-in-a-docker-image en combinación con https://github.com/ travis-ci / travis-build # use-as-addon-for-travis-cli .
EDITAR 2019-12-06
#troubleshooting-locally-in-a-docker-image
se reemplazó la sección#running-builds-in-debug-mode
que también describe cómo SSH para el trabajo que se ejecuta en modo de depuración .EDITAR 2019-07-26
#troubleshooting-locally-in-a-docker-image
la sección ya no es parte de los documentos; este es el por quéSin embargo, todavía está en la historia de git: https://github.com/travis-ci/docs-travis-ci-com/pull/2193 .
Busque versiones de imagen (bastante antiguas, no se pueden encontrar nuevas) en: https://travis-ci.org/travis-ci/docs-travis-ci-com/builds/230889063#L661 .
Quería inspeccionar por qué una de las pruebas en mi compilación falló con un error que no obtengo localmente.
Trabajó.
Lo que realmente funcionó fue usar la imagen especificada en Solución de problemas localmente en una página de documentos de Docker Image . En mi caso lo fue
travisci/ci-garnet:packer-1512502276-986baf0
.Pude agregar los
travise compile
siguientes pasos descritos en https://github.com/travis-ci/travis-build#use-as-addon-for-travis-cli .Todo
.travis.yml
se ejecutó como se esperaba (dependencias instaladas, pruebas ejecutadas, ...).Tenga en cuenta que antes de ejecutar
bash ci.sh
tuve que cambiar--branch\=\'\'\
a--branch\=master\
(ver el penúltimosed -i ...
comando) enci.sh
.Si eso no funciona, el siguiente comando ayudará a identificar el número de línea de destino y puede editar la línea manualmente.
No funcionó
Seguí la respuesta aceptada para esta pregunta pero no encontré la imagen (
travis-ci-garnet-trusty-1512502259-986baf0
) mencionadainstance
en https://hub.docker.com/u/travisci/ .La versión de construcción de trabajador apunta a travis-ci / worker commit y sus referencias de travis-worker-install
quay.io/travisci/
como registro de imágenes. Entonces lo intenté.Definitivamente no es de confianza (Ubuntu 14.04) y tampoco es pequeño.
fuente
http_proxy
entorno por el bien degit clone
. Por defectogit clone
lanzagnutls_handshake
excepción. Así que me gustaría forzar la instalación de unabundler
versión en particulargem install bundler -v 1.16.6
porquebundler binstubs travis
fallé previamente. Mejore labundler
versión requerida ejecutando `bundle info travis`travis.yml
en un script de shell ejecutable. ¡Bien hecho! La única mejora para esto sería un mecanismo por el cual evitar el reemplazo manual de la cadena al especificar la rama desde la cual construir.sed
comando que aborda el punto que hizo. Vea el comando antes de ejecutarbash ci.sh
.Puedes probar Trevor , que usa Docker para ejecutar tu versión de Travis.
De su descripción:
fuente
No estoy seguro de cuál fue su razón 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 local de Enterprise.
http://blog.travis-ci.com/2014-12-19-introducing-travis-ci-enterprise/
El precio también es parte del artículo:
fuente
whackamole
es una copia del proyecto en el que realmente quiero trabajar, y puedo configurar un trabajo de construcción temporal de Travis para ese proyecto mientras resuelvo los inconvenientes de la automatización de la construcción. Una vez que lo haya logrado, elimine las docenas de compromisos "Uy" y diríjase al verdadero repositorio de GitHub. (Y probablemente quitar lawhackamole
cesión temporal de GitHub y el trabajo de Travis correspondiente.)Es posible SSH en el entorno de Travis CI a través de un host de rebote. La función no está integrada en Travis CI, pero se puede lograr con los siguientes pasos.
travis
usuario y asegúrese de que puede usar SSH.Ponga estas líneas en la
script:
sección de su.travis.yml
(por ejemplo, al final).¿Dónde
$bouncehostip
está la IP / host de su host de rebote y$sshpassword
es su contraseña SSH definida? Estas variables se pueden agregar como variables cifradas .Empuja los cambios. Debería poder hacer una conexión SSH a su host de rebote.
Fuente: Shell en Travis CI Build Environment .
Aquí está el ejemplo completo:
Ver:
c-mart/travis-shell
en GitHub .Consulte también: Cómo reproducir un entorno de compilación travis-ci para la depuración
fuente