Add Geo PipelineReplicator and handle pipeline ref created event
What does this MR do and why?
This adds a Geo event for when we create a persistent pipeline ref, to replicate this creation to all Geo secondary sites, instead of waiting for the next repository sync.
📰 Context
With !81989 (merged), in %14.9, we've changed the refspec that runners use, from:
+#{pipeline.sha}:refs/pipelines/#{pipeline.id}
To:
+refs/pipelines/#{pipeline.id}:refs/pipelines/#{pipeline.id}
This resulted in runners pulling from a secondary not working anymore, as a secondary doesn't get the new ref when the pipeline is created, rather on the next sync (which may not happen for a while if the repo is not particularly active)
Related to #360816 (closed)
How to set up and validate locally
It's probably easiest to run the ./qa/specs/features/browser_ui/6_release/pages/pages_pipeline_spec.rb:34
test - it would fail before this branch, it should succeed on this branch. (I've personally tested this on a GET env)
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.