Хорошо, странно, это не кажется интересной проблемой, поэтому мне пришлось самостоятельно искать какое-то решение.
Насколько я понимаю, Трэвис не поддерживает такую функцию (я не знаю почему, для меня это довольно просто c), но он предлагает переменную среды, чтобы знать, что вызвало строить. Который можно комбинировать с git log
:
if [[ "$TRAVIS_EVENT_TYPE" == "cron" ]]; then
nchanges=$(git log --since '24 hours ago' --format=oneline | wc -l)
if [[ $(($nchanges)) == 0 ]]; then
cat <<EOT
This is a cron-triggered build and the code didn't change since the
latest build, so we're not rebuilding.
This is based on github logs (--since '24 hours ago'). Please,
launch a new build manually if I didn't get it right.
EOT
exit
fi
fi
Это не идеально, потому что вся виртуальная машина и ее окружение все равно запускаются, а журналы Travis показывают событие, не отличая его от других сборок. , Но пока я не найду лучшего решения, по крайней мере, это лучше, чем строить каждый день даром (или строить много раз в день, даже на фоне минимальных изменений).