This server runs on Google Cloud Run, and provides the most recent test results from the Dart CI (continuous integration) testing visible at https://ci.chromium.org/p/dart/g/be/console.
This service is the backend for https://dart-current-results.web.app/ which provides a filterable view of the current test status across all configurations.
The current results service is a REST server written in Dart, running on Cloud Run.
The results service listens for new Dart CI results uploaded to cloud storage, and loads them into an in-memory database of all current CI results. Queries on these results are supported the by the API.
The service takes about forty seconds to load all the existing latest results.json files from all the configurations, so its reponse to the first request after deploying will take at least that long. When an instance is started, a health check verifies that it is responding to web requests, and this health check has a 4 minute timeout. An instance is also started, and the health check run, when deploying a new version.
Pre-requisites:
To generate the required Dart files for the protos, run tools/generate_protogen.sh.
There are two deployment scripts, one for the initial configuration of the current results service to a cloud project, and one for redeploying the current results server.
These scripts should be run with the current directory set to the current_results directory in a checkout of the dart-lang/dart_ci repository, with the version you wish to deploy checked out.
The server reads the current results.json from cloud storage at gs://dart-test-results/configuration/main/[configuration name]/[build number]/ and caches selected fields from those records in memory.
The server exposes a service to Pub/Sub on the same project, which is triggered by any object creation on the dart-test-results bucket. If the object is a /configuration/main/[configuration name]/latest file, the build number is read from that file and the cached results.json is updated from that build.
A REST service is defined, with a query message type and a response message type defined by protocol buffers. It allows test result queries by test name or test name prefix and by configuration or configuration prefix.