We have setup a Virtual Machine on Google Cloud to generate and host various reports for the Matter SDK.
The reporting process is driven by scripts in the repository, minimizing the need to update the VM configuration directly.
integrations/compute_engine/automated_reports.sh: The master script that runs the selected reports, generates a landing page, and optionally deploys to App Engine.integrations/compute_engine/run_alchemy_diff.sh: A specialized script to run the Alchemy diff report. It handles downloading the Alchemy binary, cloning the spec repository, and generating the diff. This script is called by the master script but can be run independently.You can run the reports locally to verify changes or view the results without deploying.
Important: Scripts must be executed from the root of the repository.
Example: Run the conformance and alchemy reports and view them locally:
./integrations/compute_engine/automated_reports.sh --conformance --alchemy --serve
Flags:
--coverage: Run coverage report.--conformance: Run conformance report.--alchemy: Run Alchemy diff report.--all: Run all reports.--serve or --test: Start a local web server at http://localhost:8000 after generation.--deploy: Deploy to App Engine (requires gcloud configured).--pat-secret NAME: Specify the secret name for GitHub PAT (needed for Alchemy if spec repo is private).We created a VM named matter-build-coverage. The machine configuration is located here.
This VM is scheduled to run daily. During boot, it runs startup-script.sh, which clones the repository and runs:
./integrations/compute_engine/automated_reports.sh --all --deploy --pat-secret github-read-only-pat
The resulting files are published via an App Engine service:
https://matter-build-automation.ue.r.appspot.com/https://matter-build-automation.ue.r.appspot.com/coverage/index.htmlhttps://matter-build-automation.ue.r.appspot.com/conformance_report.htmlhttps://matter-build-automation.ue.r.appspot.com/sdk_spec_zapdiff.htmlautomated_reports.sh or run_alchemy_diff.sh in the repository.edit, and update the startup script in the Automation text box.