Jenkins 管道插件:执行 shell 并解析输出
Jenkins Pipeline Plugin: execute shell and parse output
我正在使用 Jenkins Pipeline 插件执行 iOS Checkout-Build-Test-Deploy 管道。
第一步是检查设备是否实际连接(否则不会执行其余步骤)。
我想执行 shell 命令 idevice_id -l
(来自 libimobiledevice),它将打印出已连接设备的设备 ID,如果没有连接则失败。
所以我设想的步骤是:
- 执行命令
sh "/usr/local/bin/idevice_id -l"
- 以某种方式解析输出
- 如果此命令没有 return 任何内容,则失败。
我已经阅读了大部分官方文档,但是一头雾水。如何解析 sh
步骤的输出?
如果我以错误的方式处理这个问题,欢迎提出任何其他建议。
官方的方法是将输出重定向到文件中,然后读取文件
如果输出文件为空,您可以使用管道脚本命令使作业失败 error "no device connected"
如, as of version 2.4 of Pipeline: Nodes and Processes中所述,您可以使用:
def out = sh script: '/usr/local/bin/idevice_id -l', returnStdout: true
我正在使用 Jenkins Pipeline 插件执行 iOS Checkout-Build-Test-Deploy 管道。
第一步是检查设备是否实际连接(否则不会执行其余步骤)。
我想执行 shell 命令 idevice_id -l
(来自 libimobiledevice),它将打印出已连接设备的设备 ID,如果没有连接则失败。
所以我设想的步骤是:
- 执行命令
sh "/usr/local/bin/idevice_id -l"
- 以某种方式解析输出
- 如果此命令没有 return 任何内容,则失败。
我已经阅读了大部分官方文档,但是一头雾水。如何解析 sh
步骤的输出?
如果我以错误的方式处理这个问题,欢迎提出任何其他建议。
官方的方法是将输出重定向到文件中,然后读取文件
如果输出文件为空,您可以使用管道脚本命令使作业失败 error "no device connected"
如
def out = sh script: '/usr/local/bin/idevice_id -l', returnStdout: true