Jenkins Pipeline Plugin: execute shell and parse o

2019-02-21 15:07发布

I am using the Jenkins Pipeline plugin to execute an iOS Checkout-Build-Test-Deploy pipeline.

One step involves checking whether an iDevice is actually connected (otherwise the rest of the steps will not be executed).

I want to execute a shell command idevice_id -l (from libimobiledevice) which will print out the device ID of the connected device, or fail if nothing connected.

So the steps as I envision them, would be:

  • Execute command sh "/usr/local/bin/idevice_id -l"
  • parse the output somehow
  • fail if this command does not return anything.

I have read most of the official docs, but drew a blank. How do I parse the output of the sh step? If I am approaching this in the wrong way, any other suggestions are welcome.

2条回答
不美不萌又怎样
2楼-- · 2019-02-21 15:39

As mentionned in this answer, as of version 2.4 of Pipeline: Nodes and Processes you can use:

def out = sh script: '/usr/local/bin/idevice_id -l', returnStdout: true
查看更多
我想做一个坏孩纸
3楼-- · 2019-02-21 15:47

The official method is to redirect the output into a file and read the file

If the output file is empty, you can fail the job with the pipeline script command error "no device connected"

Example on github

查看更多
登录 后发表回答