2016-03-30 11 views
10

Jenkins Pipelineプラグインを使用してiOS Checkout-Build-Test-Deployパイプラインを実行しています。Jenkins Pipeline Plugin:シェルを実行して出力を解析します

iDeviceが実際に接続されているかどうかを確認するステップがあります(そうでない場合は、残りのステップは実行されません)。

接続されたデバイスのデバイスIDを印刷するシェルコマンドidevice_id -llibimobiledevice)を実行するか、接続されていない場合は失敗します。私はそれらを想像するよう

ので手順は、次のようになります。

  • は、このコマンドは何も返さない場合は何とか
  • が失敗出力を解析するコマンドにsh "/usr/local/bin/idevice_id -l"
  • を実行します。

公式ドキュメントのほとんどは読んでいますが、空白があります。 shステップの出力を解析するにはどうすればよいですか? これに間違った方法で近づいている場合は、他の提案も歓迎します。

答えて

31

でジョブを失敗する可能性がありますファイルに出力をリダイレクトし、ファイル

を読むことですPipeline: Nodes and Processesのバージョン2.4のように、this answerでmentionnedとして、あなたは使用することができます。

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

公定法では、出力ファイルが空の場合は、パイプラインのスクリプトコマンドerror "no device connected"

Example on github

+0

fantastic!これは私のためにうまくいく。 '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

これは "公式の"方法/回避策ではありません。更新されたメソッドについては、[この回答](http://stackoverflow.com/a/39102404/702954)を参照してください。 – Pom12

関連する問題