【发布时间】:2019-09-15 11:28:24
【问题描述】:
由于某种原因,Circle 无法在构建过程的前一步中使用与 npm install 一起安装的 ts-mocha。
它曾经可以工作,但由于某种原因它突然不再工作了。
这是 CircleCI 构建作业的结果:
所有测试在本地运行良好:
这是我使用npm test 运行的package.json 中的脚本:
"test": "env NODE_ENV=test ts-mocha ./test/**/*.spec.ts --timeout 10000"
包版本为"ts-mocha": "^6.0.0",
这是我的 CircleCI 工作配置(一个月内没有改变):
jobs:
build:
docker:
- image: circleci/node:10.13.0
steps:
- checkout
- restore_cache:
keys:
- v1-dependencies-{{ checksum "package-lock.json" }}
- v1-dependencies-
- run: npm install
- save_cache:
paths:
- node_modules
key: v1-dependencies-{{ checksum "package-lock.json" }}
- run: npm test
- run: npx tsc
Circle 方面似乎出了点问题,因为代码没有变化。
即使我尝试重新运行旧的 成功 构建,它们也会失败并出现同样的错误。
我尝试过的事情:
- 在同一步骤中运行
npm ci && npm test,但产生相同的结果。 - 删除
package-lock.json - 正在更新
package-lock.json - 正在运行
npm install --no-package-lock - 更新 npm
- 正在运行
npm update - 正在运行
npm audit fix - 清理 npm 缓存
还尝试使用npx 而不是依赖之前安装的ts-mocha 包,结果如下:
【问题讨论】:
-
我想知道
circleci/node:10.13.0的上游更改是否超出了 CircleCI 的控制 - 它会不时在他们的论坛上报告。要临时解决此问题,请查看“Spin up environment”中的 Docker 映像摘要,了解您上次成功构建的内容。我想这将是 40 个字符长。然后查看第一次失败构建的摘要,看看它是否不同。 -
如果不同,则获取有效的,并使用
circleci/node:10.13.0@sha256:c8d8e642612872e5a9882c042341c35cbecf9e13d948e3a3bfcb9(用您自己的哈希替换)。这是一个临时修复,因为它不能解决根本问题,但至少它可以让你的 CI 再次工作。 -
如果你有这样的工作,我建议获得一个构建后的 SSH 会话并像本地机器一样调试它。我要做的第一件事是查看节点模块的安装位置,然后当您尝试运行测试时,您当前的工作目录是什么。
标签: node.js typescript npm mocha.js circleci