Skip to content

Latest commit

 

History

History
 
 

appengine

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.