d9088aeec6
ci / 📄 License Check (push) Has been cancelled
ci / ✅ Semantic Pull Request (push) Has been cancelled
ci / 🔤 Check Spelling (push) Has been cancelled
ci / 👀 Detect Changes (push) Has been cancelled
ci / 🎯 Build ${{ matrix.package }} (${{ matrix.os }}) (push) Has been cancelled
ci / 🎯 Build ${{ matrix.package }} (push) Has been cancelled
ci / 🔎 Verify ${{ matrix.package }} (push) Has been cancelled
ci / ci (push) Has been cancelled
Deploy Artifact Proxy Dev / ☁️ Artifact Proxy (push) Has been cancelled
Shorebird CI / changes (push) Has been cancelled
Shorebird CI / CSpell (push) Has been cancelled
Shorebird CI / artifact_proxy (push) Has been cancelled
Shorebird CI / dex (push) Has been cancelled
Shorebird CI / discord_gcp_alerts (push) Has been cancelled
Shorebird CI / flutter_version_resolver (push) Has been cancelled
Shorebird CI / jwt (push) Has been cancelled
Shorebird CI / scoped_deps (push) Has been cancelled
Shorebird CI / shorebird_build_trace (push) Has been cancelled
Shorebird CI / shorebird_ci (push) Has been cancelled
Shorebird CI / shorebird_cli (push) Has been cancelled
Shorebird CI / shorebird_code_push_client (push) Has been cancelled
Shorebird CI / shorebird_code_push_protocol (push) Has been cancelled
Shorebird CI / shorebird_redis_client (push) Has been cancelled
Shorebird CI / stripe_api (push) Has been cancelled
Shorebird CI / required (push) Has been cancelled
- Updated AAR releaser test to use ShorebirdProcess.defaultFlutterStorageBaseUrl. - Changed macOS releaser test to reference a new troubleshooting URL. - Enhanced shorebird_yaml_test with deserialization for AOT patch metadata. - Modified network_checker_test to check self-hosted URLs from ShorebirdEnv. - Added tests for artifact paths in shorebird_artifacts_test. - Updated shorebird_cli_command_runner_test to reflect new repository URL. - Improved shorebird_env_test with additional tests for shorebirdRoot and engine revision fallback. - Adjusted shorebird_flutter_test to use environment variables for Flutter Git URL. - Updated shorebird_process_test to utilize default Flutter storage URL. - Enhanced shorebird_validator_test to link to the default hosted URL. - Updated shorebird_web_console_test to use the configured hosted URL. - Refactored code_push_client to use default hosted URL for API requests. - Updated README and generation scripts for the code_push_protocol package to reflect new OpenAPI spec source. - Modified shared.sh to allow configurable Flutter repository and storage URLs. Signed-off-by: Tony <tonylu@tony-cloud.com>
59 lines
1.8 KiB
Dart
59 lines
1.8 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:artifact_proxy/artifact_proxy.dart';
|
|
import 'package:shelf/shelf.dart';
|
|
import 'package:shelf/shelf_io.dart' as shelf_io;
|
|
import 'package:shelf_hotreload/shelf_hotreload.dart';
|
|
|
|
Future<void> main(List<String> args) async {
|
|
final isDev = Platform.environment['DEV'] == 'true';
|
|
final shorebirdArtifactBaseUri = _uriFromEnvironment(
|
|
'SHOREBIRD_ARTIFACT_BASE_URL',
|
|
ArtifactManifestClient.defaultManifestBaseUri,
|
|
);
|
|
final flutterArtifactBaseUri = _uriFromEnvironment(
|
|
'ARTIFACT_PROXY_FLUTTER_BASE_URL',
|
|
defaultFlutterArtifactBaseUri,
|
|
);
|
|
final port = int.parse(Platform.environment['PORT'] ?? '8080');
|
|
|
|
if (args.contains('--health-check')) {
|
|
stdout.writeln(
|
|
'artifact_proxy ok '
|
|
'shorebird_artifacts=$shorebirdArtifactBaseUri '
|
|
'flutter_artifacts=$flutterArtifactBaseUri '
|
|
'port=$port',
|
|
);
|
|
return;
|
|
}
|
|
|
|
final client = ArtifactManifestClient(
|
|
manifestBaseUri: shorebirdArtifactBaseUri,
|
|
);
|
|
final handler = artifactProxyHandler(
|
|
client: client,
|
|
flutterArtifactBaseUri: flutterArtifactBaseUri,
|
|
shorebirdArtifactBaseUri: shorebirdArtifactBaseUri,
|
|
);
|
|
final ip = InternetAddress.anyIPv6;
|
|
|
|
// Hot-reload is enabled when the DEBUG environment variable is set to true.
|
|
if (isDev) return withHotreload(() => serve(handler, ip, port));
|
|
|
|
await serve(handler, ip, port);
|
|
}
|
|
|
|
Future<HttpServer> serve(Handler proxy, InternetAddress ip, int port) async {
|
|
const pipeline = Pipeline();
|
|
final handler = pipeline.addMiddleware(logRequests()).addHandler(proxy);
|
|
final server = await shelf_io.serve(handler, ip, port);
|
|
server.autoCompress = true;
|
|
return server;
|
|
}
|
|
|
|
Uri _uriFromEnvironment(String name, Uri defaultValue) {
|
|
final value = Platform.environment[name];
|
|
if (value == null || value.trim().isEmpty) return defaultValue;
|
|
return Uri.parse(value.trim());
|
|
}
|