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>
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.
Please follow instructions on Contributing docs to set up your development environment.