1# frozen_string_literal: true
2
3module Ci
4  class BuildScheduleWorker # rubocop:disable Scalability/IdempotentWorker
5    include ApplicationWorker
6
7    data_consistency :always
8
9    sidekiq_options retry: 3
10    include PipelineQueue
11
12    queue_namespace :pipeline_processing
13    feature_category :continuous_integration
14    worker_resource_boundary :cpu
15
16    def perform(build_id)
17      ::Ci::Build.find_by_id(build_id).try do |build|
18        break unless build.scheduled?
19
20        Ci::RunScheduledBuildService
21          .new(build.project, build.user).execute(build)
22      end
23    end
24  end
25end
26