2016-05-31 32 views
8

Vorrei installare la distribuzione basata sui rami utilizzando Travis-CI e Github.Travis: diversi `script` per diversi rami?

I.e. - Se abbiamo creato la build da develop - quindi eseguire /deploy.rb con nome host ENV DEV, se master - quindi ./deploy.rb con nome host PROD e così via.

una sola idea che ho trovato - è quello di verificare $TRAVIS_BRANC variabile e poi eseguire lo script, come:

language: php 
install: 
    - true 
script: 
    - test $TRAVIS_BRANCH = "develop" && ./ci/deploy.rb envdev.tld 
    - test $TRAVIS_BRANCH = "master" && ./ci/deploy.rb envprod.tld 

Ma questa soluzione sembra un po 'strano come per me. Qualche altra possibilità per rendersene conto?

Qualsiasi consiglio/link apprezzato.

risposta

10

Travis-CI crea sempre build basati sullo .travis.yml nel ramo che si sta spingendo. Come soluzione, è possibile quindi mantenere diversi file .travis.yml nei vari rami.

Se si configura regolarmente tra i rami, ciò potrebbe tuttavia comportare modifiche involontarie tra i rami (se si uniscono le modifiche dello .travis.yml di un ramo all'altro). Se questa è una preoccupazione, la tua soluzione è probabilmente più sicura.

per garantire che solo i rami specifici (ad esempio develop e master) sono costruiti, è possibile whitelist i rami nel vostro .travis.yml.

Quando si utilizza la soluzione esistente, è possibile semplificare lo script travis.yml. Probabilmente ha senso spostare la logica per selezionare il target di distribuzione corretto nello script ci/deploy.rb (o anche aggiungere uno script di wrapper separato che chiami dallo .travis.yml). In questo modo, hai una sola riga script nel tuo .travis.yml che non ha nemmeno bisogno di cambiare se cambi i target di distribuzione.

In alternativa, per assicurarsi di non avere prove di mancanza con la struttura esistente, si potrebbe anche usare qualcosa di simile:

script: 
    - if [ "$TRAVIS_BRANCH" = "develop" ]; then ./ci/deploy.rb envdev.tld; fi 
    - if [ "$TRAVIS_BRANCH" = "master" ]; then ./ci/deploy.rb envprod.tld; fi 
Problemi correlati