Travis,有可能将cron计划的构建和github更改的检查结合起来吗



在Travis论坛之后也在尝试SO。

我有一个相当大的项目,需要很长时间才能完成。正因为如此,我不希望它在每次Github推送更改时都被重新构建。同时,我想每天自动构建它,,但前提是自上次构建以来GitHub发生了更改。在Travis中安排每天的重建似乎并没有达到这样的结果,回购无论如何都是每天重建的,即使GH上的代码与前一天完全相同。免费重建一个没有改变的大代码库不是很好。

有办法在特拉维斯身上得到它吗?我应该提交新功能请求吗?

好吧,奇怪的是,这似乎不是一个有趣的问题,所以我不得不自己找到某种解决方案。

据我所知,Travis不支持这样的功能(我不知道为什么,这对我来说很基本(,但它提供了一个环境变量来了解是什么触发了构建。可与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日志显示的事件没有将其与任何其他构建区分开来。但是,在我找到更好的解决方案之前,至少这比每天无偿构建(或者一天构建多次,即使是针对最小的更改(要好。

相关内容

最新更新