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

