// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

The files in this directory constitute the continuous builder:

app/:     an AppEngine server. The code that runs http://build.golang.org/
builder/: gobuilder, a Go continuous build client
coordinator/: daemon that runs on CoreOS on Google Compute Engine and manages
          builds (using the builder in single-shot mode) in Docker containers.
env/:     configuration files describing the environment of builders.
          Many builders are still configured ad-hoc.
watcher/: a daemon that watches for new commits to the Go repository and
          its sub-repositories, and notifies the dashboard of those commits.

If you wish to run a Go builder, please email golang-dev@googlegroups.com

To run a builder:

* Write the key ~gobuild/.gobuildkey 
  You need to get it from someone who knows the key.
  You may also use a filename of the form .gobuildkey-$BUILDER if you
  wish to run builders for multiple targets.

* Append your username and password googlecode.com credentials from
    https://code.google.com/hosting/settings
  to the buildkey file in the format "Username\nPassword\n".
  (This is for uploading tarballs to the project downloads section,
   and is an optional step.)

* Build and run gobuilder (see its documentation for command-line options).

