This creates a mechanism for clients (such as cmd/release and
cmd/gomote) to obtain buildlets via the coordinator. Previously
cmd/release and cmd/gomote could only create GCE VMs themselves, and
required the GCE project's credentials. In addition to the awkwardness
of needing to hand out the GCE credentials, it also meant ARM and
Darwin buildlets (which use the reverse buildlet pool) weren't usable.
Instead, this creates a new auth mechanism where the coordinator is
contacted over TLS with key pinning (the CA system isn't used) in the
same way that the reverse builders already dialed into the
coordinator, and then a "user build type" and hash are sent as the
username and password. The same master key is used to sign user
builder keys, and they always start with "user-". (which isn't a GOOS).
Then the coordinator provides an API to create and list buildlets.
They auto-expire after a duration and are auto-renewed upon use.
The buildlet library (as used by cmd/release etc) then proxies HTTP
requests via the coordinator to the backend buildlet.
See doc/remote-buildlet.txt for protocol details.
Change-Id: I12e27eae788fdd91927cb182b950893dc759f8e9
Reviewed-on: https://go-review.googlesource.com/11901
Reviewed-by: Andrew Gerrand <adg@golang.org>
I made it static in GCE's web UI but as always, I forgot you can't
rename IP addresses in GCE, so we get another special case here since
our auto-detect logic below wouldn't work. Oh well.
Change-Id: Iae2a435576e9b03959f2e634929da94f0e9275c2
Reviewed-on: https://go-review.googlesource.com/11902
Reviewed-by: Andrew Gerrand <adg@golang.org>
Also link commits to github (nicer diff view).
Also remove some old Mercurial cruft.
Change-Id: I717900cd9cac9c6b5d08b0594d5adf29ed56eeb7
Reviewed-on: https://go-review.googlesource.com/11327
Reviewed-by: Chris Broadfoot <cbro@google.com>
Reviewed-by: Andrew Gerrand <adg@golang.org>
Add closed flag so people can ask for them.
Change-Id: Ifc69f318f54b0c644d2356381e39a757855cd619
Reviewed-on: https://go-review.googlesource.com/11171
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Now you have to fail 3 in a row before you're killed.
This helped Plan 9 a bunch for a few days, before the change was
reverted (and then it started failing consistently again).
We still don't know why Plan 9 sucks at replying to heartbeats.
Change-Id: Ic64d2e8fb75f544c7c3e9a62c28ab9e20ff8392d
Reviewed-on: https://go-review.googlesource.com/11132
Reviewed-by: Andrew Gerrand <adg@golang.org>
Reviewed-by: David du Colombier <0intro@gmail.com>
The coordinator will automatically start building sub-repos against
the stable releases once this dashboard is rolled out.
Fixesgolang/go#11197
Change-Id: I6f0735f842431a1c072d748f9073120812a03309
Reviewed-on: https://go-review.googlesource.com/11112
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Add background heartbeats to detect dead GCE VMs (the OpenBSD
buildlets seem to hang a lot),
Add timeouts to test executions.
Take helper buildlets out of service once they're marked bad.
Keep the in-order buildlet running forever when sharding tests, in
case all the helpers die. (observed once)
Keep a cache of recently deleted VMs and don't try to delete VMs again
if we've recently deleted them. (they're slow to delete)
More reverse buildlets more paranoid in their health checking and closing
of the connection.
Make status page link to /try set URLs.
Also, better logging (more sometimes, less others0, and misc bug fixes.
Change-Id: I57a5e8e39381234006cac4dd799b655d64be71bb
Reviewed-on: https://go-review.googlesource.com/10981
Reviewed-by: Andrew Gerrand <adg@golang.org>
There were too many blue gophers too early on build.golang.org.
Wait until we have quota first (GCE quota or reverse buildlet pool
aquired).
Updates golang/go#10716
Change-Id: I076e89f319d68d55a61f3f8faf0242342c5ae825
Reviewed-on: https://go-review.googlesource.com/10921
Reviewed-by: Andrew Gerrand <adg@golang.org>
Also: heartbeat reverse buildlets more often
Also: adjust cmd/go test expected duration.
Change-Id: I75fbb66a0b20ac7357ad7cf78fc545101ac9aa33
Reviewed-on: https://go-review.googlesource.com/10884
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Andrew Gerrand <adg@golang.org>
Per request of iant and rsc.
Change-Id: Ifae7b6c1a83240382635a87ccc2c8d8aa429b901
Reviewed-on: https://go-review.googlesource.com/10848
Reviewed-by: Andrew Gerrand <adg@golang.org>
The reverse buildlets' RoundTrip are hanging, which is its own problem,
but this calling code should be robust and time out anyway.
Change-Id: Id9e3e1d9feb6ffa58cc0995d0623bd90845bb9d6
Reviewed-on: https://go-review.googlesource.com/10847
Reviewed-by: Andrew Gerrand <adg@golang.org>
And deal with Preemptible resource exhaustion errors.
And change all-compile to misc-compile and only do the builders
not covered otherwise (Fixes#11073)
And make the watcher serve git source.
And cache and singleflight fetching of git source.
And a million other things.
Fixesgolang/go#11073
Change-Id: I0f45610f0c6a06bd0c8ba9632b8624e00aeb52fc
Reviewed-on: https://go-review.googlesource.com/10750
Reviewed-by: Andrew Gerrand <adg@golang.org>
Windows will refuse to remove read-only files. Git marks some of
its files as read-only which prevents the directory tree from
being removed. Before attempting to remove the tree walk the
directory and mark any read-only files as read-write.
Change-Id: I7ae3999a98e1761ce47b7a42ac32ab55f68924ac
Reviewed-on: https://go-review.googlesource.com/10830
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Also gomote updates which came about during the process of developing
and debugging this.
Change-Id: Ia53d674118a6b99bcdda7062d3b7161279b6ad52
Reviewed-on: https://go-review.googlesource.com/10463
Reviewed-by: Andrew Gerrand <adg@golang.org>
Adds a new flag, "filter," that accepts a comma-separated list of
file or directory names to pass to git log.
Change-Id: Id89018b0591c7af8f425654c9d9256940b6c37f5
Reviewed-on: https://go-review.googlesource.com/10422
Reviewed-by: Andrew Gerrand <adg@golang.org>