Search code examples
jenkinsjenkins-workflowjenkins-pipeline

Jenkins Pipeline Plugin: execute shell and parse output


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.


Solution

  • 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