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

GitLab运行测试流水线报错“No stages / jobs for this pipeline”求助

解决GitLab流水线报错“No stages / jobs for this pipeline”并实现分分支执行测试

问题原因

你的配置中每个测试job都通过only指定了仅在特定分支执行:

  • unit_tests仅在unit-tests分支运行
  • api_tests仅在api_tests分支运行
  • ui_tests仅在ui_tests分支运行

如果当前触发流水线的分支不在上述列表中,GitLab会找不到可执行的job,从而抛出该报错。另外还有两个潜在问题:

  1. 三个job的script都是npm test,无法区分不同类型的测试,需要调整为对应单元/API/UI测试的命令
  2. except: - main和only规则叠加存在逻辑冗余(only优先级高于except,这条配置可以省略)

解决方案

1. 基础修复:匹配分支触发规则

如果你希望通过分支区分测试类型,需要将代码推送到对应的分支:

  • 推送到unit-tests分支:触发单元测试流水线
  • 推送到api_tests分支:触发API测试流水线
  • 推送到ui_tests分支:触发UI测试流水线

2. 优化配置(推荐)

使用GitLab CI更推荐的rules替代旧的only/except,同时修正测试命令,让配置逻辑更清晰:

stages:
  - test

image: node:18.16.0-alpine 

before_script:
  - apk add --no-cache sudo curl build-base g++ libpng libpng-dev jpeg-dev pango-dev cairo-dev giflib-dev python3 firefox

unit_tests:
  stage: test
  script:
    - npm run test:unit  # 替换为项目实际的单元测试命令
  artifacts:
    paths:
      - unit-test-reports/
  rules:
    - if: '$CI_COMMIT_BRANCH == "unit-tests"'

api_tests:
  stage: test
  script:
    - npm run test:api   # 替换为项目实际的API测试命令
  artifacts:
    paths:
      - api-test-reports/
  rules:
    - if: '$CI_COMMIT_BRANCH == "api_tests"'

ui_tests:
  stage: test
  script:
    - npm run test:ui    # 替换为项目实际的UI测试命令
  artifacts:
    paths:
      - ui-test-reports/
  rules:
    - if: '$CI_COMMIT_BRANCH == "ui_tests"'

3. 可选:支持手动触发特定测试

如果不想依赖分支名,也可以通过流水线变量手动触发指定测试,这样在任何分支都能按需执行:

stages:
  - test

image: node:18.16.0-alpine 

before_script:
  - apk add --no-cache sudo curl build-base g++ libpng libpng-dev jpeg-dev pango-dev cairo-dev giflib-dev python3 firefox

unit_tests:
  stage: test
  script:
    - npm run test:unit
  artifacts:
    paths:
      - unit-test-reports/
  rules:
    - if: '$TEST_TYPE == "unit"'
      when: always
    - if: '$CI_COMMIT_BRANCH == "unit-tests"'

api_tests:
  stage: test
  script:
    - npm run test:api
  artifacts:
    paths:
      - api-test-reports/
  rules:
    - if: '$TEST_TYPE == "api"'
      when: always
    - if: '$CI_COMMIT_BRANCH == "api_tests"'

ui_tests:
  stage: test
  script:
    - npm run test:ui
  artifacts:
    paths:
      - ui-test-reports/
  rules:
    - if: '$TEST_TYPE == "ui"'
      when: always
    - if: '$CI_COMMIT_BRANCH == "ui_tests"'

使用时,在手动触发流水线时设置TEST_TYPE变量为unit/api/ui即可执行对应测试。

验证方法

  1. 推送代码到对应分支,查看流水线是否正常触发并执行对应测试
  2. 手动触发流水线时,检查规则匹配情况,确保目标job被选中执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:50:14