This utility tool is used by LUCI infrastructure to manage device health for Flutter LUCI swarming bots.
It offers support for different host platforms: linux, mac and windows, and different devices: android and iOS.
Different devices require different tools to be in the path
beforehand.
adb
idevice_id
idevicediagnostics
xcrun
This tool is meant to be published as an AOT compiled binary distributed via CIPD.
Build the tool for different host platforms on corresponding machines. It will automatically download a suitable version of Dart to build the binary.
To create the CIPD package, make sure that the build/
folder does not exist.
Every new commit will trigger pre-submit builders to auto build a new version for different platforms without any tag/ref.
When a new commit is submitted, post-submit builders will trigger a new version with a tag of commit_sha
, and a ref of latest
.
Running tool/build.sh
or tool/build.bat
will build an executable binary in the build
folder. Then push to cipd by running
cipd create -in build \ -name flutter/device_doctor/<os>-amd64 \ -ref <ref> \ -tag sha_timestamp:<revision>_<timestamp>
linux
, mac
, or windows
.release
or staging
device_doctor
is the executable binary, and can be called
/path/to/device_doctor --action <healthcheck|recovery|properties> --device-os <android|ios>
Use /path/to/device_doctor --help
to learn more.
Note: this tool is assuming one connected device on each host, but can be easily extended to support multiple devices.
The release process of the tool is controlled by setting release
and staging
refs.
To promote a given version to staging you can run the following command:
cipd set-ref flutter/device_doctor/<os>-<arch> -ref staging -version <packageid>
Example for mac and amd64:
cipd set-ref flutter/device_doctor/mac-amd64 -ref staging -version IQgKjNstWbFhUuMVp898zZoPKRd66KLRKuiY88XYQXAC
After extensive validation on staging you can promote the package to release using:
cipd set-ref flutter/device_doctor/<os>-<arch> -ref release -version <packageid>