You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab CI重试Cypress任务未执行spec直接通过问题排查

问题根因说明

这个重试秒过的问题确实和两次运行Run URL相同直接相关,核心诱因是你配置的Cypress ci-build-id参数取值不符合重试场景要求,Cypress对接的录制服务不支持同标识的运行任务重复执行。

  • 你当前配置中Cypress启动参数写死了--ci-build-id $CI_PIPELINE_ID,但GitLab CI的规则是:同一个Pipeline下无论重试多少次作业,$CI_PIPELINE_ID的值都保持不变,唯一变化的是作业维度的$CI_JOB_ID
  • Cypress录制服务的判定逻辑为:同个ci-build-id+同个group名称的测试任务,只要服务端已经存在对应运行记录,后续收到相同标识的运行请求时,会直接判定为重复提交,直接返回成功状态、复用之前生成的Run URL,不会触发本地任何测试用例执行,这就是你看到作业仅5秒就结束、没有任何spec执行日志的原因
  • 日志里出现的tput: unknown terminal报错属于无关的终端环境变量问题,首次正常运行时也存在该提示,不会影响测试执行逻辑,可以忽略
修复方案

修改.gitlab-ci.yml中Cypress的启动命令,将作业唯一ID拼入ci-build-id参数,保证每次作业运行(含重试)的build ID全局唯一即可:

test-cypress-chrome:
    extends: [ .test-job ]
    stage: test-frontend
    script:
    - $COMPOSE_CMD run cypress yarn cy2 run --browser chrome --record --key some-key --ci-build-id $CI_PIPELINE_ID-$CI_JOB_ID --group chrome

该修改不会影响Cypress并行测试的分组能力,只要保证同一次并行触发的作业使用相同build ID即可正常聚合测试结果,重试作业因为生成了新的build ID,会被识别为全新运行任务,正常执行所有测试用例。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 22:15:45