Il mio posto di lavoro utilizza Hudson per le sue build quotidiane, con diversi build slave (uno Linux, uno Windows, un Mac) che controllano la nostra base di codice completa da svn e costruiscono la nostra app a mezzanotte ogni giorno. Tutto funziona abbastanza bene.Come posso assicurarmi che tutti i miei schiavi hudson compilino la stessa revisione svn per la build giornaliera?
C'è un problema occasionale che accade però ... a volte uno sviluppatore lavorerà fino a tardi e controllerà in una modifica a svn subito dopo mezzanotte. Quando ciò accade, è possibile che alcuni degli schiavi di build giornalieri eseguano il loro 'svn checkout' prima che il commit svn venga elaborato, mentre altri slave di build lo faranno dopo che il commit è stato elaborato. Quando ciò accade, ci ritroviamo con diverse revisioni costruite su piattaforme diverse ... ad es. la build del Mac potrebbe creare una versione SVN della revisione 5555, mentre la build di Windows finisce con l'essere una versione della revisione SVN 5556. È un problema, dal momento che vogliamo che tutte le build giornaliere di un dato giorno siano basate sulla stessa base di codice.
Suppongo che un modo per evitare questo è vietare agli sviluppatori di impegnarsi in svn tra le 23:30 e le 12:30, ma preferirei una soluzione più elegante che non si basa sul comportamento degli sviluppatori. Ce n'è uno? In particolare, se c'è un modo per dire a hudson di controllare la revisione del codice che era corrente a mezzanotte del giorno corrente (es. "Svn co -r {" the-current-date "}") invece di fare il check-out TESTA, penso che potrebbe fare il trucco.
C'è un modo comune/facile per gestire questo problema?
Inizia la costruzione alle 1 di notte? :) –
lol, era una buona scelta. Spero che non abbiano un problema, in modo che gli sviluppatori siano lì fino alle 13 o anche più tardi. ;) –