// 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:

godashboard/: an AppEngine server
builder/:     gobuilder, a Go continuous build client

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).

