从最新的稳定 Jenkins 版本下载文件

Cra*_*3ss 4 batch wget curl minecraft jenkins

使用批处理文件和 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/
Run Code Online (Sandbox Code Playgroud)

但它只是在没有文件的当前目录中创建“job\Multiverse-Core\lastStableBuild\artifact\target”。我的脚本有问题吗?

Dan*_*eck 5

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/xmlhttp://ci.onarandombox.com/job/Multiverse-Core/lastStableBuild/api/json解析artifacts元素的返回文本。该tree参数允许过滤,例如 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>
Run Code Online (Sandbox Code Playgroud)

或者,使用 XPath 进行更强大的过滤,但请注意,在最近的安全更新中,text()禁用了某些功能(如)。例子:http://ci.onarandombox.com/job/Multiverse-Core/lastStableBuild/api/xml?xpath=/freeStyleBuild/artifact/relativePath&wrapper=artifacts

从命令行,您可以解析 XML,例如使用最新版本的xmllint,或者,在 Xpath 示例中,只需忽略文本并选择文件名。