【发布时间】: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