flutter/infra
Adam Barth 192fcf5284 Remove download_dart_sdk.py
This script is not used anymore.
2016-02-20 14:33:19 -08:00
..
.gitignore Remove download_dart_sdk.py 2016-02-20 14:33:19 -08:00
download_android_tools.py Use mojo's scripts for downloading android tools on the bots 2016-02-12 16:18:08 -08:00
find_depot_tools.py Use mojo's scripts for downloading android tools on the bots 2016-02-12 16:18:08 -08:00
README.md Fix infra docs 2016-02-13 20:39:10 -08:00
VERSION_LINUX_NDK Use mojo's scripts for downloading android tools on the bots 2016-02-12 16:18:08 -08:00
VERSION_LINUX_SDK Use mojo's scripts for downloading android tools on the bots 2016-02-12 16:18:08 -08:00
VERSION_MACOSX_NDK Use mojo's scripts for downloading android tools on the bots 2016-02-12 16:18:08 -08:00
VERSION_MACOSX_SDK Use mojo's scripts for downloading android tools on the bots 2016-02-12 16:18:08 -08:00

Flutter's Build Infrastructure

This directory exists to support building Flutter on our build infrastructure.

The results of such builds are viewable at https://build.chromium.org/p/client.flutter/waterfall

The external master pages do not allow forcing new builds. Contact @eseidelGoogle or another member of Google's Flutter team if you need to do that.

Our infrastructure is broken into two parts. A buildbot master specified by our builders.pyl file, and a set of recipes 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.

Editing a recipe

Flutter has one recipe per repository. Currently flutter/flutter and flutter/engine.

Recipes are just python. They are documented by the luci/recipes-py github project.

The typical cyle 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 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 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.

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 https://build.chromium.org/p/client.flutter. Carefully follow the builders.pyl docs to do so.

Future Directions

We would like to host our own recipes instead of storing them in build. Support for cross-repository recipes is in-progress. If you view the git log of this directory, you'll see we intially tried, but it's not quite ready.