web-dev-qa-db-fra.com

Plugin Jenkins Pipeline: exécuter Shell et analyser la sortie

J'utilise le plugin Jenkins Pipeline pour exécuter un pipeline iOS Checkout-Build-Test-Deploy.

Une étape consiste à vérifier si un iDevice est réellement connecté (sinon les autres étapes ne seront pas exécutées).

Je veux exécuter une commande Shell idevice_id -l (de libimobiledevice ) qui imprimera l'ID de périphérique du périphérique connecté, ou échouera si rien n'est connecté.

Ainsi, les étapes telles que je les envisage, seraient:

  • Exécuter la commande sh "/usr/local/bin/idevice_id -l"
  • analyser la sortie en quelque sorte
  • échoue si cette commande ne renvoie rien.

J'ai lu la plupart des documents officiels, mais j'ai dessiné un blanc. Comment analyser la sortie de l'étape sh? Si j'aborde cette question dans le mauvais sens, toute autre suggestion est la bienvenue.

13
Vish

Comme mentionné dans cette réponse , à partir de la version 2.4 de Pipeline: Nodes and Processes vous pouvez utilisation:

def out = sh script: '/usr/local/bin/idevice_id -l', returnStdout: true
36
Pom12

La méthode officielle consiste à rediriger la sortie dans un fichier et à lire le fichier

Si le fichier de sortie est vide, vous pouvez échouer le travail avec la commande de script de pipeline error "no device connected"

Exemple sur github

3
Flo