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

时间:2016-03-30 09:00:01

标签: jenkins jenkins-workflow jenkins-pipeline

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

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

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

所以我设想的步骤是:

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

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

2 个答案:

答案 0 :(得分:35)

this answer中所述,从 Pipeline: Nodes and Processes 版本2.4开始,您可以使用:

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

答案 1 :(得分:3)

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

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

使作业失败

Example on github