2016-03-30 49 views
10

我使用Jenkins管道插件来执行iOS Checkout-Build-Test-Deploy管道。Jenkins管道插件:执行shell和解析输出

一步骤涉及检查iDevice是否实际连接(否则其余步骤将不会执行)。

我想执行一个shell命令idevice_id -l(从libimobiledevice),它将打印出连接设备的设备ID,或者如果没有连接设备,则会失败。

所以步骤我设想他们是:

  • 执行命令sh "/usr/local/bin/idevice_id -l"
  • 解析输出莫名其妙
  • 失败,如果该命令不返回任何东西。

我已阅读大部分官方文档,但画了一个空白。我如何解析sh步骤的输出? 如果我以错误的方式接近这一点,欢迎任何其他建议。

回答

2

官方的方法是将输出重定向到文件和读取文件

如果输出文件是空的,你可以失败与管道脚本命令error "no device connected"

Example on github

+0

太棒了!这对我很好。 'sh('/ usr/local/bin/idevice_id -l> DEVICE_ID');顺便说一句,deviceId = readFile('GIT_COMMIT')' – Vish

+0

[JENKINS-26133](https://issues.jenkins-ci.org/browse/JENKINS-26133)。 –

+2

这不是“官方”方法/解决方法了,请参阅[本答案](http://stackoverflow.com/a/39102404/702954)了解更新的方法。 – Pom12