Cercando di capire cosa fa Travis CI e quando dovrebbe essere usato


86

Sono molto nuovo su Git e ho intenzione di contribuire a qualche progetto open-source su GitHub dopo aver scoperto un piccolo errore in esso. Dopo averlo biforcato e aver corretto l'errore, ho proposto una richiesta pull e ho notato che si è verificato questo:

Fallito: la compilazione dell'elemento della configurazione di Travis non è riuscita

Esaminando i dettagli ho scoperto che era causato da Could not find .travis.yml, il che aveva perfettamente senso poiché non avevo effettuato l'accesso a Travis Cl con e non avevo aggiunto .travis.yml al repository.

Questa è la prima volta che sento parlare di Travis e di ciò che è noto come integrazione continua. E suona abbastanza bene, quindi per saperne di più, l'ho cercato su Wikipedia.

Travis CI è un servizio di integrazione continua distribuito e ospitato utilizzato per creare e testare progetti ospitati su GitHub. Travis CI rileva automaticamente quando un commit è stato effettuato e inviato a un repository GitHub che utilizza Travis CI e ogni volta che ciò accade, proverà a creare il progetto ed eseguire test . Ciò include i commit su tutti i rami, non solo sul ramo principale.

La mia attuale comprensione di Travis CI è che ciò che fa è automaticamente spingere il progetto su git commit -am ".."e non capisco bene una parte di esso.

  1. Costruendo il progetto ed eseguendo i test , quali test verranno eseguiti? E come "costruirà" il progetto? (come compilarlo in binario?)

  2. Afferma che "Questo include i commit su tutti i branch" - ma cosa succede se non voglio impegnarmi su tutti i branch?

  3. Va bene se non uso affatto Travis Cl? In quali circostanze è meglio usarlo (o deve essere usato)?

Risposte:


104

Il modo più semplice per spiegare Travis CI è che esegue i test del tuo programma ogni volta che ti impegni su GitHub (questo può essere configurato in molti modi e puoi sempre disabilitare le build su alcuni rami). Il punto è che spesso puoi scoprire molto rapidamente se il tuo commit ha rotto qualcosa e risolverlo prima che diventi un problema. Consiglierei di eseguire Travis CI su ogni repository GitHub in cui sono presenti unit test e utilizza un linguaggio di programmazione supportato da Travis CI. Poiché impostare Travis CI è molto semplice, normalmente non vedo una buona ragione per non usarlo, a meno che non ti interessi se hai superato i test nel tuo programma o meno. Sentiti libero di lasciare un commento se hai altre domande. Puoi leggere di più su Travis CI qui .


1
Dice che è "gratuito" per i progetti open source, ma dice che le tue prime 100 build sono gratuite. Quindi ... non è gratuito allora? Anche sviluppando da solo potrei arrivare a 100 build molto rapidamente. Sto leggendo questo sbagliato? Non riesco a trovare nessuna informazione da nessuna parte. @ joshua-anderson
Mark Pieszak - Trilon.io

2
È sempre gratuito per i progetti open source. Per i repository privati, ottieni 100 build gratuite prima di dover iscriverti a un piano a pagamento.
joshua-anderson

Non è il tipico flusso di lavoro git che estrae il commit più recente e si fonde localmente, testando e quindi spingendo in remoto?
Ben

E le persone che fanno sviluppo web con strumenti cli per Angular, React o Vue? I framework forniscono transpiling istantaneo e feedback di test durante l'esecuzione del server di sviluppo. C'è qualche differenza tra questo e Travis CI, o dovrei dire tra l'esecuzione di unit test prima di impegnarsi e l'utilizzo di CI in generale?
OzzyTheGiant

Quindi travis non ha senso, posso facilmente eliminare travis usando git commit hook e block push che restituiscono errori dal comando di test.
betoharres

16

Dato che hai già scoperto cos'è Travis-CI, vorrei indicare direttamente le domande che hai.

Costruendo il progetto ed eseguendo i test, quali test verranno eseguiti? E come "costruirà" il progetto? (come compilarlo in binario?)

Nel .travis.ymlfile a stai specificando il tuo sistema operativo, il linguaggio di programmazione, il ramo del repository, il nome del file di progetto e altri dettagli. Leggendo questo file, Travis-CI utilizzerà i compilatori specifici installati sul proprio server per compilare il nostro codice. Probabilmente avranno lo stesso meccanismo che abbiamo per Github. Per la prima volta, potrebbero estrarre il codice [se abbiamo specificato rami specifici, potrebbero estrarre il codice solo da quei rami]. Inoltre, ci siamo autenticati per utilizzare il nostro account con Travis-CI, ogni volta che effettuiamo un commit, dovrebbe esserci una notifica dovrebbe essere attivata al server Travis-CI, quindi verrà riconosciuto come un commit e inizierà la compilazione.


Afferma che "Questo include i commit su tutti i branch" - ma cosa succede se non voglio impegnarmi su tutti i branch?

È possibile specificare diversi rami o il masterramo. E dovrebbe compilare solo i rami specifici specificati nel .travis.ymlfile.


Va bene se non uso affatto Travis Cl? In quali circostanze è meglio usarlo (o deve essere usato)?

Sì, va bene. Non un grande affare. Ma quali vantaggi ti mancheranno non utilizzando questo motore facile da integrare con il tuo repository. Ogni volta che ti impegni è possibile che manchi qualcosa e che non possa essere compilato a causa di un codice. Come lo saprai? Quindi, dovresti usare Travis-CI.


Ho scritto un post sul blog che puoi leggere per sapere cos'è Travis-CI, Continuous Integrations e come collegare Travis-CI con il tuo Github Repo. L'ho scritto per un repository Swift.


2

Penso di essere in una posizione molto buona per rispondere alla tua domanda poiché al momento sto imparando Travis CI. Il primo problema che hai riscontrato in primo luogo è perché il progetto a cui stai contribuendo utilizza Travis CI per testare e costruire il progetto. Se il progetto non utilizza Travis CI, non ti saresti imbattuto in tale errore.

La soluzione è controllare il sito web di Travis CI e scoprire come funziona e come ha influenzato il progetto su cui stai lavorando. Questo ti metterà in un'ottima posizione per capire cosa non funziona nel tuo codice e come risolverlo.

Per rispondere alla prima domanda sulla costruzione del progetto.

Costruendo il progetto ed eseguendo i test, quali test verranno eseguiti? E come "costruirà" il progetto? (come compilarlo in binario?)

Significa come il codice sorgente viene elaborato prima dell'uso / test. Dipende dalla lingua che stai scrivendo. Ad esempio, se il progetto sta scrivendo con PHP. Non costruirà il mio codice in un file eseguibile come il codice sorgente C / C ++. Eseguirà il mio codice PHP sull'interprete PHP e lo testerà mentre lo fa. Continua comunque il normale processo di compilazione che la tua lingua preferita attraversa.

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.