2016-03-30 8 views
10

Sto utilizzando il plug-in Jenkins Pipeline per eseguire una pipeline di Checkout-Build-Test-Deployment per iOS.Jenkins Pipeline Plugin: esegue l'output shell e parse

Un passaggio consiste nel verificare se un iDevice è effettivamente collegato (altrimenti il ​​resto dei passaggi non verrà eseguito).

Voglio eseguire un comando di shell idevice_id -l (da libimobiledevice) che stamperà l'ID dispositivo del dispositivo collegato, o fallirà se non è collegato nulla.

Così i passi come li immagino, sarebbe:

  • eseguire il comando sh "/usr/local/bin/idevice_id -l"
  • analizzare l'output in qualche modo
  • fallire se questo comando non restituisce nulla.

Ho letto la maggior parte dei documenti ufficiali, ma ho disegnato uno spazio vuoto. Come analizzo l'output del passaggio sh? Se mi sto avvicinando a questo nel modo sbagliato, qualsiasi altro suggerimento è benvenuto.

risposta

2

Il metodo ufficiale è quello di reindirizzare l'output in un file e leggere il file

Se il file di output è vuoto, si può non il lavoro con il comando script gasdotto error "no device connected"

Example on github

+0

fantastico! Questo funziona per me bene. 'sh ('/ usr/local/bin/idevice_id -l> DEVICE_ID'); deviceId = readFile ('GIT_COMMIT') ' – Vish

+0

[JENKINS-26133] (https://issues.jenkins-ci.org/browse/JENKINS-26133). –

+2

Questo non è più il metodo "ufficiale"/soluzione alternativa, vedere [questa risposta] (http://stackoverflow.com/a/39102404/702954) per il metodo aggiornato. – Pom12