Skip to content

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

Screenshot_2025-07-31_at_10.21.51

How to set up and validate locally

  1. In rails console enable the feature flag

    Feature.enable(:async_pipeline_creation_on_push)
  2. Find or configure a project with a CI pipeline (for example, http://gdk.test:3000/gnuwget/Wget2)

  3. In terminal execute the following command to see "CreatePipelineWorker" activity

    gdk tail rails-background-jobs | grep "CreatePipelineWorker"
  4. Edit a file and create a merge request with a change

  5. 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

Edited by Vasilii Iakliushin

Merge request reports

Loading