Laden Sie eine Datei aus dem neuesten stabilen Jenkins-Build herunter

16331
Craft1n3ss

Wie kann ich mit einer Batch-Datei und Wget / Curl die Multiverse-Core-.jar von hier herunterladen? http://ci.onarandombox.com/job/Multiverse-Core/lastStableBuild/artifact/target/

Ich möchte die Zeitstempel-Option verwenden und der Link "Alle Dateien in zip" funktioniert nicht, da der Header "last-modified" nicht vorhanden ist. Wenn ich http://ci.onarandombox.com/job/Multiverse-Core/lastStableBuild/artifact/target/Multiverse-Core-2.5.jar verwende, funktioniert die Timestamping-Option, aber ich möchte den ersten Link verwenden können und muss nicht jedes Mal geändert werden, wenn sich die Versionsnummer ändert. ich habe es versucht

wget -r -l 1 -nH -A jar -R *javadoc.jar,*sources.jar http://ci.onarandombox.com/job/Multiverse-Core/lastStableBuild/artifact/target/ 

Es erstellt jedoch nur "job \ Multiverse-Core \ lastStableBuild \ artifact \ target" im aktuellen Verzeichnis ohne die Dateien. Stimmt etwas mit meinem Skript nicht?

4

1 Antwort auf die Frage

5
Daniel Beck

wget respects the robots.txt file for recursive downloads. And that file prohibits everything (for no good reason AFAICT, as Build Now requires to be POSTed in Jenkins, at least in recent versions).


Jenkins has an API. Several objects, including builds, have API endpoints. In this case, http://ci.onarandombox.com/job/Multiverse-Core/lastStableBuild/api/.

You could query http://ci.onarandombox.com/job/Multiverse-Core/lastStableBuild/api/xml or http://ci.onarandombox.com/job/Multiverse-Core/lastStableBuild/api/json and parse the returned text for the artifacts element. The tree argument allows filtering, like e.g. in http://ci.onarandombox.com/job/Multiverse-Core/lastStableBuild/api/xml?tree=artifacts%5BrelativePath%5D:

<freeStyleBuild> <artifact> <relativePath>target/Multiverse-Core-2.5-javadoc.jar</relativePath> </artifact> <artifact> <relativePath>target/Multiverse-Core-2.5-sources.jar</relativePath> </artifact> <artifact> <relativePath>target/Multiverse-Core-2.5.jar</relativePath> </artifact> </freeStyleBuild> 

Alternatively, use XPath for more powerful filtering, but note that in a recent security update, some functionality (like text()) was disabled. Example: http://ci.onarandombox.com/job/Multiverse-Core/lastStableBuild/api/xml?xpath=/freeStyleBuild/artifact/relativePath&wrapper=artifacts

From the command line, you can parse the XML e.g. using a recent version of xmllint, or, in the Xpath example, just ignore the text and select the file names.

Könnten Sie mir vielleicht zeigen, wie ich das verwende, um curl / wget dazu zu bringen, nur die Multiverse-Core.jar in einem Batch-Skript herunterzuladen? Ich verwende Windows 7, wenn das wichtig ist. Craft1n3ss vor 11 Jahren 0
@ Craft1n3ss Ich weiß nicht genug Charge. Daniel Beck vor 11 Jahren 0
Danke trotzdem für die Information. Ich kann es wahrscheinlich selbst tun, wenn ich herumschaue oder eine andere Frage stelle. Ich würde Ihnen eine positive Bewertung geben, aber ich habe nicht genug Ansehen (dies war meine erste Frage). Craft1n3ss vor 11 Jahren 0
Got it! using `FOR /F "tokens=14 delims=<>" %%a IN ('curl -g "http://ci.onarandombox.com/job/Multiverse-Core/lastStableBuild/api/xml?tree=artifacts[fileName]"') DO ECHO %%a` will echo the exact name of the file I want. Thanks for the help. Craft1n3ss vor 11 Jahren 1