From 66526dec900b8ada239cef4f22ab86455284252a Mon Sep 17 00:00:00 2001 From: Keyong Han Date: Tue, 28 Jul 2020 16:06:30 -0700 Subject: [PATCH 1/8] add supported luci builders --- dev/engine_prod_builders.json | 52 ++++++++++++++++++++++++++++++ dev/engine_try_builders.json | 60 +++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 dev/engine_prod_builders.json create mode 100644 dev/engine_try_builders.json diff --git a/dev/engine_prod_builders.json b/dev/engine_prod_builders.json new file mode 100644 index 0000000000000..58fc27caad09d --- /dev/null +++ b/dev/engine_prod_builders.json @@ -0,0 +1,52 @@ +{ + "builders":[ + { + "name":"Linux Host Engine", + "repo":"engine" + }, + { + "name":"Linux Fuchsia", + "repo":"engine" + }, + { + "name":"Linux Android AOT Engine", + "repo":"engine" + }, + { + "name":"Linux Android Debug Engine", + "repo":"engine" + }, + { + "name":"Mac Host Engine", + "repo":"engine" + }, + { + "name":"Mac Android AOT Engine", + "repo":"engine" + }, + { + "name":"Mac Android Debug Engine", + "repo":"engine" + }, + { + "name":"Mac iOS Engine", + "repo":"engine" + }, + { + "name":"Mac iOS Engine Profile", + "repo":"engine" + }, + { + "name":"Mac iOS Engine Release", + "repo":"engine" + }, + { + "name":"Windows Host Engine", + "repo":"engine" + }, + { + "name":"Windows Android AOT Engine", + "repo":"engine" + } + ] +} diff --git a/dev/engine_try_builders.json b/dev/engine_try_builders.json new file mode 100644 index 0000000000000..f93d214ed5546 --- /dev/null +++ b/dev/engine_try_builders.json @@ -0,0 +1,60 @@ +{ + "builders":[ + { + "name":"Linux Host Engine", + "repo":"engine" + }, + { + "name":"Linux Fuchsia", + "repo":"engine" + }, + { + "name":"Linux Android AOT Engine", + "repo":"engine" + }, + { + "name":"Linux Android Debug Engine", + "repo":"engine" + }, + { + "name":"Linux Web Engine", + "repo":"engine" + }, + { + "name":"Mac Host Engine", + "repo":"engine" + }, + { + "name":"Mac Android AOT Engine", + "repo":"engine" + }, + { + "name":"Mac Android Debug Engine", + "repo":"engine" + }, + { + "name":"Mac Host Engine", + "repo":"engine" + }, + { + "name":"Mac iOS Engine", + "repo":"engine" + }, + { + "name":"Windows Host Engine", + "repo":"engine" + }, + { + "name":"Windows Android AOT Engine", + "repo":"engine" + }, + { + "name":"Windows Web Engine", + "repo":"engine" + }, + { + "name":"Mac Web Engine", + "repo":"engine" + } + ] +} From d8c677581fb21d5f09a1946a97aab5aa8051e1ad Mon Sep 17 00:00:00 2001 From: Keyong Han Date: Tue, 28 Jul 2020 16:57:07 -0700 Subject: [PATCH 2/8] fix license --- ci/licenses_golden/licenses_flutter | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index ca2a71387bb2b..f611fcbd928e5 100755 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -24,6 +24,8 @@ FILE: ../../../flutter/common/settings.cc FILE: ../../../flutter/common/settings.h FILE: ../../../flutter/common/task_runners.cc FILE: ../../../flutter/common/task_runners.h +FILE: ../../../flutter/dev/engine_prod_builders.json +FILE: ../../../flutter/dev/engine_try_builders.json FILE: ../../../flutter/flow/compositor_context.cc FILE: ../../../flutter/flow/compositor_context.h FILE: ../../../flutter/flow/embedded_view_params_unittests.cc From ef32f57e3974be8484c02b0105c4368094c15db0 Mon Sep 17 00:00:00 2001 From: Keyong Han Date: Wed, 29 Jul 2020 15:29:01 -0700 Subject: [PATCH 3/8] add readme --- dev/README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 dev/README.md diff --git a/dev/README.md b/dev/README.md new file mode 100644 index 0000000000000..5978043be2b53 --- /dev/null +++ b/dev/README.md @@ -0,0 +1,22 @@ +This directory contains resources that the Flutter team uses during +the development of engine. + +## Luci builder file +`engine_try_builders.json` and `engine_prod_builders.json` contains the +supported luci try/prod builders for engine. It follows format: +```json +{ + "builders":[ + { + "name":"xxx", + "repo":"engine" + }, + { + "name":"yyy", + "repo":"engine" + } + ] +} +``` +This file will be mainly used in [`flutter/cocoon`](https://github.com/flutter/cocoon) +to trigger/update engine luci tasks. From 8548c0d4545cc51f3a5e2a746cfe6d28b8ccea14 Mon Sep 17 00:00:00 2001 From: Keyong Han Date: Fri, 31 Jul 2020 14:01:06 -0700 Subject: [PATCH 4/8] add code to validate json contents --- dev/README.md | 6 ++++ dev/validate_json.dart | 73 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 dev/validate_json.dart diff --git a/dev/README.md b/dev/README.md index 5978043be2b53..8c0f473f376e3 100644 --- a/dev/README.md +++ b/dev/README.md @@ -20,3 +20,9 @@ supported luci try/prod builders for engine. It follows format: ``` This file will be mainly used in [`flutter/cocoon`](https://github.com/flutter/cocoon) to trigger/update engine luci tasks. + +If any new changes, please validate json contents by running +``` +dart validate_json.dart engine_try_builders.json +dart validate_json.dart engine_prod_builders.json +``` diff --git a/dev/validate_json.dart b/dev/validate_json.dart new file mode 100644 index 0000000000000..0cd19897d9566 --- /dev/null +++ b/dev/validate_json.dart @@ -0,0 +1,73 @@ +// Copyright 2020 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:convert'; +import 'dart:io'; +import 'dart:io' show File; +import 'dart:io' as io_internals show exit; + +final bool hasColor = stdout.supportsAnsiEscapes; +final String bold = hasColor ? '\x1B[1m' : ''; // used for shard titles +final String red = hasColor ? '\x1B[31m' : ''; // used for errors +final String reset = hasColor ? '\x1B[0m' : ''; +final String reverse = hasColor ? '\x1B[7m' : ''; // used for clocks + +/// Validates if the input builders JSON file has valid contents. +/// +/// Examples: +/// dart validate_json.dart /path/to/json/file +Future main(List args) async { + final String jsonString = await File(args[0]).readAsString(); + Map decodedJson; + final List messages = []; + try { + decodedJson = json.decode(jsonString) as Map; + final List builders = decodedJson['builders'] as List; + if (builders == null) { + messages.add('${bold}Json format is violated: no "builders" exists. Please follow: $reset'); + messages.add(''' + { + "builders":[ + { + "name":"xxx", + "repo":"cocoon" + } + ] + }'''); + exitWithError(messages); + } + } on ExitException catch (error) { + error.apply(); + } + print('$clock ${bold}Analysis successful.$reset'); +} + +class ExitException implements Exception { + ExitException(this.exitCode); + + final int exitCode; + + void apply() { + io_internals.exit(exitCode); + } +} + +void exitWithError(List messages) { + final String redLine = '$red━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━$reset'; + print(redLine); + messages.forEach(print); + print(redLine); + exit(1); +} + +String get clock { + final DateTime now = DateTime.now(); + return '$reverse▌' + '${now.hour.toString().padLeft(2, "0")}:' + '${now.minute.toString().padLeft(2, "0")}:' + '${now.second.toString().padLeft(2, "0")}' + '▐$reset'; +} + + From 365207a29fd2a3eec7ce19dc9b624cab425cc68f Mon Sep 17 00:00:00 2001 From: Keyong Han Date: Fri, 31 Jul 2020 15:31:18 -0700 Subject: [PATCH 5/8] license --- ci/licenses_golden/licenses_flutter | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index f611fcbd928e5..1b122adaa39d5 100755 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -10,6 +10,7 @@ LIBRARY: tonic LIBRARY: txt ORIGIN: ../../../flutter/LICENSE TYPE: LicenseType.bsd +FILE: ../../../flutter/dev/validate_json.dart FILE: ../../../flutter/.clang-tidy FILE: ../../../flutter/DEPS FILE: ../../../flutter/assets/asset_manager.cc From 6949335df385675376d1c575011f78e2ea2ec969 Mon Sep 17 00:00:00 2001 From: Keyong Han Date: Tue, 4 Aug 2020 09:30:18 -0700 Subject: [PATCH 6/8] move dev to ci --- {dev => ci/dev}/README.md | 0 {dev => ci/dev}/engine_prod_builders.json | 0 {dev => ci/dev}/engine_try_builders.json | 0 {dev => ci/dev}/validate_json.dart | 0 ci/licenses_golden/licenses_flutter | 6 +++--- 5 files changed, 3 insertions(+), 3 deletions(-) rename {dev => ci/dev}/README.md (100%) rename {dev => ci/dev}/engine_prod_builders.json (100%) rename {dev => ci/dev}/engine_try_builders.json (100%) rename {dev => ci/dev}/validate_json.dart (100%) diff --git a/dev/README.md b/ci/dev/README.md similarity index 100% rename from dev/README.md rename to ci/dev/README.md diff --git a/dev/engine_prod_builders.json b/ci/dev/engine_prod_builders.json similarity index 100% rename from dev/engine_prod_builders.json rename to ci/dev/engine_prod_builders.json diff --git a/dev/engine_try_builders.json b/ci/dev/engine_try_builders.json similarity index 100% rename from dev/engine_try_builders.json rename to ci/dev/engine_try_builders.json diff --git a/dev/validate_json.dart b/ci/dev/validate_json.dart similarity index 100% rename from dev/validate_json.dart rename to ci/dev/validate_json.dart diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 1b122adaa39d5..83fccfb9d31ae 100755 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -10,7 +10,7 @@ LIBRARY: tonic LIBRARY: txt ORIGIN: ../../../flutter/LICENSE TYPE: LicenseType.bsd -FILE: ../../../flutter/dev/validate_json.dart +FILE: ../../../flutter/ci/dev/validate_json.dart FILE: ../../../flutter/.clang-tidy FILE: ../../../flutter/DEPS FILE: ../../../flutter/assets/asset_manager.cc @@ -20,13 +20,13 @@ FILE: ../../../flutter/assets/directory_asset_bundle.cc FILE: ../../../flutter/assets/directory_asset_bundle.h FILE: ../../../flutter/benchmarking/benchmarking.cc FILE: ../../../flutter/benchmarking/benchmarking.h +FILE: ../../../flutter/ci/dev/engine_prod_builders.json +FILE: ../../../flutter/ci/dev/engine_try_builders.json FILE: ../../../flutter/common/exported_symbols.sym FILE: ../../../flutter/common/settings.cc FILE: ../../../flutter/common/settings.h FILE: ../../../flutter/common/task_runners.cc FILE: ../../../flutter/common/task_runners.h -FILE: ../../../flutter/dev/engine_prod_builders.json -FILE: ../../../flutter/dev/engine_try_builders.json FILE: ../../../flutter/flow/compositor_context.cc FILE: ../../../flutter/flow/compositor_context.h FILE: ../../../flutter/flow/embedded_view_params_unittests.cc From b6f538ab34c79df477166f30fdc4da2fded778a1 Mon Sep 17 00:00:00 2001 From: Keyong Han Date: Tue, 4 Aug 2020 09:41:26 -0700 Subject: [PATCH 7/8] fix license --- ci/licenses_golden/licenses_flutter | 3 --- 1 file changed, 3 deletions(-) diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 83fccfb9d31ae..ca2a71387bb2b 100755 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -10,7 +10,6 @@ LIBRARY: tonic LIBRARY: txt ORIGIN: ../../../flutter/LICENSE TYPE: LicenseType.bsd -FILE: ../../../flutter/ci/dev/validate_json.dart FILE: ../../../flutter/.clang-tidy FILE: ../../../flutter/DEPS FILE: ../../../flutter/assets/asset_manager.cc @@ -20,8 +19,6 @@ FILE: ../../../flutter/assets/directory_asset_bundle.cc FILE: ../../../flutter/assets/directory_asset_bundle.h FILE: ../../../flutter/benchmarking/benchmarking.cc FILE: ../../../flutter/benchmarking/benchmarking.h -FILE: ../../../flutter/ci/dev/engine_prod_builders.json -FILE: ../../../flutter/ci/dev/engine_try_builders.json FILE: ../../../flutter/common/exported_symbols.sym FILE: ../../../flutter/common/settings.cc FILE: ../../../flutter/common/settings.h From 8f2463e6067e14bbb21c3610372601f36a59c62e Mon Sep 17 00:00:00 2001 From: Keyong Han Date: Tue, 4 Aug 2020 11:14:11 -0700 Subject: [PATCH 8/8] add shell script to run test --- ci/dev/dev_test.sh | 19 +++++++++++++++++++ ci/dev/validate_json.dart | 7 +++++-- 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 ci/dev/dev_test.sh diff --git a/ci/dev/dev_test.sh b/ci/dev/dev_test.sh new file mode 100644 index 0000000000000..43d4880bce736 --- /dev/null +++ b/ci/dev/dev_test.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# Copyright 2020 The Flutter Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Runner for dart tests. It expects a single parameter with the full +# path to the start folder where tests will be run. + +set -e + +dir=$(dirname $0) + +pushd $dir > /dev/null +dart validate_json.dart engine_try_builders.json +dart validate_json.dart engine_prod_builders.json + +popd > /dev/null + + diff --git a/ci/dev/validate_json.dart b/ci/dev/validate_json.dart index 0cd19897d9566..957813cf4d3eb 100644 --- a/ci/dev/validate_json.dart +++ b/ci/dev/validate_json.dart @@ -31,7 +31,10 @@ Future main(List args) async { "builders":[ { "name":"xxx", - "repo":"cocoon" + "repo":"engine" + }, { + "name":"xxx", + "repo":"engine" } ] }'''); @@ -40,7 +43,7 @@ Future main(List args) async { } on ExitException catch (error) { error.apply(); } - print('$clock ${bold}Analysis successful.$reset'); + print('$clock ${bold}Analysis successful for ${args[0]}.$reset'); } class ExitException implements Exception {