GitLab CI浏览器性能作业无匹配文件、制品上传下载异常咨询
问题现象
按照官方示例配置GitLab CI的browser_performance浏览器性能测试作业后,执行过程中出现两类告警,但作业最终状态显示为成功:
- 下载制品阶段提示:
No artifacts found(未找到制品) - 上传制品阶段先后提示
sitespeed-results/目录无匹配文件、无文件可上传,browser-performance.json无匹配文件、无文件可上传
对应作业关键日志如下:
Uploading artifacts for successful job 00:00 Uploading artifacts... WARNING: sitespeed-results/: no matching files ERROR: No files to upload Uploading artifacts... WARNING: browser-performance.json: no matching files ERROR: No files to upload Cleaning up project directory and file based variables 00:01 Job succeeded
参考的基础配置如下:
include: - template: Verify/Browser-Performance.gitlab-ci.yml browser_performance: variables: URL: "https://example.com" DEGRADATION_THRESHOLD: 5
触发原因
该问题由模板默认配置逻辑和测试步骤执行异常共同导致:
- 脚本无错误强校验:内置模板的执行脚本默认没有配置
set -e规则,核心的sitespeed.io性能扫描步骤即使执行失败,脚本也会继续走完后续流程,最终返回成功状态码,因此作业不会被标记为失败。 - 制品上传非强制:模板默认的制品上传规则不要求待上传文件必须存在,找不到目标文件时仅输出告警,不会触发作业失败,因此会出现无匹配文件的报错提示。
- 跨版本对比逻辑触发下载告警:模板默认开启历史版本性能对比能力,会自动拉取上一次成功作业的性能报告制品做差值计算,如果是首次执行该作业、或者历史作业从未成功生成过性能报告,就会触发下载阶段的
No artifacts found提示。 - 核心根因是性能扫描未正常产出结果:绝大多数场景下,文件找不到的本质是sitespeed.io没有成功跑完测试,常见诱因包括CI Runner网络无法连通配置的目标URL、自定义Runner未安装Chrome/Chromium等sitespeed.io依赖的浏览器环境、测试页面加载崩溃导致扫描提前中断,最终没有生成预期的
sitespeed-results/结果目录和browser-performance.json报告文件。
解决方案
按照以下顺序排查修复即可:
- 先排查扫描步骤执行异常
拉取作业完整执行日志,定位到sitespeed.io启动执行的日志段落,排查是否存在页面访问超时、浏览器启动失败、依赖缺失的明确报错,针对性修复:- 确认配置的
URL地址在CI Runner的网络环境下可以正常访问,不要使用仅本地/内网可访问、Runner无法连通的地址 - 如果使用自建Runner执行作业,提前在Runner环境安装Chrome/Chromium、必要的系统图形依赖,保证sitespeed.io可以正常启动浏览器执行扫描
- 确认配置的
- 关闭不必要的历史制品拉取提示
如果不需要和历史版本做性能差值对比,可以在作业变量中添加COMPARE_WITH: "none",关闭跨版本对比逻辑,即可消除下载阶段的No artifacts found告警。 - 增加配置避免作业假成功(可选)
在作业配置中补充错误退出规则和制品强校验,确保扫描步骤失败时作业可以正确标记为失败,避免出现告警但显示成功的假正常情况,参考配置如下:
include: - template: Verify/Browser-Performance.gitlab-ci.yml browser_performance: variables: URL: "https://example.com" DEGRADATION_THRESHOLD: 5 COMPARE_WITH: "none" # 不需要历史对比时开启 script: - set -e # 脚本任意步骤失败立即退出,返回错误状态码 - !reference [.browser_performance, script] # 引用模板内置的执行脚本 artifacts: when: always paths: - browser-performance.json - sitespeed-results/
内容的提问来源于stack exchange,提问作者badreddine
相关产品推荐
相关产品推荐

