【问题标题】:How does travis-ci.org throttle builds?travis-ci.org 油门是如何构建的?
【发布时间】:2015-06-16 12:07:09
【问题描述】:

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

我认为发生这种情况是因为 travis-ci.org 已备份或限制构建。首先

  • travis 是否有意限制/速率限制构建?

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

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

构建是否受到限制

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

了解这一点后,我们可以在 travis-ci.org 设置的约束范围内优化构建完成时间(希望这与作为免费用户玩得开心相一致)。

【问题讨论】:

  • 你说“节流”是指“触发”吗?
  • 不是真的,我想我可以使用“排队”这个词而不是节流,但这是问题的一部分——如果我们一次运行太多(20 人),travis 是否有意限制构建进程全天向同一个 repo 提交 PR)?我可以更新问题
  • 这个构建是开源的吗?我从来没有让 travis 花费数小时来构建。
  • 是的,这个版本是开源的。通常不需要接近一个小时,但是当我们结束时有很多活动时,10 分钟的时间并不少见只是为了让构建开始
  • 你能发个链接吗?

标签: travis-ci


【解决方案1】:

如果您查看 travis-ci 状态页面 (http://www.traviscistatus.com/),您会注意到“开源项目的活动 Linux 构建”会定期达到最大值。根据 travis 私有构建系统的工作方式(所有“构建作业”的单个队列,一次运行不超过 x 个),我怀疑他们有一个用于所有开源构建作业的队列。

您可以将构建拆分为多个作业,每个作业都会更快地完成。当 Travis 处于轻度使用状态时,它们会并行运行,您的构建将更快返回,但当 Travis 运行许多其他构建时,您的构建可能只能按顺序运行。

查看您发布的 repo 中的 .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 命令时才有效。

【讨论】:

    【解决方案2】:

    Travis-CI 目前为开源项目提供 five concurrent builds,这将计入每个 GitHub 登录名或组织 as the Apache Software Foundation discovered 的所有存储库中。 Travis 将所有项目和拉取请求中的每个“构建作业”计入并发构建的限制。

    【讨论】:

      【解决方案3】:

      在 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/)。在更新期间,要处理的队列正在增长,并且必须稍后处理。 这种情况的组合可能是您经历的长时间延迟的根源。

      希望对你有所帮助。

      【讨论】:

        【解决方案4】:

        我将 Travis 用于个人用途,我每天的构建很少。我经常注意到构建开始前有几分钟的延迟,所以这可能是正常的。经过一番研究,我无法找到关于 Travis 限制的非常好的数字,但他们肯定有一些 (source)。这是一个 GitHub 问题,询问他们是否可以限制每个项目的构建,以便他们不会尽快达到用户/公司限制。这意味着执行了一些限制。免费版本被描述为“合理使用”,所以我不确定这意味着什么。如果您的构建运行缓慢,我会查看speeding up the build,以便您在达到极限之前充分利用它们。

        抱歉,我无法提供实际数字,但您应该尽最大努力优化构建。我猜他们可能没有任何硬性限制,因为他们可能仍在增长并改变他们的系统可以处理的内容。

        我找到的一些数字:

        如果/当我罚款时,我将继续寻找限制数字并更新我的答案。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-12-22
          • 1970-01-01
          • 1970-01-01
          • 2021-07-28
          • 2019-03-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多