2014-06-26 19 views
8

Attualmente sto configurando un server di build nel nostro ufficio e mi chiedevo quale fosse la procedura migliore per questo. So che ogni situazione richiede un approccio diverso e ci sono un milione di modi per raggiungere lo stesso obiettivo, ma dal momento che sono un nuovo arrivato a Jenkins e il concetto di server di sviluppo in generale, mi chiedevo se stavo facendo questo 'giusto '.Quali sono le best practice di Jenkins con la creazione con Grunt e l'implementazione con Capistrano?

La nostra azienda si concentra sulla costruzione di siti Web per vari clienti con varie piattaforme come WordPress o Magento. Ora ho la seguente configurazione:

Spingiamo le modifiche su un master o ramo di gestione temporanea in Git. Jenkins sondaggi questi rami ed effettua le seguenti quando viene rilevato un cambiamento:

  • Estrarre il repository da Git (master in questo esempio)
  • Cassa un ramo chiamato build-master
  • reimposta questo ramo per origin/master
  • Fa un npm install se viene trovato un package.json.
  • Viene trovato un grunt build se viene trovato uno Gruntfile.js.
  • (qui c'è spazio per altre cose come i test PHPUnit o casperJS)
  • commit delle modifiche e lo spinge di nuovo a origin/build-master.
  • Esegue un cap build-master deploy per consentire a Capistrano di gestire la distribuzione sul server remoto.

Ora mi chiedevo se questo è un modo "corretto" di utilizzare un server di build. Mi imbatto in alcuni problemi logici. Ad esempio:

Software fornitore per esempio. Quando ho diverse librerie JS con Bower ad esempio (che si trovano in una gilda ignorata da G23 js/vendor), posso concatenarle e renderle uguali in un file JS minificato in modo che si impegnino nello spazio build-master -repository (per Capistrano). Ma quando ho librerie PHP (con Composer per esempio) non sono sicuro di come gestirlo. Questi si trovano in una cella di tipo ignorato php/vendor, ma devono essere inclusi nello build-master -branch in modo che vengano distribuiti sul server live. Attualmente lo sto facendo aggiungendo un .gitignore.build al mio repository, che include la cartella php/vendor, e sovrascrivi lo esistente .gitignore con questo in precedenza prima di eseguire il commit e premere su origin/build-master.

E/o:

file compilati. Quando non voglio includere alcuni file (come i file CSS generati da SASS per esempio), li inserisco nello .gitignore. Ma ancora una volta, quando Capistrano lo distribuirà, voglio che il file CSS compilato, concentrato e minificato sia nel mio repository, altrimenti non è inserito nel mio server di produzione.

Qualcuno può dirmi se sto costruendo e distribuendo nel modo in cui dovrebbe essere? O sono davvero troppo complicato qui per me? Sono davvero interessato a come le persone con maggiore esperienza con questo stanno utilizzando Jenkins, Grunt, Bower, Composer, Capistrano, ecc. Nel loro processo di compilazione.

+0

Una cosa su cui mi sono interrogato sta eseguendo i binari. Visto che lo fai, mi chiedo se lavori per assicurarti che il checkout di uno sviluppatore rimanga snello, senza i binari? – AnneTheAgile

risposta

0


Sto cercando la stessa risposta esatta. Sono nella stessa situazione e mi chiedo come si possa fare con la migliore configurazione di avvio.
Poiché ti stai chiedendo l'uso di grunt per la distribuzione, c'è questo tutorial che può essere utile per il tuo, spero che questo dia spunti iniziali: https://weluse.de/blog/continuous-deployment-with-yeoman-and-jenkins.html
Inoltre, sono interessato se hai qualche feedback dal tuo attuale progetto.