Domanda

Sto configurando il lavoro Jenkins per il caricamento di file da Subversion a SFTP. Pubblica su SSH sta andando abbastanza bene, ma si caricatutti i file su ogni build.

Per alcuni progetti abbiamo migliaia di file e il caricamento costa più di 1 ora, quindi non è un'opzione.

Qualcuno può suggerire un modo per caricare solo i file modificati nell'ultima revisione?

È stato utile?

Soluzione

Puoi utilizzare il Subversion Plugin per eseguire il polling delle modifiche SVN ed eseguire un lavoro che non fa niente di particolare. Chiamiamolo YourPollingJob . Quindi chiama l'API Jenkins tramite http in questo modo:

http://[jenkins_server]/api/xml?depth=2&xpath=/hudson/job[name='YourPollingJob']/build[id='BUILD_ID']/changeSet

dove BUILD_ID è l'effettivo build id del lavoro che hai appena eseguito (il formato usuale è qualcosa come 2012-02-21_16-15-49). Esamina il risultato. Tieni presente che tutte le informazioni sui file che sono cambiate rispetto alla build precedente sono presenti: devi solo analizzarle.

Quindi ora puoi fare quanto segue: YourPollingJob chiamerà un altro lavoro - chiamiamolo CopyJob - e gli passerà il suo BUILD_ID come parametro (tramite Plugin trigger parametrizzato ; assicurati di chiamare CopyJob come fase di post-costruzione, non come fase di costruzione). CopyJob interrogherà quindi Jenkins tramite http (come sopra, il modo migliore è farlo tramite wget), analizzerà i risultati ed eseguirà la copia.

Puoi fare tutto in un unico lavoro, ma è un po 'più complicato e difficile da eseguire il debug.

Inoltre, è probabilmente prudente copiare l'intero repository una volta al giorno (di notte).

Altri suggerimenti

Potresti tenere quei file in un repository separato.Sembra che un VCS distribuito come mercurial o git sarebbe il migliore per questo nel tuo caso.Puoi impostarlo nell'area di lavoro e aggiungere una fase di compilazione per eseguire il commit dei file modificati e inviare il commit al server in cui desideri pubblicarlo (che dovrebbe funzionare fintanto che non cancelli lo spazio di lavoro o non compilimacchine) o aggiungi ulteriori passaggi per clonare / eseguire il pull del repository con gli artefatti dal server su cui li tieni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top