【问题标题】:Is there a way to split my tests and have them run parallel in my lerna monorepo?有没有办法拆分我的测试并让它们在我的 lerna monorepo 中并行运行?
【发布时间】:2020-08-28 17:51:23
【问题描述】:

我有一个具有这种结构的 lerna monorepo:

packages
  - package1
    - src
      - components
        - component1
          - component1.test.js
  - package2
  - package3
  - package4
package.json

在我的根 package.json 中,我的测试脚本如下所示:

"scripts": {
    "test": "lerna run --stream test",
 },

在我的个人package.jsons 中,它们正在使用

的测试命令运行
"scripts": {
    "test": "jest",
},

使用我的config.yml,我正在像这样运行我的测试工作:

jobs:
  test:
    <<: *defaults
    steps:
      - attach_workspace:
          at: ~/

      # run tests!
      - run: yarn test 
      # will run lerna run --stream test

目前,当我运行测试时,我使用lerna run --stream test -- --runInBand 一次性运行所有测试,这将运行所有每个包中的测试一次。这会带来一些问题,最明显的是 circleci 会出现 error 137: Out of memory 错误。

解决方法是只为更大的计划付费,将我们的 resource_class 更改为 medium+,但我觉得这有点矫枉过正。

我正在考虑替代方案,并偶然发现了parallelism。我对圈子很陌生,所以我想知道是否可以按包拆分我的测试并相互并行运行?

我已尝试将parallelism: 4 添加到我的测试作业中,但它运行所有测试 4 次。有可能做这样的事情吗?还是我应该有一个单独的工作,并在每个包中 cd 并单独运行 yarn test

【问题讨论】:

  • 我发现自己处于类似情况,也想优雅地将 CircleCI 的 parallelism 功能与 lerna run 结合起来。我打开此功能请求以获得本机支持:github.com/lerna/lerna/issues/2632

标签: continuous-integration circleci


【解决方案1】:

我们为此编写了自己的小扩展:lerna-parallelism

它自动与 CircleCI 的 parallelism 环境变量集成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 2020-07-30
    相关资源
    最近更新 更多