README

Local development notes:

Server:  (TLS stuff is optional)
$ go run $GOROOT/src/crypto/tls/generate_cert.go --host=example.com
$ GCEMETA_password=foo GCEMETA_tls_cert=@cert.pem GCEMETA_tls_key='@key.pem' ./buildlet

Client:
$ curl -O https://go.googlesource.com/go/+archive/3b76b017cabb.tar.gz
$ curl -k --user :foo -X PUT --data-binary "@go-3b76b017cabb.tar.gz" https://localhost:5936/writetgz
$ curl -k --user :foo -d "cmd=src/make.bash" http://127.0.0.1:5937/exec
etc

Documentation

Overview

    The buildlet is an HTTP server that untars content to disk and runs commands it has untarred, streaming their output back over HTTP. It is part of Go's continuous build system.

    This program intentionally allows remote code execution, and provides no security of its own. It is assumed that any user uses it with an appropriately-configured firewall between their VM instances.

    Directories

    Path Synopsis
    The stage0 command looks up the buildlet's URL from its environment (GCE metadata service, scaleway, etc), downloads it, and runs it.
    The stage0 command looks up the buildlet's URL from its environment (GCE metadata service, scaleway, etc), downloads it, and runs it.
    The testssh binary exists to verify that a buildlet container's ssh works, without running the whole coordinator binary in the staging environment.
    The testssh binary exists to verify that a buildlet container's ssh works, without running the whole coordinator binary in the staging environment.