Jenkins не запускает баш команду внутри питон скрипта.

Есть питон скрипт. Там выполняются тесты с вебдрайвером, а потом вызывается команда

subprocess.check_output('/usr/bin/php -d safe_mode=0 /console/update.php', shell=True)

которая должна быть исполнена на сервере и выполнить обновление. Скрипт должен подождать пока эта команда выполнится и затем пойти дальше.

Проблема в том что если этот скрипт запускать через консоль сервера, все срабатывает отлично. Если скрипт гонится через jenkins, то вышеуказанная команда не срабатывает, но никакого аутпута нет, чтобы точно выявить проблему.

Как это можно исправить?

Я бы сразу начал проверять пути к файлам и права на них, ибо в консоли и у jenkins’а они разные.

2 Likes

Спасибо, сейчас попробую.

Решил проблему, напишу может кому будет полезно.

В /etc/sudoers дописал:

%jenkins ALL=NOPASSWD: ALL

А в коде добавлено sudo:

subprocess.check_output('sudo /usr/bin/php -d safe_mode=0 /console/update.php', shell=True)

Команда не хотела работать потому что нужны были права как и писал b1kers

2 Likes