appengine/
This directory contains the AppEngine services needed for a LUCI infrastructure.
Every single microservice below is optional. Please mix and match based on your needs.
TL;DR
Services
- auth_service/ Authentication Server. Provides centralized group management and group database replication across services.
- config_service/ is a project configuration distribution server that supports importing from repositories.
- gce-backend/ is a Google Compute Engine backend for machine_provider.
- isolate/ Isolate Server is a Content-Addressed Cache running on AppEngine backed by Cloud Storage.
- machine_provider/ Machine provider is a service to lease VMs from a pool to users.
- swarming/ Swarming Server is a task distribution engine for highly hetegeneous fleet at high scale.
Supporting code
- components/ contains the modules shared by all services in this repository. This includes the embeddable part of auth_service to act as a client for auth_service, ereporter2, machine_provider, tooling for testing and deployment.
- third_party/ contains shared third parties. Services using these should symlink the packages inside the root server directory so it becomes available in sys.path.
- third_party_local/ constains testing or tooling related third parties that are not meant to be ever used on a AppEngine server.
Tooling
All services can be managed with ./tools/gae
, including running locally or pushing a new version. Use ./tools/gae help
for an up to date list of commands available.
Pushing
Pushing new code to an AppEngine instance doesn't change the default version.
To push a new version of one of the services, do:
cd <server> # for example, config_service
./tools/gae upload -A <instance_name>
As described in the output by the tool, you can access it to <version>-dot-<name>.appspot.com
until you switch the default version.
Changing the version
To make the new code live, you need to change the default version:
cd <server> # for example, config_service
./tools/gae switch -A <instance_name>
gae
will propose the versions already uploaded and will propose the latest one by default.
External dependencies
luci-py leverages Chromium specific functionalities: CIPD (hermetic package management) and ts_mon (monitoring). Neither are strictly required for operational purpose.