Upload metrics in test runner

This is a reland of https://flutter-review.googlesource.com/c/recipes/+/17200.
Changes:
1) addressed null result data case: https://github.com/flutter/flutter/pull/88749
2) separate gcs and cocoon token
3) add token util as a module so that engine and devicelab drone can share

Example led run: https://logs.chromium.org/logs/flutter/led/keyonghan_google.com/497ab131c93e471b033ee24db06b3c034376ea3ccf38e738ed71b2c665d92257/+/u/Upload_metrics/upload_results/stdout (ignore the http error, as this is testing againt a non-prod commit which doesn't exist in cocoon).

Change-Id: I76d3f68c5e07aec99427b3c2a631812d8453e4ce
Bug: https://github.com/flutter/flutter/issues/88484
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/17343
Reviewed-by: Casey Hillers <chillers@google.com>
Commit-Queue: Keyong Han <keyonghan@google.com>
14 files changed
tree: 1a2d5588463dae79167b46801dcd0f92f1ebc1ea
  1. infra/
  2. recipe_modules/
  3. recipes/
  4. .gitignore
  5. .style.yapf
  6. AUTHORS
  7. branch_recipes.py
  8. LICENSE
  9. OWNERS
  10. README.md
  11. recipes.py
README.md

Flutter LUCI Recipes

This repository contains Flutter's LUCI recipes. For the LUCI infrastructure config, see flutter/infra. Actual builds can be seen at ci.chromium.org.

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.

Configuration

Tricium configurations recipes repo.

Recipe Branching for Releases

The script branch_recipes.py is used to generate new copies of the LUCI recipes for a beta release. See Recipe Branching for Releases for more information. For usage:

$ ./branch_recipes.py --help