У меня есть перехватчик git post-receive, который создает программу Go и запускает ее. Проблема в том, что я получаю весь вывод от программы Go и git push
"никогда не заканчивает" казнь, застревая там.
Ищу способ запустить программу Go без зависания команды push.
Мой файл после получения:
#!/bin/bash
while read oldrev newrev ref
do
branch=`echo $ref | cut -d/ -f3`
if [ "production" == "$branch" -o "master" == "$branch" ]; then
...
go build
exec ./webservice
echo 'Pushed!'
fi
done
Я могу предложить поставить go (и exec?) В фон с помощью (go build ; exec ./webservice )&
Вы не будете проинформированы, если в вашей программе go с помощью git возникнет проблема, поэтому вам понадобится журнал
Возможно, лучшим решением будет автоматически убить программу go, если она слишком длинная с timeout
.
Решено с помощью:
nohup ./webservice > output.txt 2>&1 &
Таким образом, я могу зарегистрировать stdout
и stderr
в файл и избегайте зависания git post-receive
крючок.