Rollout of ci_pipeline_ref_resolution feature flag
Summary
This issue is to roll out the ci_pipeline_ref_resolution feature flag to production. This flag protects a refactored ref resolution mechanism during pipeline creation, introducing a centralized Gitlab::Git::RefResolver class that consolidates logic for determining ref types and improves ambiguous ref handling.
Related issue: #512692 Introduced in: !223198 (merged)
Owners
- Team: Pipeline Authoring (
#g_pipeline-authoring) - DRI: @avielle
What are we expecting to happen?
The refactored code path should produce identical results to the existing implementation for standard refs. For ambiguous refs (where a name exists as both a branch and tag), the new code path will detect and reject them earlier in the pipeline validation chain with a "Ref is ambiguous" error. Pipeline creation for branches, tags, and merge requests should continue to work correctly.
What can go wrong and how would we detect it?
- Risk: Logic errors in the refactored ref resolution could cause pipeline creation failures or incorrect permission checks
- Detection: Monitor pipeline creation success rate, error rates, and Sentry for new exceptions related to ref resolution
- Mitigation: The feature flag allows immediate rollback. Both code paths are tested.
Rollout Steps
1. Staging Rollout
-
Enable on staging:
/chatops run feature set ci_pipeline_ref_resolution true --staging --staging-ref
2. Production Rollout
All production commands must be run in #production and cross-posted to #g_pipeline-authoring.
-
Enable for
gitlab:/chatops run feature set ci_pipeline_ref_resolution true --project=gitlab-org/gitlab - Wait 1 hour, monitor for issues
-
Enable at 10%:
/chatops run feature set ci_pipeline_ref_resolution 10 --actors - Wait 1 hour, monitor for issues
-
Enable at 50%:
/chatops run feature set ci_pipeline_ref_resolution 50 --actors - Wait 1 hour, monitor for issues
-
Enable at 100%:
/chatops run feature set ci_pipeline_ref_resolution 100 --actors - Wait at least 24 hours before cleanup
3. Cleanup
- Create MR to remove feature flag and old code path
-
Remove feature flag from all environments:
/chatops run feature delete ci_pipeline_ref_resolution --dev --pre --staging --staging-ref --production - Close this issue
Rollback Steps
If issues are detected, disable immediately:
/chatops run feature set ci_pipeline_ref_resolution false