GitLab Runner中无法获取失败测试视频制品,求解决方案
问题分析与解决
核心问题
你的Docker挂载配置存在两个关键错误,导致视频文件没有同步到GitLab CI的videos/目录中:
- 路径拼写错误:挂载命令里的
cypres少了一个s,正确路径应为cypress - 挂载方向错误:当前挂载未将容器内的视频目录映射到CI runner的
videos/目录,而是创建了匿名卷,无法同步文件到指定位置
修正步骤
1. 修复Docker Run命令
将原命令的挂载部分修改为绑定容器内视频目录到CI runner的./videos目录,同时修正拼写错误:
docker run --name e2e -v "$(pwd)/videos:/e2e/cypress/videos" --network project-0_default project-0_e2e:latest
-v "$(pwd)/videos:/e2e/cypress/videos":把CI runner当前目录下的videos目录,和容器内的/e2e/cypress/videos目录绑定,容器生成的视频会直接同步到runner的videos目录- 移除
-w ./videos参数,Cypress会默认将视频输出到/e2e/cypress/videos,无需指定容器工作目录
2. 验证目录权限(可选)
如果修正后仍无文件,可能是权限问题,可在CI脚本中添加权限设置:
script: - mkdir -p videos - chmod 777 videos # 确保目录具备写入权限 - sh test.sh
3. 确认制品配置
当前的artifacts配置是正确的,只要videos/目录下有文件,构建失败时就会被捕获为制品:
artifacts: paths: - videos/ when: on_failure
验证逻辑
修正后,容器内生成的/e2e/cypress/videos/register.spec.js.mp4会同步到CI runner的./videos目录,GitLab CI会在构建失败时将该目录作为制品上传,你就能下载到包含视频文件的压缩包。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

