2015-07-15 36 views
7

Sto tentando di scaricare un artefatto da un progetto Jenkins utilizzando uno script batch dos. Il motivo per cui questo è più che banale è che il mio artefatto è un file zip che include il numero di build di Jenkins nel suo nome, quindi non conosco il nome esatto del file.Download di artefatti da Jenkins con wget o arricciatura

Il mio piano di attacco corrente è utilizzare wget che punta a:/lastSuccessfulBuild/artefatto/ per eseguire una sorta di download ricorsivo/mirror.

Se faccio la seguente:

wget -r -np -l 1 -A zip --auth-no-challenge --http-user=**** --http-password=**** http://*.*.*.*:8080/job/MyProject/lastSuccessfulBuild/artifact/ 

(* s sono caratteri che ho cambiato per la pubblicazione di SO)

ho mai ottenere un file zip. Se si omette l'opzione -A zip, ottengo l'index.html, quindi penso che l'autorizzazione funzioni, a meno che non si tratti di un problema di memorizzazione nella cache della sessione?

Con -A zip ottengo come parte della risposta:

Rimozione .. . + 8080/job/MyProject/lastSuccessfulBuild/artifact/index.html poiché dovrebbe essere rifiutato.

Quindi non sono sicuro se è possibile rimuovere quel file e quindi non seguire i suoi collegamenti? ma facendo -A zip, html non funziona neanche.

Ho provato diverse opzioni di wget e anche arricciavo ma non sono arrivato da nessuna parte.

Non so se ho le opzioni wget sbagliate o se c'è qualcosa di speciale nell'autenticazione Jenkins.

Qualsiasi aiuto apprezzato. Grazie.

risposta

3

È possibile aggiungere /*zip*/desired_archive_name.zip a qualsiasi cartella della posizione degli artefatti.

Se la zip è l'unico manufatto che gli archivi di lavoro, è possibile utilizzare:
http://*.*.*.*:8080/job/MyProject/lastSuccessfulBuild/artifact/*zip*/myfile.zip
dove myfile.zip è solo un nome assegnato al l'archivio scaricabile, potrebbe essere qualsiasi cosa.

Se si dispone di più artefatti archiviati, è ancora possibile ottenere lo zip di tutti loro e gestire quelli singoli durante l'estrazione. Oppure posiziona l'artefatto che desideri in una cartella separata e applica lo /*zip*/ a quella cartella.

+0

Questa è un'idea piuttosto interessante, che non sapevo che potessi fare, grazie. Ma mi lascia ancora il mal di testa di un doppio file zippato, uno dei quali non conosco il nome. Sarei ancora interessato a sapere perché il comando wget non funziona. – Erik

+0

Non è necessario "-A zip" per ottenere le risorse, tuttavia è necessario conoscere il nome della risorsa. Se non conosci il nome del manufatto, puoi '/ * zip * /' l'intera cartella. Non ci sono problemi con zip all'interno di un zip. Una volta ottenuto, estrai il primo zip in una cartella, e lì hai: tutto il contenuto degli artefatti. Ora puoi usare i jolly del filesystem per ottenere il resto dei tuoi file (conosci parte del nome del file, vero?) – Slav

+0

L'endpoint '/ artifact/** ** è una pagina index.html che mostra l'interfaccia web a ottenere il vero artefatto (con il nome esatto, o il metodo zip) – Slav