Draft: Support [skip ci] in MR titles for all pipeline types
What does this MR do and why?
Currently, [skip ci] / [ci skip] in a merge request title only works as an accidental side-effect when merged results pipelines are enabled. This happens because the MR title ends up embedded in the virtual merge commit message, which then triggers the existing commit-message-based skip logic. It does not work for:
- Basic merge request pipelines (merged results disabled)
- Merge requests with conflicts (where merged results can't run)
This MR makes [skip ci] in MR titles an explicit, first-class feature that works for all merge request pipeline types by checking the merge request title directly in the Skip chain step, independent of the commit message.
Implementation
Adds a new merge_request_title_skips_ci? private method to Gitlab::Ci::Pipeline::Chain::Skip that:
- Returns
falseearly if there is no merge request associated with the pipeline command - Checks the merge request title against the existing
SKIP_PATTERNregex - Is included in the
skipped?check alongside the existing commit message and push options checks
The existing ignore_skip_ci flag and EE execution policy overrides continue to work as expected, since they gate the top-level skipped? method.
References
- Discussion: !232622 (comment 3280729075)
- Related MR: !232622 (merged)
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.