Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 315
Vish Avatar asked Mar 30 '16 09:03

Vish


2 Answers

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
like image 101
Pom12 Avatar answered Dec 15 '22 07:12

Pom12


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

like image 45
Flo Avatar answered Dec 15 '22 06:12

Flo