blob: 79710e068fa48ade0f361ffd179c560d1a297cae [file] [log] [blame] [view] [edit]
# 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