blob: 2deebc1d72555700fb93d5a0f2e4064ca138ee53 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# frozen_string_literal: true
module Ci
module Queue
class BuildQueueService
include ::Gitlab::Utils::StrongMemoize
attr_reader :runner
def initialize(runner)
@runner = runner
end
def new_builds
strategy.new_builds
end
##
# This is overridden in EE
#
def builds_for_shared_runner
strategy.builds_for_shared_runner
end
# rubocop:disable CodeReuse/ActiveRecord
def builds_for_group_runner
strategy.builds_for_group_runner
end
def builds_for_project_runner
relation = new_builds
.where(project: runner_projects_relation)
order(relation)
end
def builds_queued_before(relation, time)
relation.queued_before(time)
end
def builds_for_protected_runner(relation)
relation.ref_protected
end
def builds_matching_tag_ids(relation, ids)
strategy.builds_matching_tag_ids(relation, ids)
end
def builds_with_any_tags(relation)
strategy.builds_with_any_tags(relation)
end
def order(relation)
strategy.order(relation)
end
def execute(relation)
strategy.build_ids(relation)
end
private
def strategy
strong_memoize(:strategy) do
Queue::PendingBuildsStrategy.new(runner)
end
end
def runner_projects_relation
runner
.runner_projects
.select('"ci_runner_projects"."project_id"::bigint')
end
end
end
end
Ci::Queue::BuildQueueService.prepend_mod_with('Ci::Queue::BuildQueueService')
|