blob: 78345477a5a10e12c3a5cf1e174494bda6e4ae6c [file] [log] [blame] [view]
# Source code
[TOC]
## 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](https://chrome-internal.googlesource.com/infra/infra_internal):
Google-internal counterpart of infra.git. Contains CQ.
* [build](https://chromium.googlesource.com/chromium/tools/build/): legacy
repo. Contains recipes, gatekeeper-ng.
* [build_internal](https://chrome-internal.googlesource.com/chrome/tools/build):
internal counterpart of build repo.
* [build_limited](https://chrome-internal.googlesource.com/chrome/tools/build_limited/scripts/slave/):
minimal set of internal code that must be checked out on builders
that run internal builds.
* [luci-py](https://github.com/luci/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](https://github.com/luci/luci-go): like luci-py, but in Golang.
Contains Isolate client. ([docs](https://godoc.org/github.com/luci/luci-go))
Standalone one-purpose repos:
* [expect_tests](https://chromium.googlesource.com/infra/testing/expect_tests):
testing framework used for [recipe tests](users/recipes.md) and
[infra.git's test.py](../test.py).
* [gae](https://github.com/luci/gae): Go wrapper interface around appengine APIs for
better testability. ([docs](https://godoc.org/github.com/luci/gae))
See also
[other internal repos](http://go/chrome-infra-docs-internal/source.md).
## 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](http://dev.chromium.org/developers/how-tos/get-the-code)
to get some background information. In particular,
[_depot_tools_ needs to be installed](http://dev.chromium.org/developers/how-tos/install-depot-tools).
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
## Make changes
See [Contributing](contributing.md).
## 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](/bootstrap/README.md).
## For Googlers
If you are a Googler, see [more detailed
instructions](http://go/chrome-infra-doc-internal) for working in the
other infra repositories.