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

GitLab CI/CD配置问题:合并请求触发流水线无响应

哦,这个问题我熟!你遇到的问题根源在于重复使用了only关键字——GitLab CI的配置里,如果同一个job下出现多个相同的顶级关键字(比如这里的两个only),后面的会直接覆盖前面的配置。

你原本想表达的是“只有当合并请求涉及json/*文件变更时才运行这个job”,但第二个only: [merge_requests]完全覆盖了第一个带changes条件的only块,导致原来的文件变更检查失效,而且单纯的merge_requests触发逻辑没有结合你需要的变更条件,所以流水线没启动。

解决方法很简单,把两个条件合并到同一个only块里就行,这样两个条件会同时生效:

test:
  stage: test
  image: darrylb/jsonlint
  script:
    - for jsonfile in json/*.json; do jsonlint "$jsonfile"; done;
  only:
    - merge_requests
    changes:
      - json/*

如果想更清晰地控制触发逻辑,也可以用GitLab推荐的rules关键字替代only,可读性更强:

test:
  stage: test
  image: darrylb/jsonlint
  script:
    - for jsonfile in json/*.json; do jsonlint "$jsonfile"; done;
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
      changes:
        - json/*
      when: always

这样配置后,只有当触发源是合并请求,并且json/*目录下的文件有变更时,这个test job才会被触发运行。

你也可以快速检查下项目的CI/CD设置,确保“合并请求流水线”是开启状态(路径:项目设置 → CI/CD → 流水线 → 合并请求流水线),不过默认情况下这个选项是启用的,大概率还是配置重复覆盖的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 10:32:40