[web] Check for cached browsers on LUCI (flutter/engine#37721)

This commit is contained in:
Harry Terkelsen 2022-11-17 14:17:52 -08:00 committed by GitHub
parent 1a96095e11
commit 7bdfae0d6b
5 changed files with 50 additions and 3 deletions

View File

@ -273,6 +273,8 @@ targets:
{"download_emsdk": true}
dependencies: >-
[
{"dependency": "chrome_and_driver", "version": "version:107.0"},
{"dependency": "firefox", "version": "version:83.0"},
{"dependency": "goldctl", "version": "git_revision:3a77d0b12c697a840ca0c7705208e8622dc94603"}
]
timeout: 60
@ -501,6 +503,10 @@ targets:
gclient_variables: >-
{"download_emsdk": true}
gcs_goldens_bucket: flutter_logs
dependencies: >-
[
{"dependency": "chrome_and_driver", "version": "version:107.0"}
]
timeout: 60
runIf:
- DEPS

View File

@ -153,6 +153,20 @@ We test with Firefox on LUCI in the Linux Web Engine builder. The process for
rolling Firefox is even easier than Chromium. Simply update `browser_lock.yaml`
with the latest version of Firefox, and run `browser_roller.dart`.
#### .ci.yaml
After rolling Chrome and/or Firefox, also update the CI dependencies in
`.ci.yaml` to make use of the new versions. The lines look like
```yaml
dependencies: >-
[
{"dependency": "chrome_and_driver", "version": "version:107.0"},
{"dependency": "firefox", "version": "version:83.0"},
{"dependency": "goldctl", "version": "git_revision:3a77d0b12c697a840ca0c7705208e8622dc94603"}
]
```
##### **browser_roller.dart**
The script has the following command-line options:

View File

@ -15,6 +15,8 @@ import 'common.dart';
import 'environment.dart';
import 'exceptions.dart';
const String _chromeExecutableVar = 'CHROME_EXECUTABLE';
/// Returns the installation of Chrome, installing it if necessary.
///
/// If [requestedVersion] is null, uses the version specified on the
@ -33,6 +35,18 @@ Future<BrowserInstallation> getOrInstallChrome(
}) async {
infoLog ??= io.stdout;
// When running on LUCI, if we specify the "chrome_and_driver" dependency,
// then the bot will download Chrome from CIPD and place it in a cache and
// set the environment variable CHROME_EXECUTABLE.
if (io.Platform.environment.containsKey(_chromeExecutableVar)) {
infoLog.writeln('Using Chrome from $_chromeExecutableVar variable: '
'${io.Platform.environment[_chromeExecutableVar]}');
return BrowserInstallation(
version: 'cipd',
executable: io.Platform.environment[_chromeExecutableVar]!,
);
}
if (requestedVersion == 'system') {
return BrowserInstallation(
version: 'system',

View File

@ -22,7 +22,7 @@ class FirefoxEnvironment implements BrowserEnvironment {
@override
Future<Browser> launchBrowserInstance(Uri url, {bool debug = false}) async {
return Firefox(url, this, debug: debug);
return Firefox(url, _installation, debug: debug);
}
@override
@ -56,8 +56,7 @@ class FirefoxEnvironment implements BrowserEnvironment {
class Firefox extends Browser {
/// Starts a new instance of Firefox open to the given [url], which may be a
/// [Uri] or a [String].
factory Firefox(Uri url, FirefoxEnvironment firefoxEnvironment, {bool debug = false}) {
final BrowserInstallation installation = firefoxEnvironment._installation;
factory Firefox(Uri url, BrowserInstallation installation, {bool debug = false}) {
final Completer<Uri> remoteDebuggerCompleter = Completer<Uri>.sync();
return Firefox._(BrowserProcess(() async {
// Using a profile on opening will prevent popups related to profiles.

View File

@ -11,6 +11,8 @@ import 'common.dart';
import 'environment.dart';
import 'exceptions.dart';
const String _firefoxExecutableVar = 'FIREFOX_EXECUTABLE';
/// Returns the installation of Firefox, installing it if necessary.
///
/// If [requestedVersion] is null, uses the version specified on the
@ -36,6 +38,18 @@ Future<BrowserInstallation> getOrInstallFirefox(
infoLog ??= io.stdout;
// When running on LUCI, if we specify the "firefox" dependency, then the
// bot will download Firefox from CIPD and place it in a cache and set the
// environment variable FIREFOX_EXECUTABLE.
if (io.Platform.environment.containsKey(_firefoxExecutableVar)) {
infoLog.writeln('Using Firefox from $_firefoxExecutableVar variable: '
'${io.Platform.environment[_firefoxExecutableVar]}');
return BrowserInstallation(
version: 'cipd',
executable: io.Platform.environment[_firefoxExecutableVar]!,
);
}
if (requestedVersion == 'system') {
return BrowserInstallation(
version: 'system',