diff --git a/master/custom/builders.py b/master/custom/builders.py index 2385df48..8a33436d 100644 --- a/master/custom/builders.py +++ b/master/custom/builders.py @@ -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 ( @@ -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 diff --git a/master/master.cfg b/master/master.cfg index 3ae0cc04..174a903f 100644 --- a/master/master.cfg +++ b/master/master.cfg @@ -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) @@ -248,7 +247,7 @@ 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: @@ -256,7 +255,6 @@ for branch_num, (git_url, branchname, git_branch) in enumerate(git_branches): # 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: @@ -303,9 +301,8 @@ 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")], @@ -313,19 +310,19 @@ for branch_num, (git_url, branchname, git_branch) in enumerate(git_branches): # 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") ) @@ -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" @@ -395,9 +390,8 @@ 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")], @@ -405,13 +399,13 @@ for name, worker_name, buildfactory, stability, tier in BUILDERS: # 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") )