13

我正在使用 Jenkins Pipeline 插件来执行 iOS Checkout-Build-Test-Deploy 管道。

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

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

所以我设想的步骤是:

  • 执行命令sh "/usr/local/bin/idevice_id -l"
  • 以某种方式解析输出
  • 如果此命令不返回任何内容,则失败。

我已经阅读了大部分官方文档,但还是一片空白。如何解析sh步骤的输出?如果我以错误的方式处理此问题,欢迎提出任何其他建议。

4

2 回答 2

37

正如这个答案中提到的那样,从Pipeline: Nodes and Processes的 2.4 版开始,您可以使用:

def out = sh script: '/usr/local/bin/idevice_id -l', returnStdout: true
于 2016-08-23T13:19:25.230 回答
4

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

如果输出文件为空,您可以使用管道脚本命令使作业失败error "no device connected"

github上的例子

于 2016-03-30T11:00:56.857 回答