使用多个GitLab Runner来进行一个CI构建是否可行?

6

有一个项目包含很多测试,全部运行需要大约20分钟的时间。不幸的是,无法在同一GitLab Runner内并行运行它们。我想知道是否有任何好的做法来启动多个GitLab Runner,使用相同的环境但不同的测试套件呢?


当你说“一个CI构建”时,你是指能够将测试套件分成多个部分还是不能? - tmt
@cascaval 是的,我的意思是当我将更改推送到GitLab时,它应该开始在并行运行程序中构建并进行测试。实际上,我通过作业和阶段找到了一种方法来实现这一点(http://docs.gitlab.com/ce/ci/yaml/README.html#jobs)。但我认为还有一种更优雅的方式。 - t1maccapp
这正是我在开始写答案时想要建议您的,但我停下来是因为我不确定您是否希望单个作业由多个运行器运行,并具有每个运行器应完成的神奇区别。现在我添加了我的答案,其中还指向了一些配置,以使其按照您的预期工作。 - tmt
1个回答

13
如果您可以将测试套件分成几个部分,您可以在同一阶段(测试)创建相等数量的作业。 同一阶段中的作业并行运行,但是前一阶段的作业完成后,下一阶段的作业将开始。 即使您只有一个运行程序,它们也会并行运行。 让我们假设这个测试案例:
stages:
  - test

testsA:
  stage: test
  script:
    - sleep 60
    - echo 'Test set A done'

testsB:
  stage: test
  script:
    - sleep 30
    - echo 'Test set B done'

你会看到它们同时运行,测试 A 将在测试 B 之后完成。
调整跑步者的 设置 (/etc/gitlab-runner/config.toml),检查以下两个选项:
  • concurrent = 所有跑步者并行运行的作业总数
  • limit (针对每个跑步者设置) = 每个特定跑步者并行运行的作业数量
注意:我还没有测试过一个项目中多个跑步者,每个跑步者都将 limit 设置为 1,是否会使用不同的跑步者运行这些作业。但是,我认为它应该是这样工作的。

3
感谢您指出“concurrent”选项,这是我配置失败的原因。 - CharlyDelta
你可以在 ~/.gitlab-runner/config.toml 中找到该文件。 - Daniel Gomez Rico

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