Make Builds Faster

The Mac builds can take ~45 minutes to build. There are two spots that
can be optimized; not blocking on launched builds right away and
downloading artifacts in parallel.

The `collect builds` step can take >25 minutes - during which we could
be mounting caches and checking out the tree (~5 minutes).

The `Download for build*` steps can be very fast in some cases; but they
are serialized. Ranging between ~5m to ~15m; we could get some wins
here.

- Adds two flags:
  - `delay_collect_builds`: after launching builds; continue setting up
    the orchestrator before waiting for builds to complete.
  - `parallel_download_builds`: attempt to download all artifacts in
    parallel.

These flags can be added to the top level builder json file
(example)[https://github.com/flutter/flutter/blob/ebc7d244d365a8bb5ea3b7f1d8c5dc87107ab44f/engine/src/flutter/ci/builders/mac_host_engine.json#L4]
responsible for setting up drones:

```json
  "luci_flags": {
    "delay_collect_builds": true,
    "parallel_download_builds": true
  },
```

led comment tested with:

```
led get-builder  'luci.flutter.staging:Mac mac_host_engine' | led edit -pa git_ref='refs/pull/164027/head' | led edit -pa luci_flags='{"delay_collect_builds": true, "parallel_download_builds":true}' | led edit -pa git_url='https://github.com/flutter/flutter' | led edit -pa is_fusion='true' | led edit-recipe-bundle | led launch
```

build showing both flags working:
https://ci.chromium.org/ui/p/flutter/builders/staging.shadow/Mac%20mac_host_engine/8/overview

Change-Id: If00f2e5dc56a529fe6904bd85148cb6e86c6d614
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/63800
Commit-Queue: John McDole <codefu@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Matan Lurey <matanl@google.com>
7 files changed
tree: a72dfdc8524fe6e977fd99e7ae023db32ddd5a87
  1. .vscode/
  2. infra/
  3. recipe_modules/
  4. recipes/
  5. .gitignore
  6. .style.yapf
  7. AUTHORS
  8. CONTRIBUTING.md
  9. LICENSE
  10. OWNERS
  11. README.md
  12. recipes.py
README.md

Flutter LUCI Recipes

This repository contains Flutter's LUCI recipes. For the LUCI infrastructure config, see flutter/infra. Builds can be found in the Flutter Dashboard.

Supported repositories roll their .ci.yaml into flutter/infra, which updates what properties builds have. For example, flutter config specifies various dependencies the different tests require, which are then used by the flutter_deps recipe_module No modifications to flutter/infra are required to work on the recipes.

Contributing

Please follow instructions on Contributing docs to set up your development environment.