2017-05-27 9 views
1

私の問題は、私のジェンキンスパイプラインプラグインの中でスクリプトを実行したいし、 'perfスクリプト'コマンドが機能しないということです。 私のスクリプトは次のとおりです。私は自分のjenkinsパイプラインプラグインでシェルスクリプトを実行できますか?

#! /bin/bash 
if test $# -lt 2 
then 
    sudo perf record -F 99 -a -g -- sleep 20 
    sudo perf script > info.perf 
    echo "voila" 
fi 
exit 0 

マイ・ジェンキンスはので、これは問題ではありません、そして私自身のLinuxのシェルでこのスクリプトが完璧に動作sudoを実行することができます。.. がどのように私はこの問題を解決することができますか?

+0

-iオプションなしでperf.dataを読み取ることができないように

sudo perf record -F 99 -a -g -- sleep 20 sudo perf script -i perf.data > info.perf echo "voila" 

は、それがその中にそのリダイレクトだろ思えますperfスクリプトコマンドはinfo.perfへの書き込みアクセス権を持っていませんか?リダイレクトは、スクリプトがrootではなく実行するユーザーとして書き込むことを覚えておいてください。 – stigsb

+0

@StephenKingこれは問題になる可能性があるため、info.perfは常に空です。どのように私はperfスクリプトコマンドへの書き込みアクセスを与えることができますか? – JuanCarlosFR

答えて

1

私はPERFスクリプトコマンドに-iオプションを追加し、これを解決:ジェンキンスは

+0

ニースは、私の答えよりも正確な見つける。 +1 – VonC

1

リダイレクトがスクリプト内で機能しない場合は、DSL Jenkinsfile内でリダイレクトが機能しているかどうか試してみてください。

あなたはsh stepでそのスクリプトを呼び出す場合returnStdoutJENKINS-26133)をサポートしています。

res = sh(returnStdout: true, script: '/path/to/your/bash/script').trim() 

あなたはファイルの必要性をバイパスし、resに直接結果を処理することができます。

+0

あなたのソリューションをテストすると、私はJenkinsでこのエラーを受け取ります: "互換性のないファイルフォーマット(詳細については-vで再実行)"、そのperfスクリプトのように "perf.data"を認識しません... – JuanCarlosFR

+0

@JuanCarlosFRまず、いくつかのマルチライン出力を生成する他のコマンドについては?ちょうどテストのために? – VonC

+0

はい、私はもう2つのスクリプトでテストしています。問題はperfスクリプトコマンド – JuanCarlosFR

関連する問題