[FF] ci_skip_pipelines_with_fully_filtered_includes -- skip empty pipelines from fully filtered includes
Summary
Roll out the fix currently behind the ci_skip_pipelines_with_fully_filtered_includes feature flag.
When include:rules: filter out all includes of a file, leaving a config with zero visible jobs, the flag makes pipeline creation treat it as filtered_by_rules (non-persistable) instead of persisting a failed config_error pipeline.
- DRI: @oyakovenko-ext
- Team Slack channel:
#g_pipeline-authoring
Note
Process and guidance live in the docs — this issue is just the commands and a place to track the rollout. "Rolling out" means incrementally enabling the flag on GitLab.com to validate stability — it is not the same as releasing the feature, which happens when the flag is removed. Feature flag controls · Feature flag lifecycle
What could go wrong?
Blast radius is limited to pipeline creation for configs that resolve to zero visible jobs because every include: was filtered by include:rules:. Before the flag, such a pipeline was persisted as a failed config_error; with the flag it is not persisted (filtered_by_rules). Risk: a config that should surface a genuine "no jobs" error is silently skipped — mitigated by the narrow guard (only_no_visible_jobs_error? + any_includes_fully_filtered_by_rules?). Watch CI pipeline creation error rates on https://dashboards.gitlab.net.
Rollout
Run all production /chatops in #production and cross-post the results to #g_pipeline-authoring. Background: incremental rollout process, feature actors.
Non-production
/chatops gitlab run feature set ci_skip_pipelines_with_fully_filtered_includes 50 --actors --dev --pre --staging --staging-ref
/chatops gitlab run feature set ci_skip_pipelines_with_fully_filtered_includes true --dev --pre --staging --staging-refProduction — percentage rollout (wait ≥15 min between steps, watch dashboards):
/chatops gitlab run feature set ci_skip_pipelines_with_fully_filtered_includes <percentage> --actorsOr target specific actors instead:
/chatops gitlab run feature set --project=gitlab-org/gitlab,gitlab-org/gitlab-foss ci_skip_pipelines_with_fully_filtered_includes true
/chatops gitlab run feature set --group=gitlab-org,gitlab-com ci_skip_pipelines_with_fully_filtered_includes true
/chatops gitlab run feature set --user=oyakovenko-ext ci_skip_pipelines_with_fully_filtered_includes trueBefore global rollout
Confirm the relevant gotchas before going to 100% — see enabling a feature for GitLab.com:
- Docs + version history updated
- Breaking changes announced, if any
- Change management issue opened, if required
- External API consumers handled with a fail-open mechanism, if applicable
Cleanup
Remove the flag once deemed stable — see cleaning up. Track it here, or open a follow-up Feature Flag Cleanup issue. Remove the flag and its YAML definition from the codebase, then:
/chatops gitlab run release check <merge-request-url> <milestone>
/chatops gitlab run feature delete ci_skip_pipelines_with_fully_filtered_includes --dev --pre --staging --staging-ref --productionRollback
/chatops gitlab run feature set ci_skip_pipelines_with_fully_filtered_includes false # production
/chatops gitlab run feature set ci_skip_pipelines_with_fully_filtered_includes false --dev --pre --staging --staging-ref # non-production
/chatops gitlab run feature delete ci_skip_pipelines_with_fully_filtered_includes --dev --pre --staging --staging-ref --production # remove entirely