# infra/config folder

This folder contains WebRTC project-wide configurations for Chrome infra
services, mainly the CI system ([console][]).

`*.cfg` files are the actual configuration that [LUCI][luci-config] looks at.
They are in *protocol buffer text format*. For example,
[cr-buildbucket.cfg](cr-buildbucket.cfg) defines builders.

However, they are all automatically generated from the [Starlark][] script
[config.star](config.star) that defines a unified config using **[lucicfg][]**.
The main body of the config is at the bottom of the file, following all the
helper definitions.

`lucicfg` should be available as part of depot_tools. After editing
[config.star](config.star) you should run `lucicfg generate config.star` to
re-generate `*.cfg` files. Check the diffs in generated files to confirm that
your change worked as expected. Both the code change and the generated changes
need to be committed together.

## Uploading changes

It is recommended to have a separate checkout for this branch, so switching
to/from it does not populate/delete all files in the main branch.

Initial setup:

```bash
git clone https://webrtc.googlesource.com/src/
```

Now you can create a new branch to make changes:

```bash
git new-branch add-new-builder
# edit/generate files
git commit -a
git cl upload
```

Changes can be reviewed on Gerrit and submitted with commit queue as usual.

### Activating the changes

Any changes to this directory go live soon after landing, without any additional
steps. You can see the status or force a refresh of the config at
[luci-config][].

[console]: https://ci.chromium.org/p/webrtc/g/ci/console
[luci-config]: https://luci-config.appspot.com/#/projects/webrtc
[starlark]: https://github.com/google/starlark-go
[lucicfg]: https://chromium.googlesource.com/infra/luci/luci-go/+/main/lucicfg/doc/
