Fetch deterministic protobuf packages (fixes bots)

Our bots started failing a couple of days ago after proto-gen-go
changes were checked in to github.

This broke many people including us.

This highlighted a known problem we have with deterministic builds -
we fetch a lot of unversioned packages (straight from their master)
which means that we are not only vulnerable to breaking changes, but
also that those changes can break previously good CELab commits.

We should eventually do that for all of our packages, but I've only
taken care of protobuf here.

Change-Id: I0facc895234f3247bee1202e9647e2dc4355518d
Reviewed-on: https://chromium-review.googlesource.com/c/1356765
Reviewed-by: Fei Ling <feiling@chromium.org>
3 files changed
tree: c47bde82873cffa21eba5df63ebaf375bfa074b0
  1. .gitignore
  2. .gitmodules
  3. .style.yapf
  6. Gopkg.lock
  7. Gopkg.toml
  10. PRESUBMIT.py
  11. README.md
  12. build.py
  13. build/
  14. codereview.settings
  15. docs/
  16. examples/
  17. go/
  18. infra/
  19. navbar.md
  20. resources/
  21. schema/
  22. scripts/

Chrome Enterprise Lab

Chrome Enterprise Lab is an inaccurately named set of tools for building enterprise labs quickly and easily. The labs so built can be used for system level end-to-end testing of Google Chrome/Chromium.

Have a peek at the Design document.

Also have a peek at the Code of Conduct.

Most of the code is in Go. See Guide to code to get a head start on the code in this repository.



  • Go: Download Go from the Go download page. This project requires Go 1.9.4 or later. The build will fail with prior versions.

  • Depot Tools: Used for managing the checkout and the contributor workflow.

  • Protocol Buffers Compiler: Protocol buffers are used extensively for wranging all the data that needs to be shuttled around. Can be installed automatically via ./build.py deps --install.

  • Dep : Used for Go depedency management. This can be installed automatically by running ./build.py deps --install from the root of the source tree.

  • Go support for Protocol Buffers : This can be installed automatically by running ./build.py deps --install from the root of the source tree.

Get The Source

There are two ways to get the source. One is to use managed deps, and the other is to use plain go get. The latter workflow doesn't quite work yet due to this repository not being integrated with go.chromium.org. So this page only mentions the managed dependency workflow.

  1. Clone this repository:

    Assumes that $GOPATH is a single path and not a : delimited list.

    mkdir -p ${GOPATH}/src/chromium.googlesource.com/enterprise
    cd ${GOPATH}/src/chromium.googlesource.com/enterprise
    git clone https://chromium.googlesource.com/enterprise/cel
    cd cel
  2. Get the dependencies:

    python build.py deps --install

Build It

  1. Use the build script:

    python build.py build
  2. Also make sure the tests pass.

    python build.py test