如何使用wget解析html以使用针对Jenkins的模式匹配来下载工件

时间:2017-02-10 02:34:31

标签: bash curl jenkins wget

我正在尝试从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中正确使用通配符以确保我总是得到最新的?

1 个答案:

答案 0 :(得分:0)

NM,在我的工作中与另一位工程师合作,提出了一个解析json的超级优雅解决方案。

  1. 安装Chrome并获取插件JSONView
  2. 使用https://$domain/$job/lastSuccessfulBuild/api/json在Chrome浏览器中调用Jenkins API 这将打印出json中的密钥对值。表示你的密钥,对我而言是number
  3. brew install jq
  4. 在bash脚本中创建一个将存储动态值的变量,如下所示
  5. 这会将内部版本号存储到最新版本:

    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已经存在了一段时间。