我可以在我的Dockerfile中使用WORKDIR与Github Actions吗?(另外,解决Jest的“未找到测试”)

4 浏览
0 Comments

我可以在我的Dockerfile中使用WORKDIR与Github Actions吗?(另外,解决Jest的“未找到测试”)

我可以在Github Actions的Dockerfile中使用WORKDIR吗?

我正在从一个CI提供商切换到Github Actions,并发现我有一个步骤运行docker run npm test -- --coverage,与我的以前的CI相比,似乎有些东西改变了我的Jest测试运行的方式,我会收到以下错误消息:

未找到测试,退出代码为1
使用`--passWithNoTests`运行以退出代码0
在/app中
  检查了18个文件。
  testMatch:/**/?(*.)+(spec|test).[jt]s?(x) - 1个匹配
  testPathIgnorePatterns:/.next/,/node_modules/,/testconfig/ - 16个匹配
  testRegex:- 0个匹配
Pattern:- 0个匹配

相同的测试匹配在我的以前的CI解决方案中会正确运行,使用相同的命令。

有些人在处理这个错误时不小心忽略了他们的测试路径:Jest No Tests found

我尝试了很多不同的方法 - 主要的猜测是我的测试是在错误的目录中运行。在我的试验中,我尝试了以下方法:

  • 为testMatch和testPathIgnorePatterns指定
  • 完全删除testPathIgnorePatterns
  • 为Jest指定--config路径,还有--no-cache选项
  • 在docker run选项中指定-w工作目录
  • 使用多命令的docker run方法/bin/sh/ (cd /app && npm test)

最终,我在Github Actions文档:Dockerfile指令和覆盖中找到了这一行:

GitHub在GITHUB_WORKSPACE环境变量中设置工作目录路径。建议不要在Dockerfile中使用WORKDIR指令。

移除Dockerfile中的WORKDIR指令可以解决我的错误

但是,有没有办法避免从我的Dockerfile中移除WORKDIR?也许使用WORKDIR可能是Docker的最佳实践,我更愿意遵循Docker的指导方针而不是Github Actions。

谢谢您的时间!

0