Skip to content

Commit

Permalink
Implement separate long build queues
Browse files Browse the repository at this point in the history
This implements a separate queue for long-running builds that are
identified by a suffix `-long` in the runner name.

The values for `slots` in `src/queue_types.rb` is probably wrong, and
will need adjusting.

This should achieve having an entirely separate queue for long build
jobs. What isn't clear to me is whether this leads to unused capacity
when there are no long build jobs to be done but there are queued short
build jobs waiting.
  • Loading branch information
carlocab committed Apr 15, 2024
1 parent 86d2e65 commit 2c9c147
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 13 deletions.
30 changes: 22 additions & 8 deletions src/job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
# Information representing a CI job.
class Job
NAME_REGEX =
/\A(?<runner>\d+(?:\.\d+)?(?:-arm64)?(?:-cross)?)-(?<run_id>\d+)(?:-(?<run_attempt>\d+))?(?:-(?<tag>[a-z]+))?\z/
/\A(?<runner>\d+(?:\.\d+)?(?:-arm64)?(?:-cross)?)-(?<run_id>\d+)(?:-(?<run_attempt>\d+))?(?:-(?<tags>[-a-z]+))?\z/

attr_reader :runner_name, :repository, :github_id, :secret
attr_writer :orka_setup_timeout
Expand Down Expand Up @@ -44,8 +44,12 @@ def run_attempt
@runner_name[NAME_REGEX, :run_attempt]
end

def tag
@runner_name[NAME_REGEX, :tag]
def tags
@runner_name[NAME_REGEX, :tags]&.split("-")
end

def long_build?
tags.include?("long")
end

def runner_labels
Expand All @@ -68,12 +72,22 @@ def orka_setup_timeout?
end

def queue_type
if arm64?
QueueTypes::MACOS_ARM64
elsif os.partition("-").first < "13"
QueueTypes::MACOS_X86_64_LEGACY
if long_build?
if arm64?
QueueTypes::MACOS_ARM64_LONG
elsif os.partition("-").first < "13"
QueueTypes::MACOS_X86_64_LEGACY_LONG
else
QueueTypes::MACOS_X86_64_LONG
end
else
QueueTypes::MACOS_X86_64
if arm64?
QueueTypes::MACOS_ARM64
elsif os.partition("-").first < "13"
QueueTypes::MACOS_X86_64_LEGACY
else
QueueTypes::MACOS_X86_64
end
end
end

Expand Down
14 changes: 9 additions & 5 deletions src/queue_types.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,17 @@ module QueueTypes
MACOS_X86_64_LEGACY = 0
MACOS_ARM64 = 1
MACOS_X86_64 = 2
MACOS_X86_64_LEGACY_LONG = 3
MACOS_ARM64_LONG = 4
MACOS_X86_64_LONG = 5

def self.name(type)
case type
when MACOS_X86_64_LEGACY
when MACOS_X86_64_LEGACY, MACOS_X86_64_LEGACY_LONG
"Legacy x86_64"
when MACOS_ARM64
when MACOS_ARM64, MACOS_ARM64_LONG
"arm64"
when MACOS_X86_64
when MACOS_X86_64, MACOS_X86_64_LONG
"New x86_64"
else
raise ArgumentError, "Invalid queue type #{type}"
Expand All @@ -23,14 +26,15 @@ def self.name(type)

def self.slots(type)
case type
when MACOS_ARM64, MACOS_X86_64_LEGACY, MACOS_X86_64
when MACOS_ARM64, MACOS_X86_64_LEGACY, MACOS_X86_64, MACOS_X86_64_LEGACY_LONG, MACOS_ARM64_LONG, MACOS_X86_64_LONG
12
else
raise ArgumentError, "Invalid queue type #{type}"
end
end

def self.each(&)
[MACOS_X86_64_LEGACY, MACOS_ARM64, MACOS_X86_64].each(&)
[MACOS_X86_64_LEGACY, MACOS_ARM64, MACOS_X86_64,
MACOS_X86_64_LEGACY_LONG, MACOS_ARM64_LONG, MACOS_X86_64_LONG].each(&)
end
end

0 comments on commit 2c9c147

Please sign in to comment.