chromium/infra/config/generators/builder-owners.star

# Copyright 2024 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Library for registering builder owner alias to builders they own."""

def _generate_builder_owner_alias_files(ctx):
    cfg = None
    for f in ctx.output:
        if f.startswith("luci/cr-buildbucket"):
            cfg = ctx.output[f]
            break

    builders_by_contact_email = {}
    for bucket in cfg.buckets:
        if not proto.has(bucket, "swarming"):
            continue
        for builder in bucket.swarming.builders:
            email = builder.contact_team_email or "~unowned"
            builders_by_contact_email.setdefault(email, []).append("{}/{}".format(bucket.name, builder.name))

    for contact_email, builders in builders_by_contact_email.items():
        builder_owner_alias_file = "builder-owners/{}.txt".format(contact_email)
        ctx.output[builder_owner_alias_file] = "\n".join(sorted(builders))

lucicfg.generator(_generate_builder_owner_alias_files)