2014-05-20 16 views
7

Sto configurando Jenkins per eseguire diversi lavori di configurazione. Impostando il secondo lavoro, mi trovo a copiare il contenuto dei passi di build "Execute shell" dal primo lavoro, letteralmente al secondo lavoro (perché ho già usato i parametri ovunque possibile, così ottiene $ {project} $ { versione} dal controllo del codice sorgente e il progetto e la versione sono impostati nell'ambiente di lavoro utilizzando l'Environment Injector Plugin).Come posso condividere script con i lavori Jenkins?

Non mi piace questa copia (ho già dovuto tornare indietro e copiare le correzioni).

Come posso condividere questi script (o anche meglio: parti di script) all'interno di Jenkins?

risposta

4

Ho trovato un modo dentro Jenkins dopo tutto: lo Template Project Plugin che fa quello che voglio, anche se in un modo un po 'strano (crea un progetto disattivato per ogni passo di costruzione che vuoi condividere, quindi in ogni progetto che vuoi usare, utilizza il nuovo builder "Utilizza tutti i builder di altri progetti"

Per chi cerca più opzioni, c'è un plug-in di modelli che sembra molto meglio nell'offerta commerciale Cloudbees (ma nessuna indicazione di prezzo da nessuna parte), uno Managed Script Plugin che sembra era quello che volevo e un ezTemplates se ti interessa costruire tu stesso.Non ho provato nessuno dei due.

1

È necessario utilizzare gli script per condividere gli script (o parti di script) con altri lavori jenkins. Un'idea migliore sarebbe quella di non digitare il contenuto dello script della shell all'interno del processo di compilazione e utilizzare semplicemente il controllo del codice sorgente. È possibile chiamare lo script con ciascun progetto dal controllo del codice sorgente oppure utilizzare lo copy artifacts plugin e nel passaggio di esecuzione della shell di esecuzione richiamare lo script.

Se non è possibile farlo, è necessario scrivere uno script che cerchi lo script di shell appena generato nella directory TEMP e copiarlo nello spazio di lavoro del lavoro successivo. Però sembra più una perdita di tempo che copiare e incollare.

Con il controllo del codice sorgente, se si modifica uno script, esso viene modificato ovunque.
Esercita la scrittura sicura!

+0

Ok, grazie, quindi nessun sistema dentro Jenkins. quindi controllo il codice sorgente, ma sono un po 'confuso su come ottenere la versione corretta degli script anche sugli schiavi. Un progetto che è costruito su ogni macchina e ottiene gli script? Saranno "sincronizzati" tra le macchine contemporaneamente? O gli artefatti da copiare aiutano in questo? Vengono sempre copiati dal server in un progetto sullo schiavo? – Legolas

+0

Non sono del tutto sicuro di cosa intendi, se inserisci uno script dal controllo del codice sorgente e tale build è in esecuzione su un nodo slave, lo script si troverà nello spazio di lavoro dei nodi slave. Se hai un lavoro sul tuo master con cui inserisci lo script e hai bisogno dello script in un lavoro upstream che viene gestito dallo slave, puoi usare https://wiki.jenkins-ci.org/display/JENKINS/Copy + A + Slave + Plugin – Cole9350

2

È possibile inserire il contenuto della shell "Esegui" nello script e posizionare lo script in una posizione comune accessibile dagli schiavi. in 'Execute Shell', è sufficiente chiamare questo script con argomenti appropriati.

Problemi correlati