diff --git a/infra/README.md b/infra/README.md index 18f7c67a6c1..16fc60b3394 100644 --- a/infra/README.md +++ b/infra/README.md @@ -16,6 +16,28 @@ recipes](https://chromium.googlesource.com/chromium/tools/build.git/+/master/scr which we run on that master. Both of these technologies are highly specific to Google's Chromium project. We're just borrowing some of their infrastructure. +## Prerequisites + +- [install depot_tools](http://www.chromium.org/developers/how-tos/install-depot-tools) +- Python package installer: `sudo apt-get install python-pip` +- Python coverage package (only needed for `training_simulation`): `sudo pip install coverage` + +## Getting the code + +The following will get way more than just recipe code, but it _will_ get the recipe code: + +```bash +mkdir chrome_infra +cd chrome_infra +fetch infra +``` + +More detailed instructions can be found [here](https://chromium.googlesource.com/infra/infra/+/master/doc/source.md). + +Most of the functionality for recipes comes from `recipe_modules`, which are +unfortunately spread to many separate repositories. After checking out the code +search for files named `api.py` or `example.py` under `infra/build`. + ## Editing a recipe Flutter has one recipe per repository. Currently @@ -23,32 +45,25 @@ Flutter has one recipe per repository. Currently and [flutter/engine](https://chromium.googlesource.com/chromium/tools/build.git/+/master/scripts/slave/recipes/flutter/engine.py). -Recipes are just python. They are +Recipes are just Python. They are [documented](https://github.com/luci/recipes-py/blob/master/doc/user_guide.md) by the [luci/recipes-py github project](https://github.com/luci/recipes-py). -The typical cyle for editing a recipe is: +The typical cycle for editing a recipe is: 1. Make your edits. 2. Run `build/scripts/slave/recipes.py simulation_test train flutter` to update expected files (remove the flutter if you need to do a global update). 3. Run `build/scripts/slave/recipes.py run flutter/flutter` (or flutter/engine) if something was strange during training and you need to run it locally. 4. Upload the patch (`git commit`, `git cl upload`) and send it to someone in the `recipes/flutter/OWNERS` file for review. -Most of the functionality for recipes comes from recipe_modules, which are -unfortunately spread to many separate repositories. The easiest way to find -documentation on how to use modules is to [get a full checkout of chromium's -`infra` -repositories](https://chromium.googlesource.com/infra/infra/+/master/doc/source.md) -and search for files named `api.py` or `example.py` under `infra/build`. - ## Editing the client.flutter buildbot master Flutter uses Chromium's fancy [builders.pyl](https://chromium.googlesource.com/infra/infra/+/master/doc/users/services/buildbot/builders.pyl.md) master generation system. Chromium hosts 100s (if not 1000s) of buildbot masters and thus has lots of infrastructure for turning them up and down. -Eventually all of buildbot is planned to be replaced by other infrastruture, but -for now flutter has its own client.flutter master. +Eventually all of buildbot is planned to be replaced by other infrastructure, +but for now flutter has its own client.flutter master. You would need to edit client.flutter's master in order to add slaves (talk to @eseidelGoogle), add builder groups, or to change the html layout of @@ -62,5 +77,5 @@ We would like to host our own recipes instead of storing them in [build](https://chromium.googlesource.com/chromium/tools/build.git/+/master/scripts/slave/recipes/flutter). Support for [cross-repository recipes](https://github.com/luci/recipes-py/blob/master/doc/cross_repo.md) is -in-progress. If you view the git log of this directory, you'll see we intially +in-progress. If you view the git log of this directory, you'll see we initially tried, but it's not quite ready.