Source code

Repos

Most of the chrome infra source code lives in these repos:

  • infra.git: primary public repo. Contains many AppEngine apps, monitoring libraries.
  • infra_internal.git: Google-internal counterpart of infra.git. Contains CQ.
  • build: legacy repo. Contains recipes, gatekeeper-ng.
  • build_internal: internal counterpart of build repo.
  • build_limited: minimal set of internal code that must be checked out on builders that run internal builds.
  • luci-py on GitHub: chromium-independent reusable continuous integration services, written in Python. Contains Swarming, Isolate, Auth service, Config service and AppEngine components, used by AppEngine apps in infra.git and infra_internal.git
  • luci-go: like luci-py, but in Golang. Contains Isolate client. (docs)

Standalone one-purpose repos:

See also other internal repos.

Checkout code

If you‘re reading this file, you’re probably involved in the Chromium project already. If this is not the case, you might want to read Chromium's Get the Code page to get some background information. In particular, depot_tools needs to be installed.

First, generate and populate a .gitcookies file to provide authentication for accessing the repos. Visit chromium.googlesource.com/new-password, choose to authenticate only chromium.googlesource.com, and follow the provided directions.

The proper way to check out the non-GitHub repositories is to run:

mkdir chrome_infra   # or whatever name you please
cd chrome_infra
fetch infra   # or `fetch infra_internal` if you are a Googler

Packaging

Some Infra tooling requires manual operations to be performed in order to package it for distribution. See Packaging for more information.

Make changes

See Contributing.

Troubleshooting

If you're a Googler and get authentication errors when running fetch infra_internal you may need to add authentication for the internal repos to your .gitcookies file. Visit chrome-internal.googlesource.com/new-password, choose to authenticate only chrome-internal.googlesource.com, and follow the provided directions.

If you're not running a supported distribution, fetch infra will probably fail complaining that it cannot find some packages on Cloud Storage. This happens with architecture-dependent packages like numpy, which need to be compiled. The workaround is to build the packages for yourself. Just run:

infra/bootstrap/build_deps.py
gclient runhooks

The first command will build the packages are store them locally. The second command deploy them into infra/ENV. For more details on this see bootstraping.

For Googlers

If you are a Googler, see more detailed instructions for working in the other infra repositories.