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

GitLab流水线Cypress定时测试无法启动,规则配置是否正确?

GitLab流水线Cypress测试配置问题排查与修正

配置中的核心问题

你的.gitlab-ci.yml存在几个语法和逻辑问题,直接导致调度流水线无法正确触发:

  1. 转义引号解析错误
    配置里用了"这种HTML转义引号,GitLab的CI解析器无法正确识别这些转义字符,导致规则条件完全不匹配,必须替换为普通的单引号或双引号。

  2. 规则逻辑冗余且存在错误

    • cypress:test的后两条when: never规则冗余,若第一条调度规则因引号问题失效,会直接导致整个job无法触发。
    • cypress:test:smoke里的合并请求规则逻辑错误:在merge_request_event触发时,CI_COMMIT_BRANCH指的是源分支,而非目标分支。如果要在合并到main分支时执行冒烟测试,应该用CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"。
  3. 调度变量匹配一致性问题
    需确保GitLab调度配置中确实添加了CI_SCHED_FREQ变量,且值为daily或weekly(注意大小写要和配置里的全小写完全一致)。

修正后的配置

---
#--------#
# STAGES #
#--------#

stages:
  - test

#------#
# JOBS #
#------#

cypress:test:
  image: cypress/browsers:node-20.11.0-chrome-121.0.6167.184-1-ff-123.0-edge-121.0.2277.128-1
  stage: test
  rules:
    # 每周调度触发全量测试
    - if: '$CI_PIPELINE_SOURCE == "schedule" && $CI_SCHED_FREQ == "weekly"'
      when: always
    # 其他场景不执行此job
    - when: never
  parallel: 2
  cache:
    key: ${CI_COMMIT_BRANCH}
    paths:
      - node_modules/
      - /root/.cache/Cypress
  script:
    - yarn install
    - yarn add mocha
    - yarn test
  artifacts:
    when: always
    paths:
      - cypress/reports/
    expire_in: 1 week

cypress:test:smoke:
  image: cypress/browsers:node-20.11.0-chrome-121.0.6167.184-1-ff-123.0-edge-121.0.2277.128-1
  stage: test
  rules:
    # 合并请求目标为main时执行冒烟测试
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"'
      when: always
    # 每日调度触发冒烟测试
    - if: '$CI_PIPELINE_SOURCE == "schedule" && $CI_SCHED_FREQ == "daily"'
      when: always
    # 其他场景不执行此job
    - when: never
  cache:
    key: ${CI_COMMIT_BRANCH}
    paths:
      - node_modules/
      - /root/.cache/Cypress
  script:
    - yarn install
    - yarn add mocha
    - yarn test:smoke
  artifacts:
    when: always
    paths:
      - cypress/reports/
    expire_in: 1 week

额外排查步骤

  • 用GitLab的CI Lint工具验证配置:进入项目CI/CD -> CI Lint,粘贴配置检查语法是否正确。
  • 查看调度流水线预运行日志:在调度列表中点击对应流水线,检查变量是否正确传递、规则是否匹配。
  • 确认调度配置的分支:确保调度针对的是存放当前配置的分支(比如main),避免拉取旧配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:41:06