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:

  1. Returns false early if there is no merge request associated with the pipeline command
  2. Checks the merge request title against the existing SKIP_PATTERN regex
  3. 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

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.

Merge request reports

Loading
Loading