| # Dev Server |
| |
| [TOC] |
| |
| ## Overview |
| |
| The dev server allows you to update your Chromium OS machine with new builds |
| without having to copy them via a USB drive. It also serves as a static file |
| repository, allowing you to install your own packages and scripts making it easy |
| to customize your machine for development purposes. |
| |
| Note: Every time you create a Chromium OS build, the URL of the dev server |
| corresponding to your development machine is put into `/etc/lsb-release`. This |
| file can be changed post-installation to manage a test machine's update source |
| or can be overridden in `/mnt/stateful_partition/etc/lsb-release`. |
| |
| ## Starting the Dev Server |
| |
| Note: Before you start the dev server, you must have already run |
| `cros build-packages`. If you have not, please run this now. |
| |
| The first step in using the dev server is starting the web server on your |
| development machine: |
| |
| ```bash |
| (chroot)$ start_devserver |
| ``` |
| |
| ## Using the Dev Server |
| |
| ### Options |
| |
| Note that by default the devserver serves the latest image and runs on port |
| 8080. You can change this among many other things. Here is a brief description |
| of some of the options. Please see `start_devserver --help` for more |
| information. |
| |
| * `--use_cached` - Forces the devserver to use the `update.gz` it finds in its |
| static dir. This allows you to pre-generate an update payload and place it |
| in the devserver's static file hosting directory |
| (`~/src/platform/dev/static`). |
| * `--src_image` - Generates a delta update based from the target image on the |
| source image. If the source image you provide is not the image on the |
| machine, the delta update will fail. Note that delta updates despite their |
| name run slower than full updates (but will save you bandwidth). |
| * `--pregenerate_update` - Generates the update before starting the dev |
| server. This keeps from getting nasty timeouts for big update payloads |
| _(necessary for most delta updates)._ |
| * `--image` - Serve this image to a machine that requests it. |
| * `--port` - Start the devserver on this port. |
| * `-t` - From the directory (using the latest image and/or using the archive |
| logic) use the test image found in that directory |
| (`chromiumos_test_image.bin`) |
| * `--static_dir` - Serve images from a file structure. Clients can prefix |
| which image they want in their request by modifying their `omaha_url`. By |
| default this changes the static directory to `~/src/platform/dev/static`. |
| |
| ## Using Devserver to Stage and Serve Artifacts from Google Storage |
| |
| A running devserver listens for calls to its stage and xBuddy RPCs. |
| |
| ### Stage RPC |
| |
| An abbreviated version of the documentation for the stage RPC is copied here, |
| but the up to date version can be found by going to host:port/doc/stage on any |
| running devserver. |
| |
| Downloads and caches the artifacts Google Storage URL. Returns once these have |
| been downloaded on the devserver. A call to this will attempt to cache |
| non-specified artifacts in the background for the given from the given URL |
| following the principle of spatial locality. Spatial locality of different |
| artifacts is explicitly defined in the build_artifact module. These artifacts |
| will then be available from the `static/` sub-directory of the devserver. |
| |
| To download the autotest and test suites tarballs: |
| |
| ``` |
| http://devserver_url:/stage?archive_url=gs://your_url/path&artifacts=autotest,test_suites |
| ``` |
| |
| To download the full update payload: |
| |
| ``` |
| http://devserver_url:/stage?archive_url=gs://your_url/path&artifacts=full_payload |
| ``` |
| |
| To download just a file called `blah.bin`: |
| |
| ``` |
| http://devserver_url:/stage?archive_url=gs://your_url/path&files=blah.bin |
| ``` |
| |
| ### xBuddy RPC |
| |
| See [xBuddy for Devserver]. |
| |
| ## Feature Requests |
| |
| There are many things that can be done to improve this system. Feel free to make |
| suggestions and submit patches. |
| |
| [xBuddy for Devserver]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/xbuddy.md#Devserver-RPC_xbuddy |