我可以在我的Dockerfile中使用WORKDIR与Github Actions吗?(另外,解决Jest的“未找到测试”)
我可以在我的Dockerfile中使用WORKDIR与Github Actions吗?(另外,解决Jest的“未找到测试”)
我可以在Github Actions的Dockerfile中使用WORKDIR吗?
我正在从一个CI提供商切换到Github Actions,并发现我有一个步骤运行docker run
,与我的以前的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。
谢谢您的时间!