2015-07-15 7 views
7

Ich versuche, ein Artefakt aus einem Jenkins-Projekt mit einem Dos-Batch-Skript herunterzuladen. Der Grund, dass dies mehr als trivial ist, ist, dass mein Artefakt eine Zip-Datei ist, die die Jenkins-Build-Nummer in ihrem Namen enthält, daher kenne ich den genauen Dateinamen nicht.Herunterladen von Artefakten aus Jenkins mit wget oder curl

Mein aktueller Plan des Angriffs ist es, wget zeigt auf:/lastSuccessfulBuild/artefact/ , um eine Art rekursive/Spiegel-Download zu tun.

Wenn ich Folgendes tun:

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

(* s sind Zeichen ich mich verändert habe für die Entsendung SO)

ich nie eine Zip-Datei bekommen. Wenn ich die -A-Zip-Option weglasse, bekomme ich die index.html, also denke ich, dass die Autorisierung funktioniert, es sei denn, es ist eine Art Session-Caching-Problem?

Mit -A zip bekomme ich als Teil der Antwort:

Entfernen .. . + 8080/job/MyProject/lastSuccessfulBuild/artifact/index.html da es zurückgewiesen werden sollte.

Also bin ich mir nicht sicher, ob es vielleicht die Datei entfernt und so nicht seinen Links folgt? aber tun -A-Zip, HTML funktioniert auch nicht.

Ich habe mehrere wget Optionen ausprobiert, und auch locken, aber nirgends.

Ich weiß nicht, ob ich die falschen wget Optionen habe oder ob es etwas Besonderes über Jenkins Authentifizierung gibt.

Jede Hilfe wird geschätzt. Vielen Dank.

Antwort

3

Sie können /*zip*/desired_archive_name.zip zu einem beliebigen Ordner des Artefakts hinzufügen.

Wenn Ihr Zip das einzige Artefakt ist, dass die Job-Archive können Sie verwenden:
http://*.*.*.*:8080/job/MyProject/lastSuccessfulBuild/artifact/*zip*/myfile.zip
wo myfile.zip ist nur ein Name, den Sie dem herunterladbaren Archiv zuweisen, könnte alles sein.

Wenn Sie mehrere Artefakte archiviert haben, können Sie entweder immer noch die Zip-Datei von allen erhalten und mit einzelnen extrahieren. Oder legen Sie das gewünschte Artefakt in einen separaten Ordner und wenden Sie den Ordner /*zip*/ auf diesen Ordner an.

+0

Das ist eine ziemlich interessante Idee, die ich nicht kannte, danke. Aber es lässt mich immer noch die Kopfschmerzen einer doppelten Zip-Datei, von denen ich den Namen nicht kenne. Ich wäre immer noch interessiert zu wissen, warum der Befehl wget nicht funktioniert. – Erik

+0

Sie sollten keine'A-Zip' benötigen, um die Artefakte zu erhalten, aber Sie müssen den Artefaktnamen kennen. Wenn Sie den Artefaktnamen nicht kennen, können Sie den gesamten Ordner '/ * zip * /'. Es gibt kein Problem mit Reißverschluss in einem Reißverschluss. Sobald Sie es bekommen, extrahieren Sie die erste zip in einen Ordner, und dort haben Sie: Ihre gesamten Artefakte Inhalt. Sie können jetzt Wildcard-Platzhalter verwenden, um zum Rest Ihrer Dateien zu gelangen (Sie kennen einen Teil des Dateinamens, richtig?) – Slav

+0

Der '/ artifact /' Endpunkt ** ist ** eine index.html Seite, die das Webinterface anzeigt Holen Sie sich das tatsächliche Artefakt (durch den genauen Namen oder Zip-Methode) – Slav