Загрузите файл из последней стабильной сборки Jenkins

16202
Craft1n3ss

Используя пакетный файл и wget / curl, как я могу скачать Multiverse-Core-.jar отсюда? http://ci.onarandombox.com/job/Multiverse-Core/lastStableBuild/artifact/target/

Я хочу использовать параметр отметки времени, и ссылка «Все файлы в zip-файле» не работает, так как заголовок «последней модификации» для него не существует. Если я использую http://ci.onarandombox.com/job/Multiverse-Core/lastStableBuild/artifact/target/Multiverse-Core-2.5.jar, тогда работает опция отметки времени, но я хочу иметь возможность использовать первую ссылку и не нужно менять его каждый раз, когда меняется номер версии. я пробовал

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

Но он просто создает «job \ Multiverse-Core \ lastStableBuild \ artifact \ target» в текущем каталоге без файлов. Что-то не так с моим сценарием?

4

1 ответ на вопрос

5
Daniel Beck

wgetуважает robots.txtфайл для рекурсивных загрузок. И этот файл запрещает все (без веской причины AFAICT, поскольку Build Now требует редактирования POSTв Jenkins, по крайней мере, в последних версиях).


У Дженкинса есть API. Несколько объектов, включая сборки, имеют конечные точки API. В этом случае http://ci.onarandombox.com/job/Multiverse-Core/lastStableBuild/api/.

Вы можете запросить http://ci.onarandombox.com/job/Multiverse-Core/lastStableBuild/api/xmlили http://ci.onarandombox.com/job/Multiverse-Core/lastStableBuild/api/jsonпроанализировать возвращенный текст для artifactsэлемента. treeАргумент позволяет фильтровать, как, например, в 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> 

В качестве альтернативы используйте XPath для более мощной фильтрации, но обратите внимание, что в недавнем обновлении безопасности некоторые функции (например text()) были отключены. Пример:http://ci.onarandombox.com/job/Multiverse-Core/lastStableBuild/api/xml?xpath=/freeStyleBuild/artifact/relativePath&wrapper=artifacts

Из командной строки вы можете анализировать XML, например, используя последнюю версию xmllint, или, в примере с Xpath, просто игнорировать текст и выбирать имена файлов.

Не могли бы вы показать мне, как я использую это для получения curl / wget для загрузки только Multiverse-Core.jar в пакетном скрипте? Я использую Windows 7, если это имеет значение. Craft1n3ss 11 лет назад 0
@ Craft1n3ss Я не знаю достаточно партии. Daniel Beck 11 лет назад 0
В любом случае, спасибо за информацию. Я, вероятно, могу сделать это сам, если я буду искать или задавать другой вопрос. Я бы дал вам голос, но мне не хватает репутации (это был мой первый вопрос). Craft1n3ss 11 лет назад 0
Понял! используя токены `FOR / F" = 14 delims = <> "%% a IN ('curl -g" http://ci.onarandombox.com/job/Multiverse-Core/lastStableBuild/api/xml?tree=artifacts [ fileName] "') DO ECHO %% a` отобразит точное имя файла, который я хочу. Спасибо за помощь. Craft1n3ss 11 лет назад 1

Похожие вопросы