Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions master/custom/builders.py
Original file line number Diff line number Diff line change
Expand Up @@ -356,11 +356,14 @@
]


def get_builders(settings):
def get_builders(settings, workers):
workers_by_name = {w.name: w for w in workers}

# Override with a default simple worker if we are using local workers
if settings.use_local_worker:
local_worker = workers_by_name["local-worker"]
local_buildfactory = globals().get(settings.local_worker_buildfactory, UnixBuild)
return [("Test Builder", "local-worker", local_buildfactory, STABLE, NO_TIER)]
return [("Test Builder", local_worker, local_buildfactory, STABLE, NO_TIER)]

all_builders = []
for builders, stability, tier in (
Expand All @@ -375,7 +378,8 @@ def get_builders(settings):
(UNSTABLE_BUILDERS_NO_TIER, UNSTABLE, NO_TIER),
):
for name, worker_name, buildfactory in builders:
all_builders.append((name, worker_name, buildfactory, stability, tier))
worker = workers_by_name[worker_name]
all_builders.append((name, worker, buildfactory, stability, tier))
return all_builders


Expand Down
30 changes: 12 additions & 18 deletions master/master.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,8 @@ except FileNotFoundError:


WORKERS = get_workers(settings)
WORKERS_BY_NAME = {w.name: w for w in WORKERS}

BUILDERS = get_builders(settings)
BUILDERS = get_builders(settings, WORKERS)

AUTH, AUTHZ = set_up_authorization(settings)

Expand Down Expand Up @@ -248,15 +247,14 @@ mail_status_builders = []
for branch_num, (git_url, branchname, git_branch) in enumerate(git_branches):
buildernames = []
refleakbuildernames = []
for name, worker_name, buildfactory, stability, tier in BUILDERS:
for name, worker, buildfactory, stability, tier in BUILDERS:
if any(
pattern in name for pattern in ONLY_MAIN_BRANCH
) and branchname != MAIN_BRANCH_NAME:
# Workers known to be broken on older branches: let's focus on
# supporting these platforms in the main branch.
continue

worker = WORKERS_BY_NAME[worker_name]
if worker.not_branches and branchname in worker.not_branches:
continue
if worker.branches and branchname not in worker.branches:
Expand Down Expand Up @@ -303,29 +301,28 @@ for branch_num, (git_url, branchname, git_branch) in enumerate(git_branches):

builder = util.BuilderConfig(
name=buildername,
workernames=[worker_name],
builddir="%s.%s%s"
% (branchname, worker_name, getattr(f, "buildersuffix", "")),
workernames=[worker.name],
builddir="%s.%s%s" % (branchname, worker.name, getattr(f, "buildersuffix", "")),
factory=f,
tags=tags,
locks=[cpulock.access("counting")],
)

# This worker runs pyperformance at 12am UTC. If a build is scheduled between
# 10pm UTC and 2am UTC, it will be delayed to 2am UTC.
if worker_name == "diegorusso-aarch64-bigmem":
if worker.name == "diegorusso-aarch64-bigmem":
builder.canStartBuild = no_builds_between("22:00", "2:00")

# This worker restarts every day at 9am UTC to work around issues stemming from
# failing bigmem tests trashing disk space and fragmenting RAM. Builds scheduled
# between 07:20am - 9:20am UTC will be delayed to 9:20am UTC.
if worker_name == "ambv-bb-win11":
if worker.name == "ambv-bb-win11":
builder.canStartBuild = no_builds_between("7:20", "9:20")

# These workers are reprovisioned every Wednesday at 9am PT. Builds
# scheduled between 8am - 10am PT on Wednesdays will be delayed to
# 10am PT.
if worker_name in ("itamaro-win64-srv-22-aws", "itamaro-centos-aws"):
if worker.name in ("itamaro-win64-srv-22-aws", "itamaro-centos-aws"):
builder.canStartBuild = no_builds_between(
"8:00", "10:00", day_of_week=2, tz=ZoneInfo("America/Los_Angeles")
)
Expand Down Expand Up @@ -363,13 +360,11 @@ for branch_num, (git_url, branchname, git_branch) in enumerate(git_branches):
stable_pull_request_builders = []
all_pull_request_builders = []

for name, worker_name, buildfactory, stability, tier in BUILDERS:
for name, worker, buildfactory, stability, tier in BUILDERS:
buildername = f"{name} PR"

source = GitHub(repourl=git_url, **GIT_KWDS)

worker = WORKERS_BY_NAME[worker_name]

f = buildfactory(
source,
# Use the same downstream branch names as the "custom"
Expand All @@ -395,23 +390,22 @@ for name, worker_name, buildfactory, stability, tier in BUILDERS:

builder = util.BuilderConfig(
name=buildername,
workernames=[worker_name],
builddir="%s.%s%s"
% ("pull_request", worker_name, getattr(f, "buildersuffix", "")),
workernames=[worker.name],
builddir="%s.%s%s" % ("pull_request", worker.name, getattr(f, "buildersuffix", "")),
factory=f,
tags=tags,
locks=[cpulock.access("counting")],
)

# This worker runs pyperformance at 12am. If a build is scheduled between
# 10pm and 2am, it will be delayed at 2am.
if worker_name == "diegorusso-aarch64-bigmem":
if worker.name == "diegorusso-aarch64-bigmem":
builder.canStartBuild = no_builds_between("22:00", "2:00")

# These workers are reprovisioned every Wednesday at 9am PT. Builds
# scheduled between 8am - 10am PT on Wednesdays will be delayed to
# 10am PT.
if worker_name in ("itamaro-win64-srv-22-aws", "itamaro-centos-aws"):
if worker.name in ("itamaro-win64-srv-22-aws", "itamaro-centos-aws"):
builder.canStartBuild = no_builds_between(
"8:00", "10:00", day_of_week=2, tz=ZoneInfo("America/Los_Angeles")
)
Expand Down