У меня есть несколько удаленных репозиториев (начиная с --bare) на компьютере с Linux Ubuntu (14.04 и 16.04). Эти репозитории получают коммиты, и оттуда события скриптов hooks начинают развертывание приложений. Сценарий, используемый развертыванием, называется после получения.
Однако мне бы хотелось, чтобы этот сценарий показывал вывод клиенту, отправляющему фиксацию, в реальном времени, а не только после завершения сценария.
Согласно этому ответу и эта строка, буфер явно выгружается всякий раз, когда скрипт записывает новую строку в вывод.
Но я пробовал это несколькими способами, и ни один не работал. Я получаю ответ от клиента, который отправляет фиксацию, только когда сценарий заканчивается.
Я уже пробовал:
#!/bin/bash
echo "A - Starting deploy. \n";
echo "A - Starting deploy. \n\r";
echo "A - Starting deploy. \r";
echo -e "A - Starting deploy. \n";
echo -e "A - Starting deploy. \n\r";
echo -e "A - Starting deploy. \r";
printf "A - Starting deploy. \n";
printf "A - Starting deploy. \n\r";
printf "A - Starting deploy. \r";
# Code for deploy ...
echo "B - Finished deploy.";
Но все выходные данные, запущенные как "A", так и "B", отображаются на клиентской консоли только тогда, когда весь скрипт завершается.
Я хотел бы, чтобы каждая строка была представлена клиенту по мере выполнения сценария.
Я считаю, что это возможно, потому что я использую библиотеку s3cmd для загрузки ресурсов AWS S3, и во время загрузки выходные данные показаны в исполнении, а не только в конце, как показано ниже. Также интересно, что написанные мной выходные данные отправляются в ответ и тогда, когда s3cmd начинает отправлять свои выходные данные.
Кто-нибудь может мне помочь?