Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stable #117821

Closed
wants to merge 42 commits into from
Closed

Stable #117821

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
f90da9b
[flutter_releases] Flutter beta 3.3.0-0.0.pre Framework Cherrypicks (…
Jul 19, 2022
3c583e0
[flutter_tools] Fix null check errors in attach command (#107864) (#1…
christopherfujino Jul 26, 2022
d952ca8
Update Engine revision to fd131c385ee2a2d0484c49ed859911798e4e177b fo…
XilaiZhang Jul 27, 2022
64f5930
[flutter_releases] Roll engine to d1e7dc18 (#108577)
Jul 29, 2022
7ac27ac
[flutter_releases] Flutter beta 3.3.0-0.2.pre Framework Cherrypicks (…
godofredoc Aug 2, 2022
f33cec8
[flutter_tools] Catch more general XmlException rather than XmlParser…
christopherfujino Aug 8, 2022
8c11498
update engine version (#109318)
itsjustkevin Aug 10, 2022
7fba378
CP: Fix Android platform view creation flow (#109544)
stuartmorgan Aug 18, 2022
3c0bee8
[flutter_releases] Flutter beta 3.3.0-0.4.pre Framework Cherrypicks (…
muditatandon Aug 19, 2022
f35bf40
fix flutter not finding custom device (#108884) (#109957)
zanderso Aug 22, 2022
0961626
Remove deprecated Ruby File.exists? in helper script (#110045)
jmagman Aug 22, 2022
db73554
[flutter_tools] Enable custom devices on all channels (#109953) (#109…
zanderso Aug 26, 2022
76f5ff5
Generate syntax for plugin registration that works both with and with…
MatthewPatience Aug 29, 2022
ffccd96
Update Engine revision to 5e9e0e0aa8be4ff69facadd706b713f0bb54d5b3 fo…
Aug 30, 2022
4f9d92f
Update engine version for 3.3.1 version. (#111057)
godofredoc Sep 7, 2022
5870540
[framework] work around to load self packages from packages/ (#111350…
jonahwilliams Sep 13, 2022
e331e3d
[framework] revert removal of opacity (#111202) (#111207)
jonahwilliams Sep 13, 2022
e3c29ec
Update Engine revision to a4ff2c53d84ca78702bc3be6c7ef0788ffca01d3 fo…
itsjustkevin Sep 14, 2022
ed174a4
Do not codesign transitive dependency iOS pod resource bundles (#1117…
jmagman Sep 16, 2022
0cf3ded
Avoid sending zero transform semantic nodes to the engine (#111843) (…
dnfield Sep 20, 2022
2eb68ad
Update Engine revision to eb1ff8b5139dbdede725835bcaf65fb731384acb fo…
Sep 27, 2022
18a827f
[flutter_releases] Flutter stable 3.3.3 engine update (#112510)
christopherfujino Sep 28, 2022
914bd15
update engine version (#112868)
XilaiZhang Oct 4, 2022
eb6d86e
Run docs publish on all branches. (#112909) (#112912)
godofredoc Oct 5, 2022
54d3c4c
Temporarily remove a bogus warning until fixed by dwds update (#10979…
christopherfujino Oct 5, 2022
b7a0f2b
CP: Add a script to post-process docs. (#112228) (#112979)
godofredoc Oct 6, 2022
eebbb0e
fixes FadeInImage for an edge case (#111035) (#113035)
chunhtai Oct 18, 2022
d9111f6
Update Engine revision to 3ad69d7be3a7231aab5525db322fc699f098315f fo…
godofredoc Oct 19, 2022
6928314
Wait for non-empty layout in platform view placeholder (#112402) (#11…
stuartmorgan Oct 25, 2022
8536931
[CP] Remove exclamation marks (#107683) (#113553)
justinmc Oct 31, 2022
e99c9c7
Update Engine revision to 857bd6b74c5eb56151bfafe91e7fa6a82b6fee25 fo…
Nov 1, 2022
7fb1d47
[releases] Handle privatecommand messages that pass no data #112590 (…
absar Nov 8, 2022
013ada8
[release] Do not assume that pub is the first command run by "flutter…
Nov 9, 2022
a1b2976
CP: Fix the path where footer is written. (#114947)
godofredoc Nov 9, 2022
52b3dc2
[CP] Fix a type casting error in text_input.dart (#109635) (#114806)
AlexV525 Nov 9, 2022
b8f7f1f
[flutter_releases] Flutter stable 3.3.9 Framework Cherrypicks (#115856)
itsjustkevin Nov 22, 2022
199c4bf
CP: ci.yaml changes for packaging (#117038)
godofredoc Dec 14, 2022
8461df2
Add release_build parameter (#116307) (#117088)
godofredoc Dec 14, 2022
1545b04
Zip api docs using the repo under test script. (#116437) (#117093)
godofredoc Dec 14, 2022
f3bc661
[flutter_releases] Flutter stable 3.3.10 Framework Cherrypicks (#117041)
XilaiZhang Dec 15, 2022
3778e3c
Revert "CP: ci.yaml changes for packaging (#117038)" (#117132)
XilaiZhang Dec 15, 2022
135454a
CP: ci.yaml changes for packaging (#117133)
godofredoc Dec 15, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 104 additions & 3 deletions .ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -216,9 +216,6 @@ targets:
validation_name: Customer testing

- name: Linux docs_publish
enabled_branches:
- main
- master
recipe: flutter/flutter
presubmit: false
timeout: 60
Expand All @@ -234,6 +231,7 @@ targets:
validation_name: Docs
firebase_project: master-docs-flutter-dev
release_ref: refs/heads/master
release_build: "true"

- name: Linux docs_test
recipe: flutter/flutter
Expand Down Expand Up @@ -4334,3 +4332,106 @@ targets:
["devicelab", "android", "windows"]
task_name: windows_chrome_dev_mode
scheduler: luci

- name: Linux flutter_packaging
recipe: packaging_v2/packaging_v2
timeout: 60
scheduler: release
bringup: true
enabled_branches:
- beta
- stable
- main
properties:
task_name: flutter_packaging
tags: >
["framework", "hostonly", "shard", "linux"]

- name: Mac flutter_packaging
recipe: packaging_v2/packaging_v2
timeout: 60
scheduler: release
bringup: true
enabled_branches:
- beta
- stable
- main
properties:
task_name: flutter_packaging
tags: >
["framework", "hostonly", "shard", "mac"]


- name: Mac_arm64 flutter_packaging
recipe: packaging_v2/packaging_v2
timeout: 60
scheduler: release
bringup: true
enabled_branches:
- beta
- stable
- main
properties:
task_name: flutter_packaging
tags: >
["framework", "hostonly", "shard", "mac"]
dimensions:
cpu: "arm64"

- name: Windows flutter_packaging
recipe: packaging_v2/packaging_v2
timeout: 60
scheduler: release
bringup: true
enabled_branches:
- beta
- stable
- main
properties:
task_name: flutter_packaging
tags: >
["framework", "hostonly", "shard", "windows"]


- name: Linux docs_deploy_beta
recipe: flutter/flutter
scheduler: release
bringup: true
enabled_branches:
- beta
- main
presubmit: false
timeout: 60
properties:
cores: "32"
dependencies: >-
[
{"dependency": "dashing", "version": "0.4.0"},
{"dependency": "firebase", "version": "v11.0.1"}
]
tags: >
["framework", "hostonly", "linux"]
validation: docs_deploy
validation_name: Docs_deploy
firebase_project: master-docs-flutter-dev

- name: Linux docs_deploy_stable
recipe: flutter/flutter
scheduler: release
bringup: true
enabled_branches:
- stable
presubmit: false
timeout: 60
properties:
cores: "32"
dependencies: >-
[
{"dependency": "dashing", "version": "0.4.0"},
{"dependency": "firebase", "version": "v11.0.1"}
]
tags: >
["framework", "hostonly", "linux"]
validation: docs_deploy
validation_name: Docs_deploy
firebase_project: docs-flutter-dev
18 changes: 9 additions & 9 deletions .cirrus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ environment:
# dependency on precisely how Cirrus is detected by our tools.
BOT: "true"

gcp_credentials: ENCRYPTED[!ebad0a1f4f7a446b77944c33651460a7ab010b4617273cb016cf354eb8fc22aa92e37a3c58bfa4a0c40a799351e027a6!]
gcp_credentials: ENCRYPTED[!f1177d1ddb5330ffaa9ea11c9c9e8e0c542185e895c36071f18cec923dd31c50ece6d18da89c2f6f1cd2d1a98d0c2eea!]

# LINUX SHARDS
task:
Expand Down Expand Up @@ -68,7 +68,7 @@ task:
- which flutter
matrix:
- name: analyze-linux # linux-only
only_if: "$CIRRUS_PR != ''"
only_if: "$CIRRUS_PR != '' && $CIRRUS_BASE_BRANCH == 'master'"
environment:
# Empirically, the analyze-linux shard runs surprisingly fast (under 15 minutes) with just 1
# CPU. We noticed OOM failures with 6GB 4/2020, so we increased the memory.
Expand All @@ -78,7 +78,7 @@ task:
- dart --enable-asserts ./dev/bots/analyze.dart

- name: framework_tests-widgets-linux
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/**') && $CIRRUS_PR != ''"
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/**') && $CIRRUS_PR != '' && $CIRRUS_BASE_BRANCH == 'master'"
environment:
# We use 3 CPUs because that's the minimum required to get framework_tests-widgets-linux
# running fast enough that it is not the long pole, as of October 2019.
Expand All @@ -87,7 +87,7 @@ task:
- dart --enable-asserts ./dev/bots/test.dart

- name: framework_tests-libraries-linux
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/**') && $CIRRUS_PR != ''"
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/**') && $CIRRUS_PR != '' && $CIRRUS_BASE_BRANCH == 'master'"
environment:
# We use 3 CPUs because that's the minimum required to get the
# framework_tests-libraries-linux shard running fast enough that it is not the long pole, as
Expand All @@ -98,7 +98,7 @@ task:

- name: framework_tests-misc-linux
# this includes the tests for directories in dev/
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'packages/flutter/**', 'packages/flutter_goldens/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/**') && $CIRRUS_PR != ''"
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'packages/flutter/**', 'packages/flutter_goldens/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/**') && $CIRRUS_PR != '' && $CIRRUS_BASE_BRANCH == 'master'"
environment:
# We use 3 CPUs because that's the minimum required to get framework_tests-misc-linux
# running fast enough that it is not the long pole, as of October 2019.
Expand All @@ -107,7 +107,7 @@ task:
- dart --enable-asserts ./dev/bots/test.dart

- name: tool_tests-general-linux
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'packages/flutter_tools/**', 'bin/**') && $CIRRUS_PR != ''"
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'packages/flutter_tools/**', 'bin/**') && $CIRRUS_PR != '' && $CIRRUS_BASE_BRANCH == 'master'"
environment:
# As of November 2019, the tool_tests-general-linux shard got faster with more CPUs up to 4
# CPUs, and needed at least 10G of RAM to not run out of memory.
Expand All @@ -122,7 +122,7 @@ task:
- dart --enable-asserts ./dev/bots/test.dart

- name: tool_tests-commands-linux
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'packages/flutter_tools/**', 'bin/**') && $CIRRUS_PR != ''"
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'packages/flutter_tools/**', 'bin/**') && $CIRRUS_PR != '' && $CIRRUS_BASE_BRANCH == 'master'"
environment:
# As of October 2019, the tool_tests-commands-linux shard got faster with more CPUs up to 6
# CPUs, and needed at least 8G of RAM to not run out of memory.
Expand All @@ -139,12 +139,12 @@ task:
environment:
CPU: 4
MEMORY: 12G
only_if: "$CIRRUS_PR != ''"
only_if: "$CIRRUS_PR != '' && $CIRRUS_BASE_BRANCH == 'master'"
script:
- ./dev/bots/docs.sh

- name: customer_testing-linux
only_if: "$CIRRUS_PR != ''"
only_if: "$CIRRUS_PR != '' && $CIRRUS_BASE_BRANCH == 'master'"
environment:
# Empirically, this shard runs fine at 1 CPU and 4G RAM as of October 2019. We will probably
# want to grow this container when we invite people to add their tests in large numbers.
Expand Down
1 change: 1 addition & 0 deletions TESTOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -262,3 +262,4 @@
# skp_generator @Hixie
# test_ownership @keyonghan
# verify_binaries_codesigned @christopherfujino @flutter/releases
# flutter_packaging @godofredoc @flutter/infra
2 changes: 1 addition & 1 deletion bin/internal/engine.version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
24a1b60e7fd172158b3aae034281a8856b7db626
3316dd8728419ad3534e3f6112aa6291f587078a
2 changes: 1 addition & 1 deletion bin/internal/flutter_plugins.version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8ed5e3f3ce0c5099031f156693ce35638676652e
e183aec328ead613b4ccc3c1f541327d0acdc80b
1 change: 1 addition & 0 deletions bin/internal/release-candidate-branch.version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
flutter-3.2-candidate.5
4 changes: 4 additions & 0 deletions dev/bots/docs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -148,3 +148,7 @@ if [[ -n "$LUCI_CI" && -z "$LUCI_PR" ]]; then
(cd "$FLUTTER_ROOT/dev/docs"; move_offline_into_place)
deploy_docs
fi

# Zip docs
cd "$FLUTTER_ROOT/dev/docs"
zip api_docs.zip doc
155 changes: 155 additions & 0 deletions dev/bots/post_process_docs.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
// Copyright 2014 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 'package:intl/intl.dart';
import 'package:meta/meta.dart';

import 'package:path/path.dart' as path;
import 'package:platform/platform.dart' as platform;

import 'package:process/process.dart';

const String kDocsRoot = 'dev/docs';
const String kPublishRoot = '$kDocsRoot/doc';

class CommandException implements Exception {}

Future<void> main() async {
await postProcess();
}

/// Post-processes an APIs documentation zip file to modify the footer and version
/// strings for commits promoted to either beta or stable channels.
Future<void> postProcess() async {
final String revision = await gitRevision(fullLength: true);
print('Docs revision being processed: $revision');
final Directory tmpFolder = Directory.systemTemp.createTempSync();
final String zipDestination = path.join(tmpFolder.path, 'api_docs.zip');

if (!Platform.environment.containsKey('SDK_CHECKOUT_PATH')) {
print('SDK_CHECKOUT_PATH env variable is required for this script');
exit(1);
}
final String checkoutPath = Platform.environment['SDK_CHECKOUT_PATH']!;
final String docsPath = path.join(checkoutPath, 'dev', 'docs');
await runProcessWithValidations(
<String>[
'curl',
'-L',
'https://storage.googleapis.com/flutter_infra_release/flutter/$revision/api_docs.zip',
'--output',
zipDestination,
'--fail',
],
docsPath,
);

// Unzip to docs folder.
await runProcessWithValidations(
<String>[
'unzip',
'-o',
zipDestination,
],
docsPath,
);

// Generate versions file.
await runProcessWithValidations(
<String>['flutter', '--version'],
docsPath,
);
final File versionFile = File('version');
final String version = versionFile.readAsStringSync();
// Recreate footer
final String publishPath = path.join(docsPath, '..', 'docs', 'doc', 'flutter', 'footer.js');
final File footerFile = File(publishPath)..createSync(recursive: true);
createFooter(footerFile, version);
}

/// Gets the git revision of the current checkout. [fullLength] if true will return
/// the full commit hash, if false it will return the first 10 characters only.
Future<String> gitRevision({
bool fullLength = false,
@visibleForTesting platform.Platform platform = const platform.LocalPlatform(),
@visibleForTesting ProcessManager processManager = const LocalProcessManager(),
}) async {
const int kGitRevisionLength = 10;

final ProcessResult gitResult = processManager.runSync(<String>['git', 'rev-parse', 'HEAD']);
if (gitResult.exitCode != 0) {
throw 'git rev-parse exit with non-zero exit code: ${gitResult.exitCode}';
}
final String gitRevision = (gitResult.stdout as String).trim();
if (fullLength) {
return gitRevision;
}
return gitRevision.length > kGitRevisionLength ? gitRevision.substring(0, kGitRevisionLength) : gitRevision;
}

/// Wrapper function to run a subprocess checking exit code and printing stderr and stdout.
/// [executable] is a string with the script/binary to execute, [args] is the list of flags/arguments
/// and [workingDirectory] is as string to the working directory where the subprocess will be run.
Future<void> runProcessWithValidations(
List<String> command,
String workingDirectory, {
@visibleForTesting ProcessManager processManager = const LocalProcessManager(),
}) async {
final ProcessResult result =
processManager.runSync(command, stdoutEncoding: utf8, workingDirectory: workingDirectory);
if (result.exitCode == 0) {
print('Stdout: ${result.stdout}');
} else {
print('StdErr: ${result.stderr}');
throw CommandException();
}
}

/// Get the name of the release branch.
///
/// On LUCI builds, the git HEAD is detached, so first check for the env
/// variable "LUCI_BRANCH"; if it is not set, fall back to calling git.
Future<String> getBranchName({
@visibleForTesting platform.Platform platform = const platform.LocalPlatform(),
@visibleForTesting ProcessManager processManager = const LocalProcessManager(),
}) async {
final RegExp gitBranchRegexp = RegExp(r'^## (.*)');
final String? luciBranch = platform.environment['LUCI_BRANCH'];
if (luciBranch != null && luciBranch.trim().isNotEmpty) {
return luciBranch.trim();
}
final ProcessResult gitResult = processManager.runSync(<String>['git', 'status', '-b', '--porcelain']);
if (gitResult.exitCode != 0) {
throw 'git status exit with non-zero exit code: ${gitResult.exitCode}';
}
final RegExpMatch? gitBranchMatch = gitBranchRegexp.firstMatch((gitResult.stdout as String).trim().split('\n').first);
return gitBranchMatch == null ? '' : gitBranchMatch.group(1)!.split('...').first;
}

/// Updates the footer of the api documentation with the correct branch and versions.
/// [footerPath] is the path to the location of the footer js file and [version] is a
/// string with the version calculated by the flutter tool.
Future<void> createFooter(File footerFile, String version,
{@visibleForTesting String? timestampParam,
@visibleForTesting String? branchParam,
@visibleForTesting String? revisionParam}) async {
final String timestamp = timestampParam ?? DateFormat('yyyy-MM-dd HH:mm').format(DateTime.now());
final String gitBranch = branchParam ?? await getBranchName();
final String revision = revisionParam ?? await gitRevision();
final String gitBranchOut = gitBranch.isEmpty ? '' : '• $gitBranch';
footerFile.writeAsStringSync('''
(function() {
var span = document.querySelector('footer>span');
if (span) {
span.innerText = 'Flutter $version • $timestamp • $revision $gitBranchOut';
}
var sourceLink = document.querySelector('a.source-link');
if (sourceLink) {
sourceLink.href = sourceLink.href.replace('/master/', '/$revision/');
}
})();
''');
}
3 changes: 2 additions & 1 deletion dev/bots/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ environment:
dependencies:
args: 2.3.1
crypto: 3.0.2
intl: 0.17.0
flutter_devicelab:
path: ../devicelab
http_parser: 4.0.1
Expand Down Expand Up @@ -69,4 +70,4 @@ dependencies:
dev_dependencies:
test_api: 0.4.12

# PUBSPEC CHECKSUM: b99a
# PUBSPEC CHECKSUM: d1d2
Loading