GitLab Releases Code quality Stability

Merge allowed without a passing pipeline

Part of the GitLab project protection check · fix arrives as a guide

What it is

The project does not require pipelines to succeed before a merge request can be merged.

Why it matters

CI becomes advisory. A failing pipeline is a notification rather than a gate, and broken code reaches the default branch whenever someone merges without checking.

The setting

Settings → Merge requests → Merge checks ☑ Pipelines must succeed ☑ Skipped pipelines are considered failed

Without the first box, the Merge button works with a failed, missing or still-running pipeline. The second box closes the [skip ci] loophole — a skipped pipeline is not a green pipeline.

The rebase gap this closes

The scenario behind the “rebase without pipeline” searches: an MR is green, the target branch moves on, the author rebases — and the rebased commits are new commits the pipeline never ran against. Without “Pipelines must succeed”, the stale green from before the rebase is enough to merge. The combination that actually holds is this setting plus merged-results pipelines (Settings → CI/CD → run pipelines against the merged result), so what gets tested is what will actually land.

What merging red actually costs

A failing pipeline someone merges past is rarely the incident itself — it is the precedent. Once red merges are normal, the pipeline stops being information: broken main becomes routine, deploys need a human to vouch for them, and the test suite decays because failures carry no consequence. The setting is less about any single merge than about keeping green meaningful.

Fix it manually

Tick both boxes. If some MRs legitimately run no pipeline — docs-only changes under rules: filters — give them a trivial always-pass job instead of leaving the gate open for everyone:

# .gitlab-ci.yml — a pipeline for changes that otherwise have none noop: stage: test script: ["true"] rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' when: always

How lumioguard fixes it

The scan reads the merge-check settings alongside branch protection — the two gates only work as a pair. The fix arrives as a guide with both settings and the no-op job if your pipeline rules need it.

Run them all on your app

Connect your repo and your live services with read-only scopes. The first scan is free, and nothing changes without your approval.