Jenkins 管道插件:执行 shell 并解析输出

Jenkins Pipeline Plugin: execute shell and parse output

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

第一步是检查设备是否实际连接(否则不会执行其余步骤)。

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

所以我设想的步骤是:

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

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

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

Example on github

, as of version 2.4 of Pipeline: Nodes and Processes中所述,您可以使用:

def out = sh script: '/usr/local/bin/idevice_id -l', returnStdout: true