¿Activar una reconstrucción de Travis-CI sin presionar un commit?


414

Usando Travis-CI, ¿es posible desencadenar una reconstrucción sin empujar un nuevo commit a GitHub?

Caso de uso: una compilación falla debido a una externalidad. La fuente es realmente correcta. Construiría OK y pasaría si simplemente se vuelve a ejecutar.

Por ejemplo, un apt-geterror debido a que un servidor de paquetes está inactivo, pero el servidor vuelve a funcionar. Sin embargo, el estado de compilación está "atascado" en "fallido" hasta que se empuje una nueva confirmación.

¿Hay alguna forma de empujar a Travis-CI para que haga otra compilación, que no sea presionar una confirmación "ficticia"?

Respuestas:


458
  • Si tiene acceso de escritura al repositorio : en la pantalla de detalles de la compilación, hay un botón ↻ Reiniciar compilación . También en "Más opciones" hay un elemento de menú de compilación del disparador.

    Nota : Las extensiones del navegador como Ghostery pueden evitar que se muestre el botón de reinicio. Intente deshabilitar la extensión o la lista blanca de Travis CI.

    Nota 2 : Si la .travis.ymlconfiguración ha cambiado en el flujo ascendente, al hacer clic en el botón de reconstrucción se ejecutará travis con la configuración anterior. Para aplicar cambios ascendentes para la configuración de travis, uno debe agregar commit a PR o cerrarlo / reabrirlo.

  • Si ha enviado una solicitud de extracción : puede cerrar el PR y luego abrirlo nuevamente . Esto activará una nueva compilación.

Reiniciar Build:

Reiniciar Captura de pantalla de compilación

Disparador de construcción:

Trigger Build Captura de pantalla


1
He encontrado y usado eso en otros casos. Pero podría haber jurado que tuve un caso en el que se había Errado por la razón que describí anteriormente, y el menú de equipo carecía de esa opción. Tal vez fue una casualidad por única vez, o tal vez me equivoqué. De todos modos, creo que respondiste cómo se supone que funciona, así que seguiré adelante y marcaré tu respuesta como aceptada. ¡Gracias!
Greg Hendershott

3
Si miro el historial de compilación de cualquiera de los proyectos que tengo, con errores o fallidos, tiene un botón de reinicio
jbtule

20
Creo que un caso complicado es cuando envías una solicitud de extracción para el proyecto de otra persona, y se produjo un error por razones ajenas a tu RP per se, y sabes que tendría éxito si pudieras empujarlo para intentarlo nuevamente. Es comprensible por qué no puede (no es su proyecto), pero también es comprensible por qué querría (su PR incorrectamente "se ve mal").
Greg Hendershott

94
No olvides que debes iniciar sesión para ver esto: P
Michael J. Calkins

8
Y necesita tener acceso de escritura al github repro. Entonces esto no funcionará para las horquillas empujadas aguas arriba.
Izhaki

206

Si abre la pestaña Configuración para el repositorio en GitHub, haga clic en Integraciones y servicios , busque Travis CI y haga clic en Editar , debería ver un botón Servicio de prueba . Esto activará una compilación.


66
Creo que travis-ci eliminó el botón de reinicio de compilación, por lo que esta es la única manera que funcionó para mí. Sin embargo, realiza dos compilaciones ...
Blaise

1
@Blaise por casualidad ¿usas Ghostery (o similar)? Intenta deshabilitar eso. Para mí, esto hace que vuelva a aparecer el botón Reiniciar compilación.
Greg Hendershott

29
Esto funciona cuando activa inicialmente el edificio Travis CI para un repositorio. El botón "recargar compilación" no existe para un repositorio que no tiene compilaciones anteriores.
Brian J. Miller

12
Una nota para idiotas como yo: ¡Abre Settingsen el repositorio en Github , no en la página de repositorio de Travis! No puedo creer que haya perdido 20 minutos tratando de encontrar Service Hooksen la página de Travis. :(
John Red

83

Sé que dijiste sin presionar un commit, pero algo que es útil, si estás trabajando en una rama que no sea master, es cometer un commit vacío.

git commit --allow-empty -m "Trigger"

Puede volver a redactar al final y eliminar squash / eliminar las confirmaciones vacías y funciona en todos los ganchos git :)


1
Eso es genial, gracias! Solo quiero agregar que tuve que cambiar la base para mover el compromiso "Trigger" más abajo en la historia; de lo contrario, simplemente descartaría la nueva compilación al eliminar la confirmación "Trigger".
pmos

63
en la misma línea, puede modificar el commit existente y el push forzado: git commit --amend --no-edit && git push -f
grahamrhay

44
@grahamrhay es lo mejor para desencadenar una construcción de relaciones públicas cuando no eres el propietario del repositorio objetivo, conserva el contenido, no es necesario fusionarlo ni volver a crearlo ni hacer nada. Por favor, responda para que sea posible votar de manera más visible.
TWiStErRob

Bifurqué un repositorio al que no tenía acceso, y esto fue lo único que funcionó para mí porque Travis no tenía ninguna compilación que pudiera reiniciar en mi bifurcación recién creada.
Nick McCurdy

1
@TWiStErRob Alguien más escribió esa respuesta a continuación.
Franklin Yu el

30

He encontrado otra forma de forzar volver a ejecutar compilaciones de CI y otros desencadenantes:

  1. Ejecutar git commit --amend --no-editsin cambios. Esto recreará la última confirmación en la rama actual.
  2. git push --force-with-lease origin pr-branch.

8
No recomendaría esto Modifica destructivamente la historia para que pueda confundir a las personas que tienen sucursales basadas en este compromiso, y la --amendbandera también puede no cambiar el HEADcompromiso en algunos casos.
Nick McCurdy

77
Me parece bien para las raras ocasiones en las que solo necesitas BUMP webhooks para un PR. Nadie debería realmente separarse de las solicitudes de extracción, por lo que nadie dependerá de la identificación de confirmación exacta.
Vlad Frolov

44
ir para git push --force-with-lease origin pr-branchno accidentalmente
bombardear

21

Inicie sesión en Travis y vaya a la página de compilación. Verá un botón "Reiniciar compilación" en la esquina superior derecha, junto al ícono de ajustes:

captura de pantalla

Nota: debe tener acceso de escritura al repositorio de GitHub vinculado para que esto funcione.


11
Esta respuesta es básicamente la misma que la aceptada y se envió mucho más tarde.
Dan Dascalescu

55
@DanDascalescu no tenía una captura de pantalla cuando publiqué. ¡Y ahora me doy cuenta de que puedes editar la respuesta de otra persona! ;)
Juan

1
@Juan todavía puede eliminar esta respuesta, lo que sugiero que haga, ya que agrega un desorden innecesario.
Rafal Enden

20

Si tiene un nuevo proyecto en GitHub que tiene .travis.yml, pero nunca fue probado, puede ejecutar pruebas sin comprometerse de esta manera:

  1. Habilitar las pruebas en los ajustes de Travis CI
  2. abrir la página del proyecto en GitHub
  3. configuración abierta -> webhooks y servicios
  4. busque Travis CI en los servicios y presione el botón editar
  5. presione "Servicio de prueba"

3
Esta es la respuesta para aquellos con proyectos recién creados.
Eric MORAND

16

Puede hacerlo utilizando la CLI de Travis . Como se describe en la documentación , primero instale la herramienta CLI, luego:

travis login --org --auto
travis token

Puede mantener este token en una variable de entorno TRAVIS_TOKEN, siempre que el archivo en el que lo guarda no esté controlado por la versión en algún lugar público.

Yo uso esta función para enviar disparadores:

function travis_trigger() {
     local org=$1 && shift
     local repo=$1 && shift
     local branch=${1:-master} && shift

     body="{
             \"request\": {
               \"branch\": \"${branch}\"
              }
           }"

     curl -s -X POST \
          -H "Content-Type: application/json" \
          -H "Accept: application/json" \
          -H "Travis-API-Version: 3" \
          -H "Authorization: token $TRAVIS_TOKEN" \
          -d "$body" \
          "https://api.travis-ci.org/repo/${org}%2F${repo}/requests"
 }

Puede configurar su propia versión de Travis para su bifurcación.
Sam Brightman

Puede construir la rama de su bifurcación desde la que se realiza la solicitud de extracción.
Sam Brightman

La rama de tu RP y la RP son esencialmente lo mismo, ¿verdad? Si upstream tiene otros cambios desde que realizó el PR, seguro, necesita cambiar la base para estar 100% seguro. Pero eso tendría que suceder de todos modos, y GitHub debería mostrar un botón de rebase en la interfaz de usuario que desencadenaría una nueva compilación de relaciones públicas en ese caso.
Sam Brightman

11

Travis ahora ofrece una forma de activar una compilación "personalizada" desde su interfaz de usuario web. Busque el botón de menú "Más opciones" en el lado derecho cerca de la parte superior de la página de su proyecto.

Más opciones → Trigger Build

Luego se le presentará un cuadro de diálogo en el que puede elegir la rama y personalizar la configuración:

Cuadro de diálogo de compilación personalizada

En el momento en que escribo esto, está en versión beta y parece estar un poco defectuoso (pero espero que solucionen los problemas pronto).


2
Gracias. Para mí, es la mejor respuesta porque una construcción de activación también cambia la ID de la construcción, no con una simple reconstrucción (a través del botón). Si usa la identificación de Travis en sus scripts, es importante saberlo.
Karima Rafes

2
Esto debe ser más alto
Gillespie

8

Si instala Travis CI Client , puede usarlo travis restart <job#>para volver a ejecutar manualmente una compilación desde la consola. Puede encontrar el último trabajo # para una sucursal usandotravis show <branch>

travis show master
travis restart 48 #use Job number without .1
travis logs master

Travis CI Client

ACTUALIZACIÓN: Lamentablemente, parece que esto no inicia una nueva compilación utilizando la última confirmación, sino que simplemente reinicia una compilación anterior utilizando el estado anterior del repositorio.


No entiendo la nota de actualización. Desde el comando parece que puede definir qué trabajo reiniciar. Entonces, la pregunta está por activar un trabajo, presumiblemente la mayoría de las personas querrían hacer esto si su confirmación ya se activó, pero quieren probarlo nuevamente para así ... Oh, supongo que no pueden desactivar los activadores de ramificación de confirmación y construir manualmente HEAD.
redanimalwar

@redanimalwar, un caso de uso común es forzar una compilación de CI cuando no puede detectar cambios o está en un período de silencio.
Sam Brightman

4

Debo mencionar aquí que ahora tenemos un medio para activar una nueva compilación en la web. Ver https://blog.travis-ci.com/2017-08-24-trigger-custom-build para más detalles.

TL; DR Haga clic en "Más opciones" y elija "Activar compilación".


Esto no funciona si no tiene acceso de escritura / colaborador al repositorio y desea volver a ejecutar la compilación para su propia solicitud de extracción. No veo esa opción. Y al probar la CLI de Travis, dice, build #xxxx has been restarted pero si miras en la página web no ves que ocurra ninguna compilación
bitek

3

Si la compilación nunca se produjo (tal vez no activó el interruptor de compilación de solicitud de extracción a tiempo), puede marcar la solicitud de extracción en Github como cerrada y luego marcarla como abierta y se activará una nueva compilación.


1

Acabo de activar las pruebas en una solicitud de extracción para volver a ejecutarlas haciendo clic en 'actualizar rama' aquí: componente de pruebas de verificación de github


1

Esto es lo que funcionó para mí para desencadenar una reconstrucción en un RP que Dependabot había abierto, pero falló debido a errores en .travis.yml:

  1. Cerrar el PR
  2. Espere a que Dependabot haga un comentario ("OK, no le volveré a notificar sobre esta versión, pero me pondré en contacto cuando haya una nueva versión disponible"). Eliminará su rama.
  3. Restaurar la rama que Dependabot eliminó (algo así como dependabot/cargo/tempfile-3.0.4).
  4. Abre el PR nuevamente

1

Asegúrese de iniciar sesión en Travis primero. El botón de reconstrucción no aparece hasta que haya iniciado sesión. Sé que esto es obvio, pero alguien también se tropezó con él ;-)


0

A veces sucede que el servidor cometió algunos errores. intente cerrar sesión / iniciar sesión y todo podría estar bien en ese momento. (Sí, me pasó esta tarde).


-1

Simlpy cierre y vuelva a abrir el PR si no tiene acceso de escritura.


No, POR FAVOR, no deje solicitudes de recolección de basura, es molesto. Simplemente inserte nuevas confirmaciones en su rama (por ejemplo, puede cambiar la fecha de confirmación: git commit --amend --date = now && git push -f).
intgr
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.