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.
As mentionned in this answer, as of version 2.4 of Pipeline: Nodes and Processes you can use:
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