Cros SDK Server
About
The SDK Server provides a user interface for many Build API, cros, and repo commands with the overall goal of managing a single chroot, intended to make the average ChromeOS developer workflow simpler.
Running the SDK Server
To run the SDK server simply run the sdk_server symlink found in chromite/contrib/sdk_server. This will start both the grpc server and the web server. To close the server simply kill the process using CTRL+C. In the future we’ll add functionality for the server to be run as a cros command.
Features
Chroot Information, including
- Date chroot was created
- Date last updated
- Path to Chroot
- Chroot Version
Menus for calling a few Build API endpoints which support the options defined in their request protos. These endpoints include:
- SdkService/Update
- SdkService/Create
- SdkService/Delete
- ImageService/Create
A “Build Packages” menu, which works by running the three Build API endpoints:
- SysrootService/Create - through build packages
- SysrootService/InstallToolchain - through build packages
- SysrootService/InstallPackages - through build packages
Endpoints that are listed by the MethodService/Get endpoint are callable by writing custom protos in JSON format (via the “Custom” menu)
All above features produce logs that can be toggled and viewed on the dashboard. A history is stored which can be cleared.
Support for cros_workon commands, including
- Listing all working packages per board
- Options to build individual packages
- A button to stop workon on any package
- Info modals (which display the results of cros workon info) per package
- An “Add Packages” menu to begin working on any package
Repo interactions, including
- A panel displaying the output from repo status (relevant files and their
- statuses in the staging area, working directory, etc.)
- A repo sync button
Future Work
- An integrated bug reporting tool, allowing users to easily upload bugs with stored log information via a Buganizer API
- Ensure that running commands are logged if the server is interrupted
- Modify to use gRPC web, rather than route everything through Python/Flask
- Implementing dedicated cros flash/deploy endpoints
- Expand functionality to handle multiple chroots/branching, in alignment with the goals of go/cros-sdk-server