Attivare una ricostruzione Travis-CI senza eseguire il commit?


414

Utilizzando Travis-CI, è possibile attivare una ricostruzione senza inviare un nuovo commit a GitHub?

Caso d'uso: una compilazione non riesce a causa di un'esternalità. La fonte è effettivamente corretta. Costruirebbe OK e passerebbe se fosse semplicemente rieseguito.

Ad esempio, un apt-geterrore a causa di un server di pacchetti inattivo, ma il server esegue nuovamente il backup. Tuttavia, lo stato di compilazione è "bloccato" in "non riuscito" fino a quando non viene inviato un nuovo commit.

C'è un modo per spingere Travis-CI a fare un'altra build, oltre a spingere un commit "fittizio"?

Risposte:


458
  • Se hai accesso in scrittura al repository : nella schermata dei dettagli della build, c'è un pulsante ↻ Riavvia build . Inoltre in "Altre opzioni" è presente una voce di menu di creazione trigger.

    Nota : le estensioni del browser come Ghostery potrebbero impedire la visualizzazione del pulsante di riavvio. Prova a disabilitare l'estensione o la Travis CI bianca.

    Nota2 : se la .travis.ymlconfigurazione è stata modificata in upstream, facendo clic sul pulsante ricostruisci verrà eseguito travis con la vecchia configurazione. Per applicare le modifiche a monte per la configurazione di Travis è necessario aggiungere commit a PR o chiuderlo / riaprirlo.

  • Se hai inviato una richiesta pull : puoi chiudere il PR e riaprirlo . Ciò attiverà una nuova build.

Riavvia build:

Riavvia Build Screen Shot

Trigger Build:

Trigger Build Screen Shot


1
L'ho trovato e usato in altri casi. Ma avrei potuto giurare di aver avuto un caso in cui aveva commesso un errore per il motivo che ho descritto sopra e il menu a ingranaggi mancava di quell'opzione. Forse era un colpo di fortuna una tantum, o forse mi sbagliavo. Ad ogni modo, penso che tu abbia risposto a come dovrebbe funzionare, quindi andrò avanti e segnerò la tua risposta come accettata. Grazie!
Greg Hendershott,

3
Se guardo la cronologia di compilazione di uno qualsiasi dei progetti che possiedo, errato o fallito, ha un pulsante di riavvio
jbtule

20
Penso che un caso complicato sia quello in cui invii una richiesta pull per il progetto di qualcun altro, e questo ha commesso un errore per motivi non correlati al tuo PR di per sé, e sai che avrebbe successo se potessi semplicemente spingerlo per riprovare. È comprensibile il motivo per cui non puoi (non il tuo progetto), ma anche il motivo per cui vorresti (il tuo PR "non funziona correttamente").
Greg Hendershott,

94
Non dimenticare che devi essere registrato per vedere questo: P
Michael J. Calkins

8
E devi avere accesso in scrittura alla riproduzione di github. Quindi questo non funzionerà per le forcelle spinte a monte.
Izhaki,

206

Se apri la scheda Impostazioni per il repository su GitHub, fai clic su Integrazioni e servizi , trova Travis CI e fai clic su Modifica , dovresti vedere un pulsante Servizio di prova . Questo attiverà una build.


6
Penso che travis-ci abbia rimosso il pulsante di riavvio build, quindi questo è l'unico modo che ha funzionato per me nel modo giusto. Esegue due build però ...
Blaise,

1
@Blaise per caso usi Ghostery (o simile)? Prova a disabilitarlo. Per me, questo fa riapparire il pulsante Riavvia Build.
Greg Hendershott,

29
Questo funziona quando si attiva inizialmente l'edificio CI Travis per un repository. Il pulsante "ricarica build" non esiste per un repository che non ha build precedenti.
Brian J. Miller,

12
Una nota per gli idioti come me: apri Settingsnel repository su Github , non sulla pagina repository di Travis! Non riesco a credere di aver sprecato 20 minuti cercando di trovare Service Hookssulla pagina di Travis. :(
John Red

83

So che hai detto senza spingere un commit, ma qualcosa di utile, se stai lavorando su un ramo diverso dal master, è impegnare un commit vuoto.

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

Alla fine puoi rimodellare e rimuovere squash / rimuovere i commit vuoti e funziona su tutti i git git :)


1
È geniale, grazie! Voglio solo aggiungere che ho dovuto riformulare per spostare il commit "Trigger" nella storia; altrimenti eliminerebbe semplicemente la nuova build dopo la rimozione del commit "Trigger".
pmos,

63
allo stesso modo, puoi modificare il commit esistente e forzare push: git commit --amend --no-edit && git push -f
grahamrhay

4
@grahamrhay è il migliore per innescare una build PR quando non sei il proprietario del repository di destinazione, mantiene i contenuti, non è necessario unire o riformulare o fare qualcosa. Si prega di renderlo una risposta in modo che sia possibile votarlo in modo più visibile.
TWiStErRob

Ho creato un repository a cui non avevo accesso, e questa è stata l'unica cosa che ha funzionato per me perché Travis non aveva build che potevo riavviare sul mio fork appena creato.
Nick McCurdy,

1
@TWiStErRob Qualcun altro ha scritto una risposta del genere di seguito.
Franklin Yu

30

Ho trovato un altro modo per forzare la riesecuzione di build CI e altri trigger:

  1. Esegui git commit --amend --no-editsenza modifiche. Ciò ricrea l'ultimo commit nel ramo corrente.
  2. git push --force-with-lease origin pr-branch.

8
Non lo consiglierei. Modifica in modo distruttivo la storia in modo che possa confondere le persone che hanno rami basati su questo commit e la --amendbandiera potrebbe anche non cambiare il HEADcommit in alcuni casi.
Nick McCurdy,

7
Lo trovo bene per le rare occasioni in cui hai bisogno solo di webhook BUMP per un PR. Nessuno dovrebbe davvero uscire dalle richieste pull, quindi nessuno farà affidamento sull'ID commit esatto.
Vlad Frolov,

4
andare per git push --force-with-lease origin pr-branchin modo da non accidentalmente nucleare di qualcun altro cambia
binarymason

21

Accedi a Travis e vai alla pagina di costruzione. Vedrai il pulsante "Riavvia build" nell'angolo in alto a destra, accanto all'icona a forma di ingranaggio:

Screengrab

Nota: è necessario disporre dell'accesso in scrittura al repository GitHub collegato affinché funzioni.


11
Questa risposta è sostanzialmente la stessa di quella accettata ed è stata presentata molto più tardi.
Dan Dascalescu il

5
@DanDascalescu non aveva uno screenshot quando ho pubblicato. E solo ora mi rendo conto che puoi modificare la risposta di qualcun altro! ;)
Juan,

1
@Juan puoi ancora eliminare questa risposta che ti suggerisco di fare poiché aggiunge un ingombro inutile.
Rafal Enden,

20

Se hai un nuovo progetto su GitHub che ha .travis.yml, ma non è mai stato testato, puoi eseguire test senza eseguire il commit in questo modo:

  1. abilitare il test nelle impostazioni di Travis CI
  2. apri la pagina del progetto su GitHub
  3. apri impostazioni -> webhook e servizi
  4. trova Travis CI nei servizi e premi il pulsante modifica
  5. premere "Servizio di prova"

3
Questa è la risposta per quelli con progetti appena creati.
Eric MORAND,

16

È possibile farlo utilizzando l' interfaccia della riga di comando di Travis . Come descritto nella documentazione , installare prima lo strumento CLI, quindi:

travis login --org --auto
travis token

È possibile conservare questo token in una variabile di ambiente TRAVIS_TOKEN , purché il file in cui lo si conserva non sia controllato da qualche parte in pubblico.

Uso questa funzione per inviare i trigger:

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"
 }

Puoi configurare la tua build Travis per il tuo fork.
Sam Brightman,

È possibile creare il ramo della forcella da cui viene effettuata la richiesta pull.
Sam Brightman,

Il ramo del tuo PR e il PR sono essenzialmente la stessa cosa, giusto? Se l'upstream ha altre modifiche da quando hai effettuato il PR, certo, è necessario modificarlo per essere sicuro al 100%. Ma ciò dovrebbe accadere comunque, e GitHub dovrebbe mostrare un pulsante di rebase nell'interfaccia utente che in tal caso innescerebbe una nuova build del PR.
Sam Brightman,

11

Travis ora offre un modo per attivare una build "personalizzata" dalla propria interfaccia utente Web. Cerca il pulsante del menu "Altre opzioni" sul lato destro vicino alla parte superiore della pagina del progetto.

Altre opzioni → Trigger Build

Ti verrà quindi presentata una finestra di dialogo in cui puoi scegliere il ramo e personalizzare la configurazione:

Finestra di dialogo Creazione personalizzata

Al momento sto scrivendo questo è in beta, e sembra essere leggermente difettoso (ma mi aspetto che risolveranno presto i problemi).


2
Grazie. Per me, è la risposta migliore perché un trigger build modifica anche l'ID build, non con una semplice ricostruzione (tramite il pulsante). Se usi l'id Travis nei tuoi script, è importante saperlo.
Karima Rafes,

2
Questo deve essere più in alto
Gillespie,

8

Se si installa Travis CI Client è possibile utilizzare travis restart <job#>per rieseguire manualmente una build dalla console. È possibile trovare l'ultimo lavoro # per un ramo utilizzandotravis show <branch>

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

Client Travis CI

AGGIORNAMENTO: Purtroppo sembra che questo non avvii una nuova build utilizzando l'ultimo commit, ma riavvia semplicemente una build precedente utilizzando lo stato precedente del repository.


Non capisco la nota di aggiornamento. Dal comando sembra che tu possa definire quale lavoro riavviare. Quindi la domanda sta per innescare un lavoro, presumibilmente la maggior parte delle persone vorrebbe farlo se il loro commit è già stato attivato, ma vogliono testarlo di nuovo in modo da ... Oh, immagino che tu non possa disattivare i trigger di branch di commit e costruire manualmente HEAD.
redanimalwar,

@redanimalwar un caso d'uso comune sta forzando una build CI quando non riesce a rilevare le modifiche o si trova in un periodo di silenzio.
Sam Brightman,

4

Vorrei menzionare qui che ora abbiamo un modo per innescare una nuova build sul web. Vedi https://blog.travis-ci.com/2017-08-24-trigger-custom-build per i dettagli.

TL; DR Fai clic su "Altre opzioni" e scegli "Trigger build".


Questo non funziona se non si ha accesso in scrittura / colaboratore al repository e si desidera rieseguire la compilazione per la propria richiesta pull. Non vedo questa opzione. E quando provi la CLI di Travis, dice build #xxxx has been restarted che se guardi nella pagina web non vedi che sta accadendo alcun build
bitek

3

Se la generazione non si è mai verificata (forse non hai attivato l'interruttore di generazione Pull-Request in tempo), puoi contrassegnare la richiesta di pull su Github come chiusa, quindi contrassegnarla come aperta e verrà attivata una nuova build.


1

Ho appena attivato i test su una richiesta pull da rieseguire facendo clic su "Aggiorna ramo" qui: componente test test github


1

Ecco cosa ha funzionato per me per innescare una ricostruzione su un PR che Dependabot aveva aperto, ma non è riuscito a causa di errori in .travis.yml:

  1. Chiudi il PR
  2. Attendi che Dependabot commenti ("OK, non ti avviserò più di questa versione, ma ti contatterò quando sarà disponibile una nuova versione."). Rimuoverà il suo ramo.
  3. Ripristina il ramo Dependabot rimosso (qualcosa del genere dependabot/cargo/tempfile-3.0.4).
  4. Apri di nuovo il PR

1

Assicurati di accedere prima a Travis. Il pulsante ricostruisci non viene visualizzato fino a quando non hai effettuato l'accesso. So che questo è ovvio, ma qualcuno ha appena inciampato anche su di esso ;-)


0

a volte capita che il server abbia commesso degli errori. prova a disconnetterti / accedi e tutto potrebbe essere giusto allora. (Sì, è successo questo pomeriggio a me.)


-1

Basta chiudere e riaprire il PR se non si dispone dell'accesso in scrittura.


No, PER FAVORE non lasciare richieste di immondizia, è fastidioso. Basta inviare nuovi commit nel proprio ramo (ad esempio è possibile modificare la data di commit: git commit --amend --date = now && git push -f).
intgr,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.