2015-01-15 23:46:22 +03:00
// Copyright 2015 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.
// Package dashboard contains shared configuration and logic used by various
// pieces of the Go continuous build system.
package dashboard
2015-06-05 04:25:50 +03:00
import (
"strconv"
"strings"
)
2015-01-15 23:46:22 +03:00
// Builders are the different build configurations.
// The keys are like "darwin-amd64" or "linux-386-387".
// This map should not be modified by other packages.
var Builders = map [ string ] BuildConfig { }
2015-04-23 17:23:22 +03:00
// A BuildConfig describes how to run a builder.
2015-01-15 23:46:22 +03:00
type BuildConfig struct {
// Name is the unique name of the builder, in the form of
// "darwin-386" or "linux-amd64-race".
Name string
2015-04-29 18:27:26 +03:00
Notes string // notes for humans
Owner string // e.g. "bradfitz@golang.org", empty means golang-dev
2015-01-15 23:46:22 +03:00
VMImage string // e.g. "openbsd-amd64-56"
machineType string // optional GCE instance type
2015-01-21 21:03:07 +03:00
Go14URL string // URL to built Go 1.4 tar.gz
2015-01-28 01:22:21 +03:00
buildletURL string // optional override buildlet URL
2015-01-15 23:46:22 +03:00
2015-04-23 17:23:22 +03:00
IsReverse bool // if true, only use the reverse buildlet pool
2015-03-21 02:14:52 +03:00
RegularDisk bool // if true, use spinning disk instead of SSD
2015-05-14 04:38:20 +03:00
TryOnly bool // only used for trybots, and not regular builds
2015-03-21 02:14:52 +03:00
2015-05-28 07:51:25 +03:00
// NumTestHelpers is the number of _additional_ buildlets
// past the first help out with sharded tests.
NumTestHelpers int
2015-05-14 23:39:58 +03:00
// BuildletType optionally specifies the type of buildlet to
// request from the buildlet pool. If empty, it defaults to
// the value of Name.
//
2015-06-05 04:25:50 +03:00
// These should be used to minimize builder types, so the buildlet pool
// implementations can reuse buildlets from similar-enough builds.
// (e.g. a shared linux-386 trybot can be reused for some linux-amd64
// or linux-amd64-race tests, etc)
//
// TODO(bradfitz): break BuildConfig up into BuildConfig and
// BuildletConfig and have a BuildConfig refer to a
// BuildletConfig. There's no much confusion now.
2015-05-14 23:39:58 +03:00
BuildletType string
2015-06-05 04:25:50 +03:00
env [ ] string // extra environment ("key=value") pairs
allScriptArgs [ ] string
2015-01-15 23:46:22 +03:00
}
2015-01-22 02:15:48 +03:00
func ( c * BuildConfig ) Env ( ) [ ] string { return append ( [ ] string ( nil ) , c . env ... ) }
2015-01-16 03:29:16 +03:00
func ( c * BuildConfig ) GOOS ( ) string { return c . Name [ : strings . Index ( c . Name , "-" ) ] }
func ( c * BuildConfig ) GOARCH ( ) string {
arch := c . Name [ strings . Index ( c . Name , "-" ) + 1 : ]
i := strings . Index ( arch , "-" )
if i == - 1 {
return arch
}
return arch [ : i ]
}
2015-05-28 07:51:25 +03:00
// FilePathJoin is mostly like filepath.Join (without the cleaning) except
// it uses the path separator of c.GOOS instead of the host system's.
func ( c * BuildConfig ) FilePathJoin ( x ... string ) string {
if c . GOOS ( ) == "windows" {
return strings . Join ( x , "\\" )
}
return strings . Join ( x , "/" )
}
// BuildletBucket is the GCS storage bucket which holds the buildlet binaries.
// Tools working in the dev project may change this.
var BuildletBucket = "go-builder-data"
func fixBuildletBucket ( u string ) string {
if BuildletBucket == "go-builder-data" {
// Prod. Default case.
return u
}
// Dev project remapping:
return strings . Replace ( u ,
"//storage.googleapis.com/go-builder-data/" ,
"//storage.googleapis.com/" + BuildletBucket + "/" ,
1 )
}
2015-01-28 01:22:21 +03:00
// BuildletBinaryURL returns the public URL of this builder's buildlet.
func ( c * BuildConfig ) BuildletBinaryURL ( ) string {
if c . buildletURL != "" {
2015-05-28 07:51:25 +03:00
return fixBuildletBucket ( c . buildletURL )
2015-01-28 01:22:21 +03:00
}
2015-05-28 07:51:25 +03:00
return fixBuildletBucket ( "http://storage.googleapis.com/go-builder-data/buildlet." + c . GOOS ( ) + "-" + c . GOARCH ( ) )
2015-01-28 01:22:21 +03:00
}
2015-05-18 06:23:24 +03:00
// SetBuildletBinaryURL sets the public URL of this builder's buildlet.
func ( c * BuildConfig ) SetBuildletBinaryURL ( u string ) {
c . buildletURL = u
}
2015-01-16 20:54:03 +03:00
// AllScript returns the relative path to the operating system's script to
// do the build and run its standard set of tests.
// Example values are "src/all.bash", "src/all.bat", "src/all.rc".
func ( c * BuildConfig ) AllScript ( ) string {
2015-01-22 02:15:48 +03:00
if strings . HasSuffix ( c . Name , "-race" ) {
if strings . HasPrefix ( c . Name , "windows-" ) {
return "src/race.bat"
}
return "src/race.bash"
}
2015-01-16 20:54:03 +03:00
if strings . HasPrefix ( c . Name , "windows-" ) {
return "src/all.bat"
}
if strings . HasPrefix ( c . Name , "plan9-" ) {
return "src/all.rc"
}
2015-02-19 01:12:22 +03:00
if strings . HasPrefix ( c . Name , "nacl-" ) {
return "src/nacltest.bash"
}
2015-04-29 15:54:19 +03:00
if strings . HasPrefix ( c . Name , "darwin-arm" ) {
return "src/iostest.bash"
}
2015-06-05 04:25:50 +03:00
if c . Name == "misc-compile" {
2015-04-30 00:44:46 +03:00
return "src/buildall.bash"
}
2015-01-16 20:54:03 +03:00
return "src/all.bash"
}
2015-05-27 21:51:27 +03:00
// SplitMakeRun reports whether the coordinator should first compile
// (using c.MakeScript), then snapshot, then run the tests (ideally
// sharded) using c.RunScript.
// Eventually this function should always return true (and then be deleted)
// but for now we've only set up the scripts and verified that the main
// configurations work.
func ( c * BuildConfig ) SplitMakeRun ( ) bool {
2015-06-05 04:25:50 +03:00
if strings . HasPrefix ( c . Name , "linux-arm" ) {
// On Scaleway, we don't want to snapshot these to GCS
// yet. That might be a lot of bandwidth and we
// haven't measure their speed yet. We might want to
// store snapshots within Scaleway instead. For now:
// use the old way.
return false
}
if strings . HasPrefix ( c . Name , "darwin-" ) {
// TODO(bradfitz,crawshaw,adg): this is failing for some reason:
// Error: runTests: distTestList: Remote error: fork/exec /var/folders/5h/sqs3zkxd12zclcslj67vccqh0000gp/T/buildlet-scatch190808745/go/bin/go: no such file or directory
return false
}
2015-05-27 21:51:27 +03:00
switch c . AllScript ( ) {
case "src/all.bash" , "src/all.bat" , "src/all.rc" :
// These we've verified to work.
return true
}
// Conservatively:
return false
}
2015-06-05 02:45:17 +03:00
func ( c * BuildConfig ) BuildSubrepos ( ) bool {
if ! c . SplitMakeRun ( ) {
return false
}
// TODO(adg,bradfitz): expand this
return c . Name == "linux-amd64" || c . Name == "windows-amd64-gce"
}
2015-05-21 07:02:38 +03:00
// AllScriptArgs returns the set of arguments that should be passed to the
2015-04-29 15:54:19 +03:00
// all.bash-equivalent script. Usually empty.
func ( c * BuildConfig ) AllScriptArgs ( ) [ ] string {
if strings . HasPrefix ( c . Name , "darwin-arm" ) {
return [ ] string { "-restart" }
}
2015-06-05 04:25:50 +03:00
return append ( [ ] string ( nil ) , c . allScriptArgs ... )
2015-04-29 15:54:19 +03:00
}
2015-02-02 15:05:01 +03:00
// MakeScript returns the relative path to the operating system's script to
// do the build.
// Example values are "src/make.bash", "src/make.bat", "src/make.rc".
func ( c * BuildConfig ) MakeScript ( ) string {
if strings . HasPrefix ( c . Name , "windows-" ) {
return "src/make.bat"
}
if strings . HasPrefix ( c . Name , "plan9-" ) {
return "src/make.rc"
}
return "src/make.bash"
}
2015-05-21 07:02:38 +03:00
// MakeScriptArgs returns the set of arguments that should be passed to the
// make.bash-equivalent script. Usually empty.
func ( c * BuildConfig ) MakeScriptArgs ( ) [ ] string {
return c . AllScriptArgs ( )
}
// RunScript returns the relative path to the operating system's script to
// run the test suite.
// Example values are "src/run.bash", "src/run.bat", "src/run.rc".
func ( c * BuildConfig ) RunScript ( ) string {
if strings . HasPrefix ( c . Name , "windows-" ) {
return "src/run.bat"
}
if strings . HasPrefix ( c . Name , "plan9-" ) {
return "src/run.rc"
}
return "src/run.bash"
}
// RunScriptArgs returns the set of arguments that should be passed to the
// run.bash-equivalent script.
func ( c * BuildConfig ) RunScriptArgs ( ) [ ] string {
return [ ] string { "--no-rebuild" }
}
2015-02-02 15:05:01 +03:00
// GorootFinal returns the default install location for
// releases for this platform.
func ( c * BuildConfig ) GorootFinal ( ) string {
if strings . HasPrefix ( c . Name , "windows-" ) {
return "c:\\go"
}
return "/usr/local/go"
}
2015-01-15 23:46:22 +03:00
// MachineType returns the GCE machine type to use for this builder.
func ( c * BuildConfig ) MachineType ( ) string {
if v := c . machineType ; v != "" {
return v
}
return "n1-highcpu-2"
}
2015-05-01 03:03:01 +03:00
// ShortOwner returns a short human-readable owner.
func ( c BuildConfig ) ShortOwner ( ) string {
if c . Owner == "" {
return "go-dev"
}
return strings . TrimSuffix ( c . Owner , "@golang.org" )
}
2015-06-05 04:25:50 +03:00
// GCENumCPU reports the number of GCE CPUs this buildlet requires.
func ( c * BuildConfig ) GCENumCPU ( ) int {
t := c . MachineType ( )
n , _ := strconv . Atoi ( t [ strings . LastIndex ( t , "-" ) + 1 : ] )
return n
}
2015-01-15 23:46:22 +03:00
func init ( ) {
2015-01-22 08:16:54 +03:00
addBuilder ( BuildConfig {
2015-05-28 07:51:25 +03:00
Name : "freebsd-amd64-gce93" ,
VMImage : "freebsd-amd64-gce93" ,
machineType : "n1-highcpu-2" ,
Go14URL : "https://storage.googleapis.com/go-builder-data/go1.4-freebsd-amd64.tar.gz" ,
NumTestHelpers : 3 ,
2015-01-22 08:16:54 +03:00
} )
2015-01-22 02:15:48 +03:00
addBuilder ( BuildConfig {
2015-05-28 07:51:25 +03:00
Name : "freebsd-amd64-gce101" ,
Notes : "FreeBSD 10.1; GCE VM is built from script in build/env/freebsd-amd64" ,
VMImage : "freebsd-amd64-gce101" ,
machineType : "n1-highcpu-2" ,
Go14URL : "https://storage.googleapis.com/go-builder-data/go1.4-freebsd-amd64.tar.gz" ,
env : [ ] string { "CC=clang" } ,
NumTestHelpers : 3 ,
2015-01-22 02:15:48 +03:00
} )
addBuilder ( BuildConfig {
Name : "freebsd-amd64-race" ,
VMImage : "freebsd-amd64-gce101" ,
machineType : "n1-highcpu-4" ,
Go14URL : "https://storage.googleapis.com/go-builder-data/go1.4-freebsd-amd64.tar.gz" ,
env : [ ] string { "CC=clang" } ,
} )
addBuilder ( BuildConfig {
2015-06-05 04:25:50 +03:00
Name : "freebsd-386-gce101" ,
VMImage : "freebsd-amd64-gce101" ,
//BuildletType: "freebsd-amd64-gce101",
2015-01-22 02:15:48 +03:00
machineType : "n1-highcpu-2" ,
2015-01-28 01:22:21 +03:00
buildletURL : "http://storage.googleapis.com/go-builder-data/buildlet.freebsd-amd64" ,
2015-01-22 02:15:48 +03:00
Go14URL : "https://storage.googleapis.com/go-builder-data/go1.4-freebsd-amd64.tar.gz" ,
2015-01-28 01:22:21 +03:00
// TODO(bradfitz): setting GOHOSTARCH=386 should work
// to eliminate some unnecessary work (it works on
// Linux), but fails on FreeBSD with:
// ##### ../misc/cgo/testso
// Shared object "libcgosotest.so" not found, required by "main"
// Maybe this is a clang thing? We'll see when we do linux clang too.
env : [ ] string { "GOARCH=386" , "CC=clang" } ,
} )
addBuilder ( BuildConfig {
2015-06-05 04:25:50 +03:00
Name : "linux-386" ,
VMImage : "linux-buildlet-std" ,
//BuildletType: "linux-amd64",
2015-05-28 07:51:25 +03:00
buildletURL : "http://storage.googleapis.com/go-builder-data/buildlet.linux-amd64" ,
env : [ ] string { "GOROOT_BOOTSTRAP=/go1.4" , "GOARCH=386" , "GOHOSTARCH=386" } ,
NumTestHelpers : 3 ,
2015-01-28 01:22:21 +03:00
} )
addBuilder ( BuildConfig {
2015-06-05 04:25:50 +03:00
Name : "linux-386-387" ,
Notes : "GO386=387" ,
VMImage : "linux-buildlet-std" ,
//BuildletType: "linux-amd64",
2015-01-28 01:22:21 +03:00
buildletURL : "http://storage.googleapis.com/go-builder-data/buildlet.linux-amd64" ,
env : [ ] string { "GOROOT_BOOTSTRAP=/go1.4" , "GOARCH=386" , "GOHOSTARCH=386" , "GO386=387" } ,
} )
addBuilder ( BuildConfig {
2015-05-28 07:51:25 +03:00
Name : "linux-amd64" ,
VMImage : "linux-buildlet-std" ,
env : [ ] string { "GOROOT_BOOTSTRAP=/go1.4" } ,
NumTestHelpers : 3 ,
2015-01-28 01:22:21 +03:00
} )
2015-04-30 00:44:46 +03:00
addBuilder ( BuildConfig {
2015-06-05 04:25:50 +03:00
Name : "misc-compile" ,
TryOnly : true ,
2015-04-30 00:44:46 +03:00
VMImage : "linux-buildlet-std" ,
2015-04-30 21:13:20 +03:00
machineType : "n1-highcpu-16" , // CPU-bound, uses it well.
2015-06-05 04:25:50 +03:00
Notes : "Runs buildall.sh to compile stdlib for GOOS/GOARCH pairs not otherwise covered by trybots, but doesn't run any tests." ,
2015-04-30 00:44:46 +03:00
buildletURL : "http://storage.googleapis.com/go-builder-data/buildlet.linux-amd64" ,
env : [ ] string { "GOROOT_BOOTSTRAP=/go1.4" } ,
2015-06-05 04:25:50 +03:00
allScriptArgs : [ ] string {
// Filtering pattern to buildall.bash:
// TODO: add darwin-386 and
"^(linux-arm64|linux-ppc64|linux-ppc64le|nacl-arm|plan9-amd64|solaris-amd64|netbsd-386|netbsd-amd64|netbsd-arm|freebsd-arm|darwin-386)$" ,
} ,
2015-04-30 00:44:46 +03:00
} )
2015-01-28 01:22:21 +03:00
addBuilder ( BuildConfig {
Name : "linux-amd64-nocgo" ,
2015-04-29 18:27:26 +03:00
Notes : "cgo disabled" ,
2015-01-28 01:22:21 +03:00
VMImage : "linux-buildlet-std" ,
env : [ ] string {
"GOROOT_BOOTSTRAP=/go1.4" ,
"CGO_ENABLED=0" ,
// This USER=root was required for Docker-based builds but probably isn't required
// in the VM anymore, since the buildlet probably already has this in its environment.
// (It was required because without cgo, it couldn't find the username)
"USER=root" ,
} ,
} )
addBuilder ( BuildConfig {
Name : "linux-amd64-noopt" ,
2015-04-29 18:27:26 +03:00
Notes : "optimizations and inlining disabled" ,
2015-01-28 01:22:21 +03:00
VMImage : "linux-buildlet-std" ,
2015-06-05 04:25:50 +03:00
//BuildletType: "linux-amd64",
env : [ ] string { "GOROOT_BOOTSTRAP=/go1.4" , "GO_GCFLAGS=-N -l" } ,
2015-01-28 01:22:21 +03:00
} )
addBuilder ( BuildConfig {
Name : "linux-amd64-race" ,
VMImage : "linux-buildlet-std" ,
machineType : "n1-highcpu-4" ,
env : [ ] string { "GOROOT_BOOTSTRAP=/go1.4" } ,
2015-05-28 07:51:25 +03:00
// TODO(bradfitz): make race.bash shardable, then: NumTestHelpers: 3
2015-01-22 02:15:48 +03:00
} )
2015-02-13 06:45:02 +03:00
addBuilder ( BuildConfig {
2015-06-05 04:25:50 +03:00
Name : "linux-386-clang" ,
VMImage : "linux-buildlet-clang" ,
//BuildletType: "linux-amd64-clang",
2015-02-13 06:45:02 +03:00
buildletURL : "http://storage.googleapis.com/go-builder-data/buildlet.linux-amd64" ,
2015-02-14 03:32:21 +03:00
env : [ ] string { "GOROOT_BOOTSTRAP=/go1.4" , "CC=/usr/bin/clang" , "GOHOSTARCH=386" } ,
2015-02-13 06:45:02 +03:00
} )
addBuilder ( BuildConfig {
Name : "linux-amd64-clang" ,
2015-04-29 18:27:26 +03:00
Notes : "Debian wheezy + clang 3.5 instead of gcc" ,
2015-02-13 06:45:02 +03:00
VMImage : "linux-buildlet-clang" ,
env : [ ] string { "GOROOT_BOOTSTRAP=/go1.4" , "CC=/usr/bin/clang" } ,
} )
2015-02-14 06:01:32 +03:00
addBuilder ( BuildConfig {
Name : "linux-386-sid" ,
VMImage : "linux-buildlet-sid" ,
buildletURL : "http://storage.googleapis.com/go-builder-data/buildlet.linux-amd64" ,
env : [ ] string { "GOROOT_BOOTSTRAP=/go1.4" , "GOHOSTARCH=386" } ,
} )
addBuilder ( BuildConfig {
Name : "linux-amd64-sid" ,
2015-04-29 18:27:26 +03:00
Notes : "Debian sid (unstable)" ,
2015-02-14 06:01:32 +03:00
VMImage : "linux-buildlet-sid" ,
env : [ ] string { "GOROOT_BOOTSTRAP=/go1.4" } ,
} )
2015-03-01 20:23:57 +03:00
addBuilder ( BuildConfig {
Name : "linux-arm-qemu" ,
VMImage : "linux-buildlet-arm" ,
env : [ ] string { "GOROOT_BOOTSTRAP=/go1.4" , "IN_QEMU=1" } ,
} )
2015-05-07 21:36:25 +03:00
addBuilder ( BuildConfig {
Name : "linux-arm" ,
IsReverse : true ,
env : [ ] string { "GOROOT_BOOTSTRAP=/usr/local/go" } ,
} )
2015-05-14 23:39:58 +03:00
// Sharded ARM trybots:
addBuilder ( BuildConfig {
Name : "linux-arm-shard_test" ,
BuildletType : "linux-arm" ,
TryOnly : true ,
IsReverse : true ,
env : [ ] string {
"GOROOT_BOOTSTRAP=/usr/local/go" ,
"GOTESTONLY=^test$" ,
} ,
} )
addBuilder ( BuildConfig {
Name : "linux-arm-shard_std_am" ,
BuildletType : "linux-arm" ,
TryOnly : true ,
IsReverse : true ,
env : [ ] string {
"GOROOT_BOOTSTRAP=/usr/local/go" ,
2015-05-16 01:56:21 +03:00
"GOTESTONLY=^go_test:[a-m]" ,
2015-05-14 23:39:58 +03:00
} ,
} )
addBuilder ( BuildConfig {
Name : "linux-arm-shard_std_nz" ,
BuildletType : "linux-arm" ,
TryOnly : true ,
IsReverse : true ,
env : [ ] string {
"GOROOT_BOOTSTRAP=/usr/local/go" ,
2015-05-16 01:56:21 +03:00
"GOTESTONLY=^go_test:[n-z]" ,
2015-05-14 23:39:58 +03:00
} ,
} )
addBuilder ( BuildConfig {
Name : "linux-arm-shard_runtimecpu" ,
BuildletType : "linux-arm" ,
TryOnly : true ,
IsReverse : true ,
env : [ ] string {
"GOROOT_BOOTSTRAP=/usr/local/go" ,
"GOTESTONLY=^runtime:cpu124$" ,
} ,
} )
addBuilder ( BuildConfig {
Name : "linux-arm-shard_cgotest" ,
BuildletType : "linux-arm" ,
TryOnly : true ,
IsReverse : true ,
env : [ ] string {
"GOROOT_BOOTSTRAP=/usr/local/go" ,
"GOTESTONLY=^cgo_test$" ,
} ,
} )
addBuilder ( BuildConfig {
Name : "linux-arm-shard_misc" ,
BuildletType : "linux-arm" ,
TryOnly : true ,
IsReverse : true ,
env : [ ] string {
"GOROOT_BOOTSTRAP=/usr/local/go" ,
2015-05-16 01:56:21 +03:00
"GOTESTONLY=!^(go_test:|test$|cgo_test$|runtime:cpu124$)" ,
2015-05-14 23:39:58 +03:00
} ,
} )
2015-05-07 21:36:25 +03:00
addBuilder ( BuildConfig {
Name : "linux-arm-arm5" ,
IsReverse : true ,
2015-05-11 18:47:37 +03:00
env : [ ] string {
"GOROOT_BOOTSTRAP=/usr/local/go" ,
2015-05-14 01:16:31 +03:00
"GOARM=5" ,
2015-05-11 18:47:37 +03:00
"GO_TEST_TIMEOUT_SCALE=5" , // slow.
} ,
2015-05-07 21:36:25 +03:00
} )
2015-02-19 01:12:22 +03:00
addBuilder ( BuildConfig {
Name : "nacl-386" ,
2015-03-25 04:50:33 +03:00
VMImage : "linux-buildlet-nacl-v2" ,
2015-02-19 01:12:22 +03:00
buildletURL : "http://storage.googleapis.com/go-builder-data/buildlet.linux-amd64" ,
env : [ ] string { "GOROOT_BOOTSTRAP=/go1.4" , "GOOS=nacl" , "GOARCH=386" , "GOHOSTOS=linux" , "GOHOSTARCH=amd64" } ,
2015-06-05 04:25:50 +03:00
//BuildletType: "nacl-amd64p32",
2015-02-19 01:12:22 +03:00
} )
addBuilder ( BuildConfig {
Name : "nacl-amd64p32" ,
2015-03-25 04:50:33 +03:00
VMImage : "linux-buildlet-nacl-v2" ,
2015-02-19 01:12:22 +03:00
buildletURL : "http://storage.googleapis.com/go-builder-data/buildlet.linux-amd64" ,
env : [ ] string { "GOROOT_BOOTSTRAP=/go1.4" , "GOOS=nacl" , "GOARCH=amd64p32" , "GOHOSTOS=linux" , "GOHOSTARCH=amd64" } ,
} )
2015-01-15 23:46:22 +03:00
addBuilder ( BuildConfig {
2015-05-28 07:51:25 +03:00
Name : "openbsd-amd64-gce56" ,
Notes : "OpenBSD 5.6; GCE VM is built from script in build/env/openbsd-amd64" ,
VMImage : "openbsd-amd64-56" ,
machineType : "n1-highcpu-2" ,
Go14URL : "https://storage.googleapis.com/go-builder-data/go1.4-openbsd-amd64.tar.gz" ,
NumTestHelpers : 3 ,
2015-01-15 23:46:22 +03:00
} )
2015-01-23 01:11:10 +03:00
addBuilder ( BuildConfig {
2015-05-28 07:51:25 +03:00
Name : "openbsd-386-gce56" ,
Notes : "OpenBSD 5.6; GCE VM is built from script in build/env/openbsd-386" ,
VMImage : "openbsd-386-56" ,
machineType : "n1-highcpu-2" ,
Go14URL : "https://storage.googleapis.com/go-builder-data/go1.4-openbsd-386.tar.gz" ,
NumTestHelpers : 3 ,
2015-01-23 01:11:10 +03:00
} )
2015-01-15 23:46:22 +03:00
addBuilder ( BuildConfig {
2015-05-28 07:51:25 +03:00
Name : "plan9-386" ,
Notes : "Plan 9 from 0intro; GCE VM is built from script in build/env/plan9-386" ,
2015-03-01 20:23:57 +03:00
VMImage : "plan9-386-v2" ,
2015-01-22 02:15:48 +03:00
Go14URL : "https://storage.googleapis.com/go-builder-data/go1.4-plan9-386.tar.gz" ,
2015-01-15 23:46:22 +03:00
// We *were* using n1-standard-1 because Plan 9 can only
// reliably use a single CPU. Using 2 or 4 and we see
// test failures. See:
// https://golang.org/issue/8393
// https://golang.org/issue/9491
2015-03-01 20:23:57 +03:00
// n1-standard-1 has 3.6 GB of memory which WAS (see below)
2015-01-15 23:46:22 +03:00
// overkill (userspace probably only sees 2GB anyway),
// but it's the cheapest option. And plenty to keep
// our ~250 MB of inputs+outputs in its ramfs.
//
// But the docs says "For the n1 series of machine
// types, a virtual CPU is implemented as a single
// hyperthread on a 2.6GHz Intel Sandy Bridge Xeon or
// Intel Ivy Bridge Xeon (or newer) processor. This
// means that the n1-standard-2 machine type will see
// a whole physical core."
//
2015-03-01 20:23:57 +03:00
// ... so we used n1-highcpu-2 (1.80 RAM, still
2015-01-15 23:46:22 +03:00
// plenty), just so we can get 1 whole core for the
// single-core Plan 9. It will see 2 virtual cores and
// only use 1, but we hope that 1 will be more powerful
// and we'll stop timing out on tests.
2015-05-28 07:51:25 +03:00
machineType : "n1-highcpu-2" ,
NumTestHelpers : 5 , // slow
2015-01-15 23:46:22 +03:00
} )
2015-02-07 04:32:15 +03:00
addBuilder ( BuildConfig {
2015-05-28 07:51:25 +03:00
Name : "windows-amd64-gce" ,
VMImage : "windows-buildlet-v2" ,
machineType : "n1-highcpu-2" ,
Go14URL : "https://storage.googleapis.com/go-builder-data/go1.4-windows-amd64.tar.gz" ,
RegularDisk : true ,
env : [ ] string { "GOARCH=amd64" , "GOHOSTARCH=amd64" } ,
NumTestHelpers : 3 ,
2015-02-07 04:32:15 +03:00
} )
addBuilder ( BuildConfig {
Name : "windows-amd64-race" ,
2015-04-29 18:27:26 +03:00
Notes : "Only runs -race tests (./race.bat)" ,
2015-03-22 20:50:04 +03:00
VMImage : "windows-buildlet-v2" ,
2015-02-07 04:32:15 +03:00
machineType : "n1-highcpu-4" ,
Go14URL : "https://storage.googleapis.com/go-builder-data/go1.4-windows-amd64.tar.gz" ,
2015-03-21 02:14:52 +03:00
RegularDisk : true ,
2015-02-07 04:32:15 +03:00
env : [ ] string { "GOARCH=amd64" , "GOHOSTARCH=amd64" } ,
} )
addBuilder ( BuildConfig {
2015-06-05 04:25:50 +03:00
Name : "windows-386-gce" ,
VMImage : "windows-buildlet-v2" ,
machineType : "n1-highcpu-2" ,
// TODO(bradfitz): once buildlet type vs. config type is split: BuildletType: "windows-amd64-gce",
2015-05-28 07:51:25 +03:00
buildletURL : "http://storage.googleapis.com/go-builder-data/buildlet.windows-amd64" ,
Go14URL : "https://storage.googleapis.com/go-builder-data/go1.4-windows-386.tar.gz" ,
RegularDisk : true ,
env : [ ] string { "GOARCH=386" , "GOHOSTARCH=386" } ,
NumTestHelpers : 3 ,
2015-02-07 04:32:15 +03:00
} )
2015-04-23 17:23:22 +03:00
addBuilder ( BuildConfig {
2015-05-28 07:51:25 +03:00
Name : "darwin-amd64-10_10" ,
Notes : "Mac Mini running OS X 10.10 (Yosemite)" ,
Go14URL : "https://storage.googleapis.com/go-builder-data/go1.4-darwin-amd64.tar.gz" ,
IsReverse : true ,
NumTestHelpers : 1 , // limited resources
2015-04-23 17:23:22 +03:00
} )
2015-04-29 15:54:19 +03:00
addBuilder ( BuildConfig {
2015-04-29 18:27:26 +03:00
Name : "darwin-arm-a5ios" ,
Notes : "iPhone 4S (A5 processor), via a Mac Mini" ,
Owner : "crawshaw@golang.org" ,
2015-04-29 15:54:19 +03:00
Go14URL : "https://storage.googleapis.com/go-builder-data/go1.4-darwin-amd64.tar.gz" ,
IsReverse : true ,
env : [ ] string { "GOARCH=arm" , "GOHOSTARCH=amd64" } ,
} )
addBuilder ( BuildConfig {
2015-04-29 18:27:26 +03:00
Name : "darwin-arm64-a7ios" ,
Notes : "iPad Mini 3 (A7 processor), via a Mac Mini" ,
Owner : "crawshaw@golang.org" ,
2015-04-29 15:54:19 +03:00
Go14URL : "https://storage.googleapis.com/go-builder-data/go1.4-darwin-amd64.tar.gz" ,
IsReverse : true ,
env : [ ] string { "GOARCH=arm64" , "GOHOSTARCH=amd64" } ,
} )
2015-01-15 23:46:22 +03:00
}
func addBuilder ( c BuildConfig ) {
if c . Name == "" {
panic ( "empty name" )
}
if _ , dup := Builders [ c . Name ] ; dup {
panic ( "dup name" )
}
2015-04-23 17:23:22 +03:00
if c . VMImage == "" && ! c . IsReverse {
2015-02-20 03:14:20 +03:00
panic ( "empty VMImage" )
2015-01-15 23:46:22 +03:00
}
Builders [ c . Name ] = c
}