Teams

Codebase governor lets you manage your teams in a config file.

This public content is an excerpt from Flutter staff GitHub docs. It is published as a reference to show how GitHub is used for inner source at Flutter.

This page explains the format of the Codebase Governor teams configuration file. This functionality replaces the need to manage teams in the GitHub UI.

All necessary configuration files can be found within the teams/ directory of the org-config repository.

The file uses YAML syntax, and must have a .yml file extension. If you’re new to YAML and want to learn more, see “Learn YAML in Y minutes”.

Fixed Teams

A fixed team is composed of explicitly specified members. The corresponding filename should adhere to the convention of the team slug, followed by a .yml extension. For instance, teams/bf-gaming-native.yml. Please note that currently, there is no support for human-readable team names. Consequently, the team name will mirror the filename.

owners

The owners key specifies the owners of a team. The owners are responsible for approving any changes to the team’s configuration file through a PR in org-config.

  • owners.users lists the GitHub usernames that are considered owners of the team.
  • owners.teams lists the team slugs that are considered owners of the team.
owners:
  users:
    - example-user-1
    - example-user-2
  teams:
    - another-team

members

The members key specifies the members of a team. All members of a team will be added with the member GitHub role, i.e. no member of the team will have permissions to change the team through the GitHub UI.

  • members.users lists the GitHub usernames that are considered members of the team.
  • members.teams lists the team slugs that are considered members of the team.

When another team is specified as a member, all changes to the child team will propagate to the parent team. Cyclic dependencies are not allowed.

members:
  users:
    - example-user-1
    - example-user-2
  teams:
    - another-team

exclude

The exclude key specifies what needs to be excluded from the members.

  • exclude.users lists the GitHub usernames that will be excluded from the team.
  • exclude.teams lists the team slugs that will be excluded from the team.

When a another team is specified as an exclude, all changes to the child team will propagate to the parent team. Cyclic dependencies are not allowed.

exclude:
  users:
    - example-user-1
    - example-user-2
  teams:
    - another-team