我正在尝试从Jenkins下载我需要最新版本的工件。如果我curl
jenkins.mycompany.com/view/iOS/job/build_ios/lastSuccessfulBuild/artifact/build
它会将我带到包含我需要下载的工件的页面,在我的情况下是myCompany-1234.ipa
因此,将curl
更改为wget
并--auth-no-challenge https://userIsMe:123myapikey321@jenkins.mycompany.com/view/iOS/job/build_ios/lastSuccessfulBuild/artifact/build/
会下载index.html
文件。
如果我放--reject index.html
它会停止index.html下载。
如果我使用通配符(例如MyCompany-*.ipa
)添加工件的名称,则会下载名为MyCompany-*.ipa
的14k文件,而不是我希望的MyCompany-1234.ipa
。请记住,我请求的页面只有1 MyCompany-1234.ipa
,因此永远不会找到多个匹配
如果我使用标志模式匹配-A "*.ipa"
,如下所示:wget --auth-no-challenge -A "*.ipa" https://userIsMe:123myapikey321@jenkins.mycompany.com/view/iOS/job/build_ios/lastSuccessfulBuild/artifact/build/
它仍然不会下载工件。
如果我完全输入了如下所示的确切网址,它就有效:wget --auth-no-challenge https://userIsMe:123myapikey321@jenkins.mycompany.com/view/iOS/job/build_ios/lastSuccessfulBuild/artifact/build/MyCompany-1234.ipa
这里的问题是.ipa并不总是1234,明天将是1235,依此类推。我如何解析html或在wget中正确使用通配符以确保我总是得到最新的?
答案 0 :(得分:0)
NM,在我的工作中与另一位工程师合作,提出了一个解析json的超级优雅解决方案。
JSONView
https://$domain/$job/lastSuccessfulBuild/api/json
在Chrome浏览器中调用Jenkins API
这将打印出json中的密钥对值。表示你的密钥,对我而言是number
jq
这会将内部版本号存储到最新版本:
latest=$(curl --silent --show-error https://userIsMe:123myapikey321@jenkins.mycompany.com/job/build_ios/lastSuccessfulBuild/api/json | jq '.number')
如果您愿意,请将其打印到屏幕:
echo $latest
现在有一些字符串插值将最新的变量传递给你的wget调用:
wget --auth-no-challenge https://userIsMe:123myapikey321@jenkins.mycompany.com/view/iOS/job/build_ios/lastSuccessfulBuild/artifact/build/myCompany-$latest.ipa
希望这可以帮助某人,因为那里的信息有限而且简洁明了,特别是考虑到wget已经存在了一段时间。