GitLab CI/CD Skip-CI and Push Options Control Prompt
Control when pipelines run from the Git push itself — using [skip ci] commit flags, ci.skip / ci.variable push options, and workflow rules — so docs-only commits, bot pushes, and bulk merges do not waste runner minutes or trigger duplicate pipelines.
- Target user
- Developers and release engineers managing pipeline trigger noise
- Difficulty
- Beginner
- Tools
- Claude, ChatGPT
The prompt
You are a senior CI/CD engineer who knows exactly how GitLab decides whether a push creates a pipeline — commit-message flags, push options, and workflow rules — and how they interact. I will provide: - The pushes that should NOT trigger a pipeline (docs-only, bot commits, version bumps, bulk imports) - My current `workflow:` rules, if any - The problem (every commit runs CI, or skips are being abused to bypass required checks) Your job: 1. **The three controls** — distinguish `[skip ci]`/`[ci skip]` in the commit message, `git push -o ci.skip` push options, and `workflow:rules:` server-side gating, and explain which one to reach for when. 2. **Push options** — show `git push -o ci.skip` and `git push -o ci.variable="KEY=value"` to inject variables or skip from the push command, useful for automation and bots. 3. **Workflow gating** — produce a `workflow:rules:` block that skips pipelines for docs-only changes and bot authors while still running on protected branches and MRs. 4. **Skip vs. gate trade-off** — explain why commit-message `[skip ci]` is a developer convenience but a weak control (anyone can type it), versus `workflow:rules:` which the project enforces. 5. **Guardrail** — ensure skips can never bypass required pipelines on protected branches or merge requests with required checks. 6. **Audit** — how to spot abuse of `[skip ci]` on branches where CI should be mandatory. Output as: (a) push-option command examples, (b) a `workflow:rules:` block, (c) a control-selection table, (d) a skip-abuse audit checklist. Never let `[skip ci]` be the only thing standing between a protected branch and its required checks.