Моя проблема в том, что я хочу выполнить скрипт в моем плагине jenkins конвейер, а команда «perf script» не работает. Мой сценарий:

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

Мой Jenkins может выполнить sudo, так что это не проблема, и в моем собственном Linux Shell этот скрипт работает отлично. Как я могу решить эту проблему?

1
JuanCarlosFR 27 Май 2017 в 20:33

2 ответа

Лучший ответ

Я решил это, добавив параметр -i в команду сценария perf:

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

Похоже, Дженкинс не может читать perf.data без опции -i

1
JuanCarlosFR 14 Июн 2017 в 16:38

Если перенаправление не работает в скрипте, попробуйте и посмотрите, работает ли оно в DSL Jenkinsfile.

Если вы вызываете этот скрипт с помощью sh шаг поддерживает returnStdout (JENKINS -26133 ) :

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

Вы можете обработать результат непосредственно в res, минуя необходимость в файле.

1
VonC 29 Май 2017 в 16:54