Come eseguire travis-ci localmente

Ho appena aderito a un progetto e sono nuovo di Travis-ci. Preferirei non dover spingere ogni piccola modifica a .travis.yml e ogni piccola modifica apportata all’origine per eseguire la build. Con jenkins puoi scaricare jenkins ed eseguire localmente. Travis offre qualcosa di simile?

Nota: ho visto il travis-ci cli e l’ho scaricato, ma tutto ciò che sembra fare è chiamare la loro API, che poi si connette al mio repository github, quindi se non spingo, non importa che ricomincio l’ultima build.

Questo processo ti consente di riprodurre completamente qualsiasi lavoro di costruzione di Travis sul tuo computer. Inoltre, è ansible interrompere il processo in qualsiasi momento e eseguire il debug. Di seguito è riportato un esempio in cui riproduco perfettamente i risultati del lavoro n. 191.1 su php-school / cli-menu .

Prerequisiti

  • Hai un repo pubblico su GitHub
  • Hai eseguito almeno una build su Travis
  • Hai Docker installato sul tuo computer

Configura l’ambiente di costruzione

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

  1. Crea il tuo ID di build temporaneo

     BUILDID="build-$RANDOM" 
  2. Visualizza il log di costruzione , apri il pulsante mostra più per INFORMAZIONI LAVORO e trova la riga INSTANCE, incollalo qui ed esegui:

     INSTANCE="travisci/ci-garnet:packer-1512502276-986baf0" 
  3. Esegui il server senza testa

     docker run --name $BUILDID -dit $INSTANCE /sbin/init 
  4. Esegui il client allegato

     docker exec -it $BUILDID bash -l 

Esegui il lavoro

Ora sei dentro il tuo ambiente Travis. Esegui su - travis per iniziare.

Questo passaggio è ben definito ma è più noioso e manuale. Troverai tutti i comandi che Travis esegue nell’ambiente. Per fare ciò, cerca tutto nella colonna di destra che ha un tag come 0.03s .

inserisci la descrizione dell'immagine qui

Sul lato sinistro vedrai i comandi attuali. Esegui questi comandi, in ordine.

Risultato

Ora è un buon momento per eseguire il comando di history . È ansible riavviare il processo e riprodurre questi comandi per eseguire lo stesso test su una base di codice aggiornata.

  • Se il repository è privato: ssh-keygen -t rsa -b 4096 -C “YOUR EMAIL REGISTERED IN GITHUB” quindi cat ~/.ssh/id_rsa.pub e fai clic qui per aggiungere una chiave
  • Cordiali saluti: puoi git pull dalla finestra mobile per caricare i commit dalla tua casella di sviluppo prima di inviarli a GitHub
  • Se vuoi cambiare i comandi di Travis, allora è TUA la tua responsabilità capire come questo si traduca in un lavoro .travis.yml .
  • Non so come ripulire l’ambiente Docker, sembra complicato, forse questo perde memoria

Travis-ci offre una nuova infrastruttura basata su container che utilizza la finestra mobile. Questo può essere molto utile se stai provando a risolvere un build travis-ci riproducendolo localmente. Questo è tratto dalla documentazione di Travis CI.

Risoluzione dei problemi localmente in un’immagine Docker

Se hai difficoltà a rintracciare il problema esatto in una build, spesso aiuta a eseguire la build localmente. Per fare ciò è necessario utilizzare la nostra infrastruttura basata su container (ad esempio, sudo: false nel file .travis.yml ) e sapere quale immagine Docker si sta utilizzando su Travis CI.

Esecuzione localmente di un’immagine mobile del contenitore basata sul contenitore

  1. Scarica e installa il Docker Engine.
  2. Seleziona un’immagine da Docker Hub . Se non stai utilizzando una selezione di immagini specifiche della lingua ci-ruby . Aprire un terminale e avviare una sessione Docker intertriggers utilizzando l’URL dell’immagine:

     docker run -it travisci/ci-ruby /bin/bash 
  3. Passa all’utente travis :

     su - travis 
  4. Clona il tuo repository git nella cartella / dell’immagine.
  5. Installa manualmente eventuali dipendenze.
  6. Esegui manualmente il tuo comando di costruzione Travis CI.

AGGIORNAMENTO: ora ho una risposta completa, chiavi in ​​mano, all-in-one, vedere https://stackoverflow.com/a/49019950/300224 . Ci sono voluti solo 3 anni per capirlo!

Secondo la documentazione di Travis: https://github.com/travis-ci/travis-ci esiste un insieme di progetti che colludono per fornire il servizio web Travis CI che conosciamo e amiamo. Il seguente sottoinsieme di progetti sembra consentire la funzionalità locale di make test usando il .travis.yml nel tuo progetto:

travis-build

travis-build crea lo script di compilazione per ogni lavoro. Prende la configurazione dal file .travis.yml e crea uno script bash che viene quindi eseguito nell’ambiente di costruzione da travis-worker.

Travis-libri di cucina

travis-cookbooks detiene i libri di cucina dello Chef che vengono utilizzati per il provisioning degli ambienti di costruzione.

travis-lavoratore

travis-worker è responsabile dell’esecuzione degli script di compilazione in un ambiente pulito. Trasmette l’output del registro a travis-logs e invia gli aggiornamenti di stato (build starting / finish) a travis-hub.

(Gli altri sottoprogetti sono responsabili della comunicazione con GitHub, la loro interfaccia web, la posta elettronica e la loro API.)

puoi provare https://github.com/jolicode/JoliCi

usa la finestra mobile per provare ad essere un sostituto locale per travis-ci. dovrebbe supportare php, nodejs e ruby. se c’è qualcosa che manca puoi inserire un bug nella pagina del progetto

Simile a Scott McLeod ma questo genera anche uno script bash per eseguire i passaggi da .travis.yml.

Risoluzione dei problemi localmente in Docker con uno script Bash generato

 # 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 

Usa wwtd (cosa che farebbe travisare) ruby gem per eseguire test sulla tua macchina locale all’incirca come faranno con Travis.

Ricreerà la matrice di build ed eseguirà ogni configurazione, ottimo per la verifica dell’assetto sanitario prima di premere.

 gem i wwtd wwtd 

Non sono sicuro di quale fosse il motivo originale per cui eseguivi Travis a livello locale, se volessi semplicemente giocarci, quindi smetti di leggere qui perché è irrilevante per te.

Se hai già esperienza con Travis ospitato e desideri ottenere la stessa esperienza nel tuo datacenter, continua a leggere.

Da dicembre 2014, Travis CI offre una versione aziendale locale.

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

Anche i prezzi fanno parte dell’articolo:

La licenza è fatta per posti, dove ogni licenza include 20 utenti. Il prezzo parte da $ 6.000 per licenza, che include 20 utenti e 5 build simultanei. C’è un’opzione premium con build illimitate per $ 8.500.

Puoi provare Trevor , che usa Docker per eseguire la build di Travis.

Dalla sua descrizione:

Ho spesso bisogno di eseguire test per più versioni di Node.js. Ma non voglio passare manualmente le versioni usando n / nvm o spingere il codice su Travis CI solo per eseguire i test.

Ecco perché ho creato Trevor. Legge .travis.yml ed esegue test in tutte le versioni richieste, proprio come Travis CI. Ora puoi testare prima di spingere e mantenere pulita la cronologia git.