Remove skip_pipelines_for_mirror_first_sync feature flag
What does this MR do and why?
Removes the feature flag skip_pipelines_for_mirror_first_sync_non_default_branches and makes its behavior the permanent default.
This flag was introduced to prevent pipeline explosion when setting up pull mirrors on repositories with many branches and tags. When enabled (now permanent), the first sync only creates a pipeline for the default branch, while other branches are created with skip_ci: true and tags with create_pipelines: false. Subsequent syncs create pipelines normally for all refs.
Related issues:
- Work item: #607104 (closed)
- Original implementation: !247467 (merged)
- Original issue: #598486 (closed)
How to set up and validate locally
This change affects pull mirror first-sync behavior. To test:
- Create a new project with pull mirroring enabled
- Configure it to mirror a repository with multiple branches and tags
- Trigger the first sync
- Verify:
- Default branch gets a pipeline
- Other branches are created without triggering pipelines
- Tags are created without triggering pipelines
- Trigger a second sync (delta sync)
- Verify all new refs now trigger pipelines normally
MR acceptance checklist
- Feature flag removed from implementation (
ee/app/services/projects/update_mirror_service.rb) - Feature flag definition deleted (
ee/config/feature_flags/gitlab_com_derisk/skip_pipelines_for_mirror_first_sync_non_default_branches.yml) - Spec updated to remove "flag disabled" test case
- All tests pass (78 examples, 0 failures)
- No references to the flag name remain in the codebase
- Rubocop clean (2 files inspected, 0 offenses)
Rollout and monitoring
This flag was a gitlab_com_derisk type flag, meaning it was already enabled in production. Making this behavior permanent has no impact on production environments. The change only affects environments where the flag was explicitly disabled, which will now get the skip-pipelines-on-first-sync behavior (the intended and correct behavior).
No monitoring changes needed. This is a pure feature flag removal with no behavior change for production.