travis-ci.org如何限制构建速度?

36

我的公司正在使用travis-ci.org(开源软件的免费版本)自动构建提交到我们在github上的存储库上的Pull Requests。每天有大约20个人向同一个仓库提交Pull Requests,并且每个请求都会在一个矩阵中构建,其中包括每个Build两个Build Jobs。我们经常注意到一旦发送到travis后,需要几分钟甚至几个小时才能开始构建。(症状:build出现在travis上但计时器不会开始,一段时间没有控制台输出。)

我认为这是因为travis-ci.org要么被备份了,要么限制了builds。首先

  • travis有意限制/限制构建吗?

如果是这样,如何限制构建?

  • 每个登录?(即每个github用户/组织等)
  • 每个repo?

构建是否受到限制

  • 每个“构建”?
  • 每个“构建工作”?

了解这一点将使我们在travis-ci.org设定的限制内优化我们的构建完成时间(希望与作为免费用户玩得好相符)。


你说“throttle"时,是不是指“触发(triggered)”的意思? - Jared Burrows
这个构建是开源的吗?我从来没有遇到过 Travis 构建需要花费数小时的情况。 - Jared Burrows
是的,这个构建是开源的。通常不需要接近一个小时,但当我们这边有很多活动时,花费10分钟甚至更长时间来启动构建并不罕见。 - Danny Roberts
你能发布一个链接吗? - Jared Burrows
https://travis-ci.org/dimagi/commcare-hq/builds - Danny Roberts
显示剩余2条评论
4个回答

27
如果你查看travis-ci状态页面(http://www.traviscistatus.com/),你会注意到“Active Linux Builds for Open Source projects”周期性地达到最大值。基于travis私有构建系统的工作方式(所有“Build Jobs”的单个队列,同时不超过x个运行),我怀疑他们为所有开源Build Jobs设置了一个单一队列。
你可以将构建拆分成多个作业,每个作业都会更快地完成。当Travis处于轻负载状态时,它们将并行运行,并且您的构建将更快返回,但是当Travis运行许多其他构建时,您的构建可能只能按顺序运行。

看一下你发布的存储库中的.travis.yml,你可能会注意到通过添加apt和pip缓存(http://docs.travis-ci.com/user/caching/)可以获得良好的性能提升。您还应考虑切换到Travis的新基于容器的基础架构(http://docs.travis-ci.com/user/workers/container-based-infrastructure/)。但是,这只有在您能够替换构建中的sudo apt-get命令时才有效。


17

4
在Travis CI上,所有构建都是独立排队的,与您的登录或存储库无关。
此外,如果您查看Travis CI状态历史记录(在这里http://www.traviscistatus.com/history),您会发现他们在4月7日和4月8日注意到并调查了您描述的问题。他们还在4月9日更新了他们的构建环境(http://docs.travis-ci.com/user/build-environment-updates/2015-04-09/)。在更新期间,要处理的队列正在增长,必须稍后处理。
这些事情的组合可能是您经历长时间延迟的原因。
我希望这可以帮助您。

2
我使用 Travis 作为个人用户,每天的构建次数很少。我经常注意到在构建开始之前会有几分钟的延迟,所以这可能是正常的。经过一些调查,我没有找到关于 Travis 限制的非常好的数字,但它们肯定有一些限制(source)。这是一个 GitHub 问题,询问他们是否可以限制每个项目的构建次数,以便他们不会太快地达到用户/公司的限制。这意味着有一些限制被执行。免费版本被描述为“公平使用”,所以我不确定这意味着什么。如果您的构建速度较慢,我建议您尝试speeding up the build,以便在达到限制之前充分利用它们。
抱歉,我无法提供实际数字,但您应该尽力优化构建。我猜想他们可能没有任何硬性限制,因为他们可能仍在增长并改变他们的系统能够处理的内容。
我找到了一些数字:
时间限制: http://docs.travis-ci.com/user/build-configuration/#Job-Timeouts 计划和功能: https://travis-ci.com/plans 我会继续查找限制数字,如果找到了,我会更新我的回答。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接