Support async pipeline creation on git push
What does this MR do and why?
Contributes to #553426
Problem
The Ci::CreatePipelineService
runs synchronously and can take
significant time to complete, which slows down the PostReceive
job and
degrades overall performance.
Solution
Execute the Ci::CreatePipelineService
task asynchronously.
References
Sidekiq high-urgency-cpu-bound job PostReceive ... (#553426)
Screenshots or screen recordings
How to set up and validate locally
-
In rails console enable the feature flag
Feature.enable(:async_pipeline_creation_on_push)
-
Find or configure a project with a CI pipeline (for example, http://gdk.test:3000/gnuwget/Wget2)
-
In terminal execute the following command to see "CreatePipelineWorker" activity
gdk tail rails-background-jobs | grep "CreatePipelineWorker"
-
Edit a file and create a merge request with a change
-
You should see a pipeline to be created for a commit
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Related to #553426