fix: download.shorebird.dev symbol downloads not working (#1707)

Co-authored-by: Felix Angelov <felix@shorebird.dev>
This commit is contained in:
Eric Seidel
2024-02-06 10:37:07 -08:00
committed by GitHub
parent cd3fa0c89e
commit 0a63a3c797
3 changed files with 43 additions and 1 deletions
+6
View File
@@ -26,6 +26,7 @@ final engineArtifactPatterns = {
r'flutter_infra_release\/flutter\/(.*)\/linux-arm64-profile\/linux-arm64-flutter-gtk\.zip',
r'flutter_infra_release\/flutter\/(.*)\/ios\/artifacts\.zip',
r'flutter_infra_release\/flutter\/(.*)\/ios-release\/artifacts\.zip',
r'flutter_infra_release\/flutter\/(.*)\/ios-release\/Flutter.dSYM\.zip',
r'flutter_infra_release\/flutter\/(.*)\/ios-profile\/artifacts\.zip',
r'flutter_infra_release\/flutter\/(.*)\/flutter-web-sdk\.zip', // Web SDK seems to be all-platform after 3.10.0.
r'flutter_infra_release\/flutter\/(.*)\/flutter-web-sdk-windows-x64\.zip', // Platform-specific web-sdks may no longer needed as of 3.10.0?
@@ -57,6 +58,7 @@ final engineArtifactPatterns = {
r'flutter_infra_release\/flutter\/(.*)\/android-x64-release\/linux-x64\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-x64-release\/darwin-x64\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-x64-release\/artifacts\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-x64-release\/symbols\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-x64-profile\/windows-x64\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-x64-profile\/linux-x64\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-x64-profile\/darwin-x64\.zip',
@@ -66,19 +68,23 @@ final engineArtifactPatterns = {
r'flutter_infra_release\/flutter\/(.*)\/android-arm64-release\/linux-x64\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm64-release\/darwin-x64\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm64-release\/artifacts\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm64-release\/symbols\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm64-profile\/windows-x64\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm64-profile\/linux-x64\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm64-profile\/darwin-x64\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm64-profile\/artifacts\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm64-profile\/symbols\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm\/artifacts\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm-release\/windows-x64\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm-release\/linux-x64\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm-release\/darwin-x64\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm-release\/artifacts\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm-release\/symbols\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm-profile\/windows-x64\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm-profile\/linux-x64\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm-profile\/darwin-x64\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm-profile\/artifacts\.zip',
r'flutter_infra_release\/flutter\/(.*)\/android-arm-profile\/symbols\.zip',
r'download.flutter.io\/io\/flutter\/x86_debug\/1\.0\.0-(.*)\/x86_debug-1\.0\.0-(.*)\.pom',
r'download.flutter.io\/io\/flutter\/x86_64_release\/1\.0\.0-(.*)\/x86_64_release-1\.0\.0-(.*)\.pom\.sha1',
r'download.flutter.io\/io\/flutter\/x86_64_release\/1\.0\.0-(.*)\/x86_64_release-1\.0\.0-(.*)\.pom',
@@ -1,6 +1,7 @@
import 'dart:io';
import 'package:artifact_proxy/artifact_proxy.dart';
import 'package:checked_yaml/checked_yaml.dart';
import 'package:mocktail/mocktail.dart';
import 'package:shelf/shelf.dart';
import 'package:test/test.dart';
@@ -14,9 +15,12 @@ void main() {
flutterEngineRevision: 'ec975089acb540fc60752606a3d3ba809dd1528b',
storageBucket: 'download.shorebird.dev',
artifactOverrides: {
r'flutter_infra_release/flutter/$engine/android-arm-64-release/artifacts.zip',
r'flutter_infra_release/flutter/$engine/android-arm64-release/artifacts.zip',
r'flutter_infra_release/flutter/$engine/android-arm64-release/symbols.zip',
r'flutter_infra_release/flutter/$engine/android-arm-release/artifacts.zip',
r'flutter_infra_release/flutter/$engine/android-arm-release/symbols.zip',
r'flutter_infra_release/flutter/$engine/android-x64-release/artifacts.zip',
r'flutter_infra_release/flutter/$engine/android-x64-release/symbols.zip',
r'download.flutter.io/io/flutter/flutter_embedding_release/1.0.0-$engine/flutter_embedding_release-1.0.0-$engine.pom',
r'download.flutter.io/io/flutter/flutter_embedding_release/1.0.0-$engine/flutter_embedding_release-1.0.0-$engine.jar',
r'download.flutter.io/io/flutter/arm64_v8a_release/1.0.0-$engine/arm64_v8a_release-1.0.0-$engine.pom',
@@ -142,5 +146,33 @@ void main() {
expect(response.headers['content-type'], equals('text/html'));
expect(response.readAsString(), completion(contains('Shorebird')));
});
// artifact_proxy only runs on linux currently.
test('generate_manifest matches config', () async {
// Make a temp directory, run generate_manifest, parse the yaml
// and make sure all urls are handled.
const engineRevision = '8b89f8bd9fc6982aa9c4557fd0e5e89db1ff9986';
final result = Process.runSync('/bin/sh', [
'tool/generate_manifest.sh',
engineRevision,
]);
expect(result.exitCode, equals(0));
final manifest = checkedYamlDecode(
result.stdout as String,
(m) => ArtifactsManifest.fromJson(m!),
);
expect(manifest.artifactOverrides, isNotEmpty);
for (final pattern in manifest.artifactOverrides) {
final path = pattern.replaceAll(r'$engine', engineRevision);
final request = buildRequest(path);
final response = await handler(request);
expect(
response.statusCode,
isNot(HttpStatus.notFound),
reason: 'Pattern $pattern not handled',
);
}
});
});
}
@@ -7,6 +7,9 @@
set -e
# NOTE: If you edit this file you also may need to edit the global list
# of all known artifacts in config.dart
if [ "$#" -ne 1 ]; then
echo "Usage: ./generate_manifest.sh <flutter_engine_revision>"
exit 1
@@ -61,3 +64,4 @@ artifact_overrides:
# iOS release artifacts
# Includes unified Flutter.framework for device and simulator (debug)
- flutter_infra_release/flutter/\$engine/ios-release/artifacts.zip
- flutter_infra_release/flutter/\$engine/ios-release/Flutter.dSYM.zip