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

如何在GitLab CI中仅对合并入master前的squash提交运行conventional commit检查

GitLab CI 针对squash commit执行commitizen检查的需求与实现思路

我需要在GitLab CI流水线中运行commitizen(用于强制校验conventional commit提交规范的Python工具)的lint检查命令cz check,要求仅对从feature分支合并入master之前的squash commit执行该检查,目前暂未找到可直接落地的实现方案。

现有前提假设

  • 仅当合并策略为merge commit(非fast forward模式)时该需求可实现:需要有一个合并入master前可触发失败的提交节点,才能中止合并流程;如果采用fast forward策略,合并全程仅产生1个提交,等流水线失败时代码已经合入master,无法起到拦截效果。我目前可以接受使用merge commit策略,但也想了解fast forward场景下的解决方案。
  • squash commit会在feature分支上生成并触发对应流水线。
  • 如果squash commit对应的流水线运行失败,GitLab CI会自动终止后续的merge commit操作。

待解决的核心问题

若上述假设成立,需要在流水线中判断当前处理的提交是否为squash commit,目前暂未找到GitLab或Git原生提供的可直接用于该判断的标识字段。

初步实现规划

计划引入commitizen官方提供的pre-commit钩子,配置stages: [manual],之后按照pre-commit官方的阶段配置规则,在流水线中执行pre-commit run --hook-stage manual [hookid]命令触发检查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:45:02