Трэвис, возможно ли объединить запланированные cron сборки и проверки изменений github? - PullRequest
0 голосов
/ 30 апреля 2020

Примерно так же, после форума Travis .

У меня довольно большой проект, который требует много времени для сборки. Из-за этого я не хочу, чтобы он восстанавливался после каждого сдвигаемого изменения Github. В то же время я хотел бы собирать его автоматически каждый день, , но только в том случае, если с момента последней сборки произошли изменения в GitHub. Планирование ежедневного перестроения в Travis, похоже, не дает такого результата, репо перестраивается ежедневно в любом случае, даже если код в GH точно такой же, как и днем ​​ранее. Восстановление большой неизмененной кодовой базы ни для чего не очень хорошо.

Есть ли способ получить это в Трэвисе? Должен ли я подать запрос на новую функцию?

1 Ответ

0 голосов
/ 07 мая 2020

Хорошо, странно, это не кажется интересной проблемой, поэтому мне пришлось самостоятельно искать какое-то решение.

Насколько я понимаю, Трэвис не поддерживает такую ​​функцию (я не знаю почему, для меня это довольно просто 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 показывают событие, не отличая его от других сборок. , Но пока я не найду лучшего решения, по крайней мере, это лучше, чем строить каждый день даром (или строить много раз в день, даже на фоне минимальных изменений).

...