Travis,是否可以将cron-scheduled构建和检查github变化结合起来?

问题描述 投票:0回答:1

在SO上也在尝试,在 特拉维斯论坛.

我有一个相当大的项目,需要很长的时间来构建。正因为如此,我不希望每次Github推送的变更都要重新构建。同时,我希望每天都能自动构建它。但前提是自上次构建后,GitHub有变化。. 在Travis中安排每日重建似乎并不能达到这样的效果,反正每天都会重建repo,即使GH上的代码和前一天完全一样。白白重建一个大的没有变化的代码库并不是很好。

在Travis里有办法获得吗?要不要提交一个新的功能请求?

travis-ci
1个回答
0
投票

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

据我所知,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日志显示的事件并没有将其与任何其他构建区分开来。但是,在我找到更好的解决方案之前,至少这比每天白白地构建要好得多(或者每天构建很多次,甚至是针对最小的变化)。

© www.soinside.com 2019 - 2024. All rights reserved.