Делаю скрипт, который будет дёргаться при изменении в репозитории. Смысл в том, чтобы сделать pull, собрать новую версию, установить куда положено. Как обрабатывать ситуацию, когда событие произошло во время билда? Второй билд запускать не хочу. Собственно хочу, чтобы билд дошёл до конца, а потом запустился ещё раз, сбилдив на сей раз последнюю версию.
Пока делаю примерно так:
if [ -e build-in-progress ]; then
touch rebuild
exit
fi
touch build-in-progress
...
if [ -e rebuild ]; then
rm rebuild
exec $*
fi
rm build-in-progress
но как-то всё это ненадёжно, всякие там гонки могут быть, если запрос придёт прям в то время, когда проверка выполняется.
Есть ли какой-нибудь способ сделать это всё по уму, который будет работать железобетонно?