2017-05-27 38 views
1

我的問題是,我想在我的jenkins管道插件中執行一個腳本,'perf腳本'命令不起作用。 我的腳本是:如何在我自己的jenkins管道插件中執行shell腳本?

#! /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 

我詹金斯可以執行sudo的,所以這是沒有問題的,在我自己的Linux殼牌這個腳本工作完美.. 我怎樣才能解決這個問題?

+0

難道是在重定向perf腳本命令沒有對info.perf的寫入權限?請記住,重定向以您的腳本運行的用戶身份寫入,而不是root。 – stigsb

+0

@StephenKing這可能是問題,導致info.perf總是空的。我怎麼可以寫訪問perf腳本命令? – JuanCarlosFR

回答

1

我解決了這個將-i選項添加爲PErF腳本命令:

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

好像詹金斯不能沒有-i選項來讀取perf.data

+0

很好找,比我的答案更準確。 +1 – VonC

1

如果重定向在腳本中不起作用,請嘗試查看它是否在DSL Jenkins文件中工作。

如果調用與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個以上的腳本,它的工作原理...問題是隻有腳本腳本命令 – JuanCarlosFR

相關問題