Jenkins: rsync dallo spazio di lavoro creato o estrazione dal repository originale e generazione di nuovo

3

Attualmente sto impostando una pipeline Jenkins per un'applicazione web e mi sto chiedendo quali metodi di distribuzione siano più comuni o raccomandati.

Attualmente Jenkins esegue il polling di SCM per i nuovi commit e i trigger creati quando ci sono nuovi commit.

Supponiamo che il processo di compilazione sia:

composer install

phpunit tests

rsync workspace to staging server

behat --profile staging

La domanda è come distribuire?

Devo rsync i file direttamente dallo spazio di lavoro di jenkins che hanno già eseguito il processo di compilazione e superato i test di unità? O dovrei tenere un clone del repository sui server di staging / produzione e attivare un git pull e quindi una build successiva sul server da distribuire a?

O qualsiasi altra cosa a cui non avessi pensato?

    
posta Adam Copley 15.03.2017 - 15:10
fonte

1 risposta

5

Vorrei distribuire direttamente dallo spazio di lavoro di Jenkins. Il motivo è che se stai eseguendo il lancio di Git, potresti ottenere una versione più recente di quella creata da Jenkins. Ovviamente, "git checkout SHA1" potrebbe salvare la tua giornata, ma in realtà, se il server Jenkins è compatibile con il server di distribuzione, non c'è motivo di dedicare ulteriore tempo alla ricompilazione della cosa.

Naturalmente, se la tua applicazione web è scritta usando C o un linguaggio simile (improbabile dato che non sono spesso usate per le applicazioni web), esiste la possibilità teorica che i numeri di versione della libreria condivisa sul server Jenkins e sul server di distribuzione differire. Quindi, in questo caso, potrebbe essere necessaria la ricompilazione.

Il mio consiglio sarebbe di provare prima a distribuire direttamente dallo spazio di lavoro di Jenkins. Se per qualche motivo non funziona, passa a usare git pull e ricompilare.

    
risposta data 15.03.2017 - 15:54
fonte