2015-04-19 4 views
12

Il progetto su cui sto lavorando è un plugin jQuery. Sono riuscito a ottenere da Travis CI la costruzione di un progetto di test utilizzando Gulp/NodeJS con successo. Ora sto cercando di capire quale flusso di lavoro utilizzare per battere il numero di versione.Come si aumenta il numero di versione usando Travis CI?

In TeamCity e MyGet è presente un'impostazione nel server CI per formare un modello di numero di versione che incrementa automaticamente su ogni build, che può essere utilizzato dallo script di build per aggiornare le versioni nei file di distribuzione e per etichettare il repository Git . Tuttavia, nella versione gratuita di Travis CI, non sembra esserci alcuna opzione per il controllo delle versioni.

Ho letto diversi articoli sul dispiegamento continuo con Travis CI, here, here, e here, ma nessuno di loro anche affrontare il tema del controllo delle versioni. Ovviamente, la versione deve essere modificata per il rilascio. Quindi cosa mi manca qui?

Un altro problema che ho notato quando si passa attraverso la documentazione è che ha menzionato che Travis CI non è in grado di aggiornare il repository GitHub. Questo non significa che non sarà in grado di creare un tag Git?

Se non vi è alcun modo per la versione da Travis CI, qual è il flusso di lavoro tipico per il processo di rilascio per tale plug-in? Il controllo delle versioni è sempre fatto manualmente? In tal caso, come potrebbe esserci un "dispiegamento continuo"?

+0

Hai trovato una soluzione alla fine? Sto cercando di implementare lo stesso, aumentando automaticamente il numero di versione sulla distribuzione. – sorin

+0

Ho finito per mantenerlo semplice e andare con [MyGet] (https://www.myget.org/). Non sono stato in grado di abilitare TravisCI perché non sono il proprietario del repository e il proprietario non l'ha fatto. Per il bump della versione, ho usato [gulp-bump] (https://github.com/stevelacy/gulp-bump). Ecco il mio [script Gulp] (https://github.com/snikch/jquery.dirtyforms/blob/master/gulpfile.js#L230) che aggiorna la versione. Si noti che gulp-bump supporta un flusso di lavoro di bump manuale e uno automatizzato, ma supporta solo i file .json di versioning. Ma puoi sempre usare espressioni regolari per fare un salto su qualsiasi altra cosa (vedi il mio script). – NightOwl888

+0

"_ Un altro problema che ho notato durante la documentazione è che ha menzionato che Travis CI non è in grado di aggiornare il repository GitHub_" beh, puoi farlo manualmente all'interno della compilazione, ma poiché l'aggiornamento di un file implica un nuovo commit, tu Finirò con una nuova build – rolebi

risposta

4

Prima che inizi a eseguire le istruzioni nel file .travis.yml, Travis imposterà un gruppo di environment variables (nella VM che sta costruendo il progetto) con varie informazioni sulla build, ad esempio quale ramo è in costruzione e così sopra.

probabilmente avrete bisogno uno di questi:

  • TRAVIS_BUILD_NUMBER: Il numero di build corrente (ad esempio, “4”).
  • TRAVIS_JOB_NUMBER: il numero del lavoro corrente (ad esempio, "4.1").

Ma sarà molto difficile fare qualsiasi cosa sensato se non si ha il controllo del repository, perché avrete bisogno di caricare un file .travis.yml nella root della cartella del codice sorgente, in caso contrario Travis non saprà cosa fare.

+0

Grazie. Io * do * ho il controllo del repository - cioè, sono un collaboratore e posso fare commit su di esso. Ma non ho il permesso di attivare TravisCI. I * do * hanno il permesso di abilitare MyGet quindi sono andato con quello. Non sono sicuro del motivo per cui TravisCI non ha trovato una soluzione alternativa, ma MyGet lo ha fatto. – NightOwl888

2

Se si considera che ogni PR deve finire con l'utente finale senza pensare all'impatto di tali modifiche, i numeri di versione non hanno alcun significato.

Non si fornisce all'utente un modo per sapere se si tratta di una modifica importante che interrompe la compatibilità o una correzione di bug. Non gli permetti di ottenere aggiornamenti senza preoccuparsi della compatibilità con le versioni precedenti.

Attualmente l'id di commit è il numero di versione.

Se si desidera dare un significato ai numeri di versione, è necessario considerare l'impatto delle richieste di pull sull'utente finale (http://semver.org/). Devi scegliere un numero di versione per un PR specifico o un gruppo di PR.

Quindi, in pratica, poiché è necessario "pensare" a un determinato numero di versione per una versione specifica che si desidera consegnare, non è possibile automatizzare questo processo.

rilascio di creazione/tag è la strada da percorrere:)

+0

Uso la creazione di tag, ma voglio che il server CI sia la fonte ufficiale del numero di versione piuttosto che dover eseguire manualmente gli script per incrementare la versione e taggare il repository su ogni build. Questo lavoro manuale è sia non necessario che soggetto a errori e vanifica davvero l'intero scopo dell'utilizzo della CI per quanto mi riguarda. MyGet fa tutto ciò che voglio senza i mal di testa e mi permette di configurarlo anche se non sono il proprietario del repository GitHub, mentre Travis CI non lo fa. – NightOwl888

+0

Fai * molte * assunzioni che spesso non reggono. L'ultima versione su un dato ramo è tipicamente * per definizione * ciò che vuoi che gli utenti usino. – user239558

0

È possibile raggiungere questo obiettivo attraverso la creazione di uno script che creerebbe un file ~/.netrc per accedere al repository. In questo file è possibile specificare qualcosa di simile:

machine https://github.com/xxx/yyy.git 
login <blah> 

E invece di mettere nelle vostre credenziali, è possibile passare un token di accesso github. È possibile utilizzare travis encrypt per registrarlo nel file .travis.yml ed esportare la variabile per l'utilizzo del proprio script. Da lì nello script, è possibile impartire comandi normali git come ad esempio:

git add <some file> 
git commit -m "This is $TRAVIS_BUILD_NUMBER" 
git push origin <branch> 
2

Usa bumped per il controllo delle versioni di rilascio. Quando si è soddisfatti delle modifiche in master, eseguire:

bumped release <major|minor|patch> 

Dopo aver spingere i cambiamenti, direttamente o tramite un PR di rilascio, è possibile verificare la presenza di nuovi tag di Travis CI e pubblicare il pacchetto al registro automaticamente.