README

Go Reference

golang.org/x/build/dashboard

Package dashboard contains shared configuration and logic used by various pieces of the Go continuous build system.

Deploying

When adding or removing builders, or changing a builder's build policy (which repos/branches get tested), you need to deploy the x/build/cmd/coordinator binary. Additionally, you usually want to re-deploy the x/build/app/appengine code to update https://build.golang.org/. The latter is only for humans (forcing columns to show up and adding the little black dots on cells that aren't built), but doesn't affect what gets built.

Expand ▾ Collapse ▴

Documentation

Overview

    Package dashboard contains shared configuration and logic used by various pieces of the Go continuous build system.

    Index

    Constants

    This section is empty.

    Variables

    View Source
    var Builders = map[string]*BuildConfig{}

      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. Initialization happens below, via calls to addBuilder.

      View Source
      var Hosts = map[string]*HostConfig{
      	"host-linux-buster": &HostConfig{
      		Notes:           "Debian Buster",
      		ContainerImage:  "linux-x86-buster:latest",
      		buildletURLTmpl: "https://storage.googleapis.com/$BUCKET/buildlet.linux-amd64",
      		env:             []string{"GOROOT_BOOTSTRAP=/go1.4"},
      		SSHUsername:     "root",
      	},
      	"host-linux-jessie": &HostConfig{
      		Notes:           "Debian Jessie, our standard Linux container image.",
      		ContainerImage:  "linux-x86-jessie:latest",
      		buildletURLTmpl: "http://storage.googleapis.com/$BUCKET/buildlet.linux-amd64",
      		env:             []string{"GOROOT_BOOTSTRAP=/go1.4"},
      		SSHUsername:     "root",
      	},
      	"host-linux-stretch": &HostConfig{
      		Notes:           "Debian Stretch",
      		ContainerImage:  "linux-x86-stretch:latest",
      		machineType:     "n1-standard-4",
      		buildletURLTmpl: "http://storage.googleapis.com/$BUCKET/buildlet.linux-amd64",
      		env:             []string{"GOROOT_BOOTSTRAP=/go1.4"},
      		SSHUsername:     "root",
      	},
      	"host-linux-stretch-morecpu": &HostConfig{
      		Notes:           "Debian Stretch, but on n1-highcpu-16",
      		ContainerImage:  "linux-x86-stretch:latest",
      		machineType:     "n1-highcpu-16",
      		buildletURLTmpl: "http://storage.googleapis.com/$BUCKET/buildlet.linux-amd64",
      		env:             []string{"GOROOT_BOOTSTRAP=/go1.4"},
      		SSHUsername:     "root",
      	},
      	"host-linux-stretch-vmx": &HostConfig{
      		Notes:           "Debian Stretch w/ Nested Virtualization (VMX CPU bit) enabled, for testing",
      		ContainerImage:  "linux-x86-stretch:latest",
      		NestedVirt:      true,
      		buildletURLTmpl: "http://storage.googleapis.com/$BUCKET/buildlet.linux-amd64",
      		env:             []string{"GOROOT_BOOTSTRAP=/go1.4"},
      		SSHUsername:     "root",
      	},
      	"host-linux-armhf-cross": &HostConfig{
      		Notes:           "Debian with armhf cross-compiler, built from env/crosscompile/linux-armhf",
      		ContainerImage:  "linux-armhf-cross:latest",
      		buildletURLTmpl: "http://storage.googleapis.com/$BUCKET/buildlet.linux-amd64",
      		env:             []string{"GOROOT_BOOTSTRAP=/go1.4"},
      	},
      	"host-linux-armel-cross": &HostConfig{
      		Notes:           "Debian with armel cross-compiler, from env/crosscompile/linux-armel",
      		ContainerImage:  "linux-armel-cross:latest",
      		buildletURLTmpl: "http://storage.googleapis.com/$BUCKET/buildlet.linux-amd64",
      		env:             []string{"GOROOT_BOOTSTRAP=/go1.4"},
      	},
      	"host-linux-amd64-localdev": &HostConfig{
      		IsReverse:   true,
      		ExpectNum:   0,
      		Notes:       "for localhost development of buildlets/gomote/coordinator only",
      		SSHUsername: os.Getenv("USER"),
      	},
      	"host-js-wasm": &HostConfig{
      		Notes:           "Container with node.js for testing js/wasm.",
      		ContainerImage:  "js-wasm:latest",
      		buildletURLTmpl: "http://storage.googleapis.com/$BUCKET/buildlet.linux-amd64",
      		env:             []string{"GOROOT_BOOTSTRAP=/go1.4"},
      		SSHUsername:     "root",
      	},
      	"host-s390x-cross": &HostConfig{
      		Notes:           "Container with s390x cross-compiler.",
      		ContainerImage:  "linux-s390x-cross:latest",
      		buildletURLTmpl: "https://storage.googleapis.com/$BUCKET/buildlet.linux-amd64",
      		env:             []string{"GOROOT_BOOTSTRAP=/go1.4"},
      	},
      	"host-linux-x86-alpine": &HostConfig{
      		Notes:           "Alpine container",
      		ContainerImage:  "linux-x86-alpine:latest",
      		buildletURLTmpl: "https://storage.googleapis.com/$BUCKET/buildlet.linux-amd64-static",
      		env:             []string{"GOROOT_BOOTSTRAP=/usr/lib/go"},
      		SSHUsername:     "root",
      	},
      	"host-linux-clang": &HostConfig{
      		Notes:           "Container with clang.",
      		ContainerImage:  "linux-x86-clang:latest",
      		buildletURLTmpl: "http://storage.googleapis.com/$BUCKET/buildlet.linux-amd64",
      		env:             []string{"GOROOT_BOOTSTRAP=/go1.4"},
      		SSHUsername:     "root",
      	},
      	"host-linux-sid": &HostConfig{
      		Notes:           "Debian sid, updated occasionally.",
      		ContainerImage:  "linux-x86-sid:latest",
      		buildletURLTmpl: "http://storage.googleapis.com/$BUCKET/buildlet.linux-amd64",
      		env:             []string{"GOROOT_BOOTSTRAP=/go1.4"},
      		SSHUsername:     "root",
      	},
      	"host-linux-fedora": &HostConfig{
      		Notes:           "Fedora 30",
      		ContainerImage:  "linux-x86-fedora:latest",
      		buildletURLTmpl: "http://storage.googleapis.com/$BUCKET/buildlet.linux-amd64",
      		env:             []string{"GOROOT_BOOTSTRAP=/goboot"},
      		SSHUsername:     "root",
      	},
      	"host-linux-arm-scaleway": &HostConfig{
      		IsReverse:       true,
      		HermeticReverse: true,
      		ExpectNum:       50,
      		env:             []string{"GOROOT_BOOTSTRAP=/usr/local/go"},
      		SSHUsername:     "root",
      	},
      	"host-linux-arm5spacemonkey": &HostConfig{
      		IsReverse:   true,
      		ExpectNum:   3,
      		env:         []string{"GOROOT_BOOTSTRAP=/usr/local/go"},
      		OwnerGithub: "esnolte",
      	},
      	"host-linux-riscv64-joelsing": &HostConfig{
      		Notes:       "SiFive HiFive Unleashed RISC-V board. 8 GB RAM, 4 cores.",
      		IsReverse:   true,
      		ExpectNum:   1,
      		OwnerGithub: "4a6f656c",
      		env:         []string{"GOROOT_BOOTSTRAP=/usr/local/goboot"},
      	},
      	"host-linux-riscv64-unleashed": &HostConfig{
      		Notes:       "SiFive HiFive Unleashed RISC-V board. 8 GB RAM, 4 cores.",
      		IsReverse:   true,
      		ExpectNum:   1,
      		OwnerGithub: "bradfitz",
      		env:         []string{"GOROOT_BOOTSTRAP=/usr/local/goboot"},
      	},
      	"host-openbsd-amd64-62": &HostConfig{
      		VMImage:            "openbsd-amd64-62",
      		machineType:        "n1-highcpu-4",
      		buildletURLTmpl:    "https://storage.googleapis.com/$BUCKET/buildlet.openbsd-amd64",
      		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/gobootstrap-openbsd-amd64-go1_12.tar.gz",
      		Notes:              "OpenBSD 6.2; GCE VM is built from script in build/env/openbsd-amd64",
      		SSHUsername:        "gopher",
      	},
      	"host-openbsd-386-62": &HostConfig{
      		VMImage:            "openbsd-386-62-a",
      		machineType:        "n1-highcpu-4",
      		buildletURLTmpl:    "https://storage.googleapis.com/$BUCKET/buildlet.openbsd-386",
      		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/gobootstrap-openbsd-386-go1_12.tar.gz",
      		Notes:              "OpenBSD 6.2; GCE VM is built from script in build/env/openbsd-386",
      		SSHUsername:        "gopher",
      	},
      	"host-openbsd-amd64-64": &HostConfig{
      		VMImage:            "openbsd-amd64-64-190129a",
      		MinCPUPlatform:     "Intel Skylake",
      		machineType:        "n1-highcpu-4",
      		buildletURLTmpl:    "https://storage.googleapis.com/$BUCKET/buildlet.openbsd-amd64",
      		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/gobootstrap-openbsd-amd64-go1_12.tar.gz",
      		Notes:              "OpenBSD 6.4 with hw.smt=1; GCE VM is built from script in build/env/openbsd-amd64",
      		SSHUsername:        "gopher",
      	},
      	"host-openbsd-386-64": &HostConfig{
      		VMImage:            "openbsd-386-64",
      		machineType:        "n1-highcpu-4",
      		buildletURLTmpl:    "https://storage.googleapis.com/$BUCKET/buildlet.openbsd-386",
      		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/gobootstrap-openbsd-386-go1_12.tar.gz",
      		Notes:              "OpenBSD 6.4; GCE VM is built from script in build/env/openbsd-386",
      		SSHUsername:        "gopher",
      	},
      	"host-openbsd-amd64-68": &HostConfig{
      		VMImage:            "openbsd-amd64-68-v3",
      		machineType:        "n1-highcpu-4",
      		buildletURLTmpl:    "https://storage.googleapis.com/$BUCKET/buildlet.openbsd-amd64",
      		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/gobootstrap-openbsd-amd64-go1_12.tar.gz",
      		Notes:              "OpenBSD 6.8 (with 009_exit syspatch); GCE VM is built from script in build/env/openbsd-amd64",
      		SSHUsername:        "gopher",
      	},
      	"host-openbsd-386-68": &HostConfig{
      		VMImage:            "openbsd-386-68-v3",
      		machineType:        "n1-highcpu-4",
      		buildletURLTmpl:    "https://storage.googleapis.com/$BUCKET/buildlet.openbsd-386",
      		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/gobootstrap-openbsd-386-go1_12.tar.gz",
      		Notes:              "OpenBSD 6.8 (with 009_exit syspatch); GCE VM is built from script in build/env/openbsd-386",
      		SSHUsername:        "gopher",
      	},
      	"host-openbsd-arm-joelsing": &HostConfig{
      		IsReverse:   true,
      		ExpectNum:   1,
      		env:         []string{"GOROOT_BOOTSTRAP=/usr/local/go"},
      		OwnerGithub: "4a6f656c",
      	},
      	"host-openbsd-arm64-joelsing": &HostConfig{
      		IsReverse:   true,
      		ExpectNum:   1,
      		env:         []string{"GOROOT_BOOTSTRAP=/usr/local/go"},
      		OwnerGithub: "4a6f656c",
      	},
      	"host-openbsd-mips64-joelsing": &HostConfig{
      		IsReverse:   true,
      		ExpectNum:   1,
      		env:         []string{"GOROOT_BOOTSTRAP=/usr/local/go"},
      		OwnerGithub: "4a6f656c",
      	},
      	"host-freebsd-11_2": &HostConfig{
      		VMImage:            "freebsd-amd64-112",
      		Notes:              "FreeBSD 11.2; GCE VM is built from script in build/env/freebsd-amd64",
      		machineType:        "n1-highcpu-4",
      		buildletURLTmpl:    "https://storage.googleapis.com/$BUCKET/buildlet.freebsd-amd64",
      		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/go1.4-freebsd-amd64.tar.gz",
      		SSHUsername:        "gopher",
      	},
      	"host-freebsd-12_0": &HostConfig{
      		VMImage:            "freebsd-amd64-120-v1",
      		Notes:              "FreeBSD 12.0; GCE VM is built from script in build/env/freebsd-amd64",
      		machineType:        "n1-highcpu-4",
      		buildletURLTmpl:    "https://storage.googleapis.com/$BUCKET/buildlet.freebsd-amd64",
      		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/go1.4-freebsd-amd64.tar.gz",
      		SSHUsername:        "gopher",
      	},
      	"host-freebsd-12_0-big": &HostConfig{
      		VMImage:            "freebsd-amd64-120-v1",
      		Notes:              "Same as host-freebsd-12_0, but on n1-highcpu-16",
      		machineType:        "n1-highcpu-16",
      		buildletURLTmpl:    "https://storage.googleapis.com/$BUCKET/buildlet.freebsd-amd64",
      		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/go1.4-freebsd-amd64.tar.gz",
      		SSHUsername:        "gopher",
      	},
      	"host-netbsd-amd64-9_0": &HostConfig{
      		VMImage:            "netbsd-amd64-9-0-2019q4",
      		Notes:              "NetBSD 9.0; GCE VM is built from script in build/env/netbsd-amd64",
      		machineType:        "n1-highcpu-4",
      		buildletURLTmpl:    "https://storage.googleapis.com/$BUCKET/buildlet.netbsd-amd64",
      		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/gobootstrap-netbsd-amd64-2da6b33.tar.gz",
      		SSHUsername:        "root",
      	},
      	"host-netbsd-386-9_0": &HostConfig{
      		VMImage:            "netbsd-i386-9-0-2019q4",
      		Notes:              "NetBSD 9.0; GCE VM is built from script in build/env/netbsd-386",
      		machineType:        "n1-highcpu-4",
      		buildletURLTmpl:    "https://storage.googleapis.com/$BUCKET/buildlet.netbsd-386",
      		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/gobootstrap-netbsd-386-0b3b511.tar.gz",
      		SSHUsername:        "root",
      	},
      	"host-netbsd-arm-bsiegert": &HostConfig{
      		IsReverse:   true,
      		ExpectNum:   1,
      		env:         []string{"GOROOT_BOOTSTRAP=/usr/pkg/go112"},
      		OwnerGithub: "bsiegert",
      	},
      	"host-netbsd-arm64-bsiegert": &HostConfig{
      		IsReverse:   true,
      		ExpectNum:   1,
      		env:         []string{"GOROOT_BOOTSTRAP=/usr/pkg/go114"},
      		OwnerGithub: "bsiegert",
      	},
      	"host-dragonfly-amd64-5_8": &HostConfig{
      		IsReverse:   true,
      		ExpectNum:   1,
      		Notes:       "DragonFly BSD release version, run by DragonFly team",
      		env:         []string{"GOROOT_BOOTSTRAP=/usr/local/go"},
      		SSHUsername: "root",
      		OwnerGithub: "tuxillo",
      	},
      	"host-dragonfly-amd64-master": &HostConfig{
      		IsReverse:   true,
      		ExpectNum:   1,
      		Notes:       "DragonFly BSD master, run by DragonFly team",
      		env:         []string{"GOROOT_BOOTSTRAP=/usr/local/go"},
      		SSHUsername: "root",
      		OwnerGithub: "tuxillo",
      	},
      	"host-freebsd-arm-paulzhol": &HostConfig{
      		IsReverse:   true,
      		ExpectNum:   1,
      		Notes:       "Cubiboard2 1Gb RAM dual-core Cortex-A7 (Allwinner A20), FreeBSD 11.1-RELEASE",
      		env:         []string{"GOROOT_BOOTSTRAP=/usr/home/paulzhol/go1.4"},
      		OwnerGithub: "paulzhol",
      	},
      	"host-freebsd-arm64-dmgk": &HostConfig{
      		IsReverse:   true,
      		ExpectNum:   1,
      		Notes:       "AWS EC2 a1.large 2 vCPU 4GiB RAM, FreeBSD 12.1-STABLE",
      		env:         []string{"GOROOT_BOOTSTRAP=/usr/home/builder/gobootstrap"},
      		OwnerGithub: "dmgk",
      	},
      	"host-plan9-arm-0intro": &HostConfig{
      		IsReverse:   true,
      		ExpectNum:   1,
      		Notes:       "Raspberry Pi 3 Model B, Plan 9 from Bell Labs",
      		OwnerGithub: "0intro",
      	},
      	"host-plan9-amd64-0intro": &HostConfig{
      		IsReverse:   true,
      		ExpectNum:   1,
      		Notes:       "QEMU VM, Plan 9 from Bell Labs, 9k kernel",
      		OwnerGithub: "0intro",
      	},
      	"host-plan9-386-0intro": &HostConfig{
      		IsReverse:   true,
      		ExpectNum:   1,
      		Notes:       "QEMU VM, Plan 9 from Bell Labs",
      		OwnerGithub: "0intro",
      	},
      	"host-plan9-386-gce": &HostConfig{
      		VMImage:            "plan9-386-v7",
      		Notes:              "Plan 9 from 0intro; GCE VM is built from script in build/env/plan9-386",
      		buildletURLTmpl:    "http://storage.googleapis.com/$BUCKET/buildlet.plan9-386",
      		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/gobootstrap-plan9-386.tar.gz",
      
      		machineType: "n1-highcpu-4",
      		env:         []string{"GO_TEST_TIMEOUT_SCALE=3"},
      	},
      	"host-windows-amd64-2008": &HostConfig{
      		VMImage:            "windows-amd64-server-2008r2-v7",
      		machineType:        "n1-highcpu-4",
      		buildletURLTmpl:    "http://storage.googleapis.com/$BUCKET/buildlet.windows-amd64",
      		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/go1.4-windows-amd64.tar.gz",
      		SSHUsername:        "gopher",
      	},
      	"host-windows-amd64-2012": &HostConfig{
      		VMImage:            "windows-amd64-server-2012r2-v7",
      		machineType:        "n1-highcpu-4",
      		buildletURLTmpl:    "http://storage.googleapis.com/$BUCKET/buildlet.windows-amd64",
      		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/go1.4-windows-amd64.tar.gz",
      		SSHUsername:        "gopher",
      	},
      	"host-windows-amd64-2016": &HostConfig{
      		VMImage:            "windows-amd64-server-2016-v7",
      		machineType:        "n1-highcpu-4",
      		buildletURLTmpl:    "http://storage.googleapis.com/$BUCKET/buildlet.windows-amd64",
      		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/go1.4-windows-amd64.tar.gz",
      		SSHUsername:        "gopher",
      	},
      	"host-windows-amd64-2016-big": &HostConfig{
      		Notes:              "Same as host-windows-amd64-2016, but on n1-highcpu-16",
      		VMImage:            "windows-amd64-server-2016-v7",
      		machineType:        "n1-highcpu-16",
      		buildletURLTmpl:    "http://storage.googleapis.com/$BUCKET/buildlet.windows-amd64",
      		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/go1.4-windows-amd64.tar.gz",
      		SSHUsername:        "gopher",
      	},
      	"host-windows-arm64-zx2c4": &HostConfig{
      		IsReverse:   true,
      		ExpectNum:   1,
      		OwnerGithub: "zx2c4",
      		env:         []string{"GOROOT_BOOTSTRAP=C:\\Program Files (Arm)\\Go"},
      	},
      	"host-darwin-10_12": &HostConfig{
      		IsReverse: true,
      		ExpectNum: 3,
      		Notes:     "MacStadium OS X 10.12 VM under VMWare ESXi",
      		env: []string{
      			"GOROOT_BOOTSTRAP=/Users/gopher/go1.4",
      		},
      		SSHUsername:     "gopher",
      		HermeticReverse: true,
      	},
      	"host-darwin-10_14": &HostConfig{
      		IsReverse: true,
      		ExpectNum: 3,
      		Notes:     "MacStadium macOS Mojave (10.14) VM under VMWare ESXi",
      		env: []string{
      			"GOROOT_BOOTSTRAP=/Users/gopher/goboot",
      		},
      		SSHUsername:     "gopher",
      		HermeticReverse: true,
      	},
      	"host-darwin-10_15": &HostConfig{
      		IsReverse: true,
      		ExpectNum: 5,
      		Notes:     "MacStadium macOS Catalina (10.15) VM under VMWare ESXi",
      		env: []string{
      			"GOROOT_BOOTSTRAP=/Users/gopher/goboot",
      		},
      		SSHUsername:     "gopher",
      		HermeticReverse: true,
      	},
      	"host-darwin-amd64-11_0": &HostConfig{
      		IsReverse: true,
      		ExpectNum: 5,
      		Notes:     "MacStadium macOS Big Sur (11.0) VM under VMWare ESXi",
      		env: []string{
      			"GOROOT_BOOTSTRAP=/Users/gopher/goboot",
      		},
      		SSHUsername:     "gopher",
      		HermeticReverse: true,
      	},
      	"host-darwin-arm64-11_0-toothrot": &HostConfig{
      		IsReverse: true,
      		ExpectNum: 2,
      		Notes:     "macOS Big Sur (11.0) ARM64 (M1). Mac mini",
      		env: []string{
      			"GOROOT_BOOTSTRAP=/Users/gopher/goboot",
      		},
      		SSHUsername: "gopher",
      	},
      	"host-linux-s390x": &HostConfig{
      		Notes:       "run by IBM",
      		OwnerGithub: "ruixin-bao",
      		IsReverse:   true,
      		env:         []string{"GOROOT_BOOTSTRAP=/var/buildlet/go-linux-s390x-bootstrap"},
      	},
      	"host-linux-ppc64-osu": &HostConfig{
      		Notes:           "Debian jessie; run by Go team on osuosl.org",
      		IsReverse:       true,
      		ExpectNum:       5,
      		env:             []string{"GOROOT_BOOTSTRAP=/usr/local/go-bootstrap"},
      		SSHUsername:     "root",
      		HermeticReverse: false,
      	},
      	"host-linux-ppc64le-osu": &HostConfig{
      		Notes:           "Debian Buster; run by Go team on osuosl.org; see x/build/env/linux-ppc64le/osuosl",
      		IsReverse:       true,
      		ExpectNum:       5,
      		env:             []string{"GOROOT_BOOTSTRAP=/usr/local/go-bootstrap"},
      		SSHUsername:     "root",
      		HermeticReverse: true,
      	},
      	"host-linux-ppc64le-power9-osu": &HostConfig{
      		Notes:           "Debian Buster; run by Go team on osuosl.org; see x/build/env/linux-ppc64le/osuosl",
      		IsReverse:       true,
      		env:             []string{"GOROOT_BOOTSTRAP=/usr/local/go-bootstrap", "GOPPC64=power9"},
      		SSHUsername:     "root",
      		HermeticReverse: true,
      	},
      	"host-linux-arm64-packet": &HostConfig{
      		Notes:           "On 96 core packet.net host (Xenial) in Docker containers (Debian Buster); run by Go team. See x/build/env/linux-arm64/packet",
      		IsReverse:       true,
      		HermeticReverse: true,
      		ExpectNum:       8,
      		env:             []string{"GOROOT_BOOTSTRAP=/usr/local/go-bootstrap"},
      		SSHUsername:     "root",
      	},
      	"host-linux-arm64-aws": &HostConfig{
      		Notes:           "Debian Buster, EC2 arm64 instance. See x/build/env/linux-arm64/aws",
      		VMImage:         "ami-03089323a1d38e652",
      		ContainerImage:  "gobuilder-arm64-aws:latest",
      		machineType:     "m6g.xlarge",
      		isEC2:           true,
      		env:             []string{"GOROOT_BOOTSTRAP=/usr/local/go-bootstrap"},
      		buildletURLTmpl: "http://storage.googleapis.com/$BUCKET/buildlet.linux-arm64",
      		SSHUsername:     "root",
      	},
      	"host-linux-arm-aws": &HostConfig{
      		Notes:           "Debian Buster, EC2 arm instance. See x/build/env/linux-arm/aws",
      		VMImage:         "ami-07409163bccd5ac4d",
      		ContainerImage:  "gobuilder-arm-aws:latest",
      		machineType:     "m6g.xlarge",
      		isEC2:           true,
      		env:             []string{"GOROOT_BOOTSTRAP=/usr/local/go-bootstrap"},
      		buildletURLTmpl: "http://storage.googleapis.com/$BUCKET/buildlet.linux-arm",
      		SSHUsername:     "root",
      	},
      	"host-illumos-amd64-jclulow": &HostConfig{
      		Notes:       "SmartOS base64@19.1.0 zone",
      		Owner:       "josh@sysmgr.org",
      		OwnerGithub: "jclulow",
      		IsReverse:   true,
      		ExpectNum:   1,
      		SSHUsername: "gobuild",
      	},
      	"host-solaris-oracle-amd64-oraclerel": &HostConfig{
      		Notes:       "Oracle Solaris amd64 Release System",
      		Owner:       "",
      		OwnerGithub: "rorth",
      		IsReverse:   true,
      		ExpectNum:   1,
      		env:         []string{"GOROOT_BOOTSTRAP=/opt/golang/go-solaris-amd64-bootstrap"},
      	},
      	"host-linux-mipsle-mengzhuo": &HostConfig{
      		Notes:       "Loongson 3A Box hosted by Meng Zhuo; actually MIPS64 despite the name",
      		OwnerGithub: "mengzhuo",
      		IsReverse:   true,
      		ExpectNum:   1,
      		env: []string{
      			"GOROOT_BOOTSTRAP=/usr/lib/golang",
      			"GOMIPS64=hardfloat",
      		},
      	},
      	"host-linux-mips64le-rtrk": &HostConfig{
      		Notes:       "cavium,rhino_utm8 board hosted at RT-RK.com; quad-core cpu, 8GB of ram and 240GB ssd disks.",
      		OwnerGithub: "bogojevic",
      		IsReverse:   true,
      		ExpectNum:   1,
      		env: []string{
      			"GOROOT_BOOTSTRAP=/usr/local/go-bootstrap",
      		},
      	},
      	"host-linux-mips64-rtrk": &HostConfig{
      		Notes:       "cavium,rhino_utm8 board hosted at RT-RK.com; quad-core cpu, 8GB of ram and 240GB ssd disks.",
      		OwnerGithub: "bogojevic",
      		IsReverse:   true,
      		ExpectNum:   1,
      		env: []string{
      			"GOROOT_BOOTSTRAP=/usr/local/go-bootstrap",
      		},
      	},
      	"host-ios-arm64-corellium-ios": &HostConfig{
      		Notes:       "Virtual iOS devices hosted by Zenly on Corellium; see issues 31722 and 40523",
      		OwnerGithub: "znly",
      		IsReverse:   true,
      		ExpectNum:   3,
      		env: []string{
      			"GOROOT_BOOTSTRAP=/var/mobile/go-ios-arm64-bootstrap",
      		},
      	},
      	"host-android-arm64-corellium-android": &HostConfig{
      		Notes:       "Virtual Android devices hosted by Zenly on Corellium; see issues 31722 and 40523",
      		OwnerGithub: "znly",
      		IsReverse:   true,
      		ExpectNum:   3,
      		env: []string{
      			"GOROOT_BOOTSTRAP=/data/data/com.termux/files/home/go-android-arm64-bootstrap",
      		},
      	},
      	"host-aix-ppc64-osuosl": &HostConfig{
      		Notes:       "AIX 7.2 VM on OSU; run by Tony Reix",
      		OwnerGithub: "trex58",
      		IsReverse:   true,
      		ExpectNum:   1,
      		env:         []string{"GOROOT_BOOTSTRAP=/opt/freeware/lib/golang"},
      	},
      	"host-android-amd64-emu": &HostConfig{
      		Notes:           "Debian Buster w/ Android SDK + emulator (use nested virt)",
      		ContainerImage:  "android-amd64-emu:bff27c0c9263",
      		KonletVMImage:   "android-amd64-emu",
      		NestedVirt:      true,
      		buildletURLTmpl: "http://storage.googleapis.com/$BUCKET/buildlet.linux-amd64",
      		env:             []string{"GOROOT_BOOTSTRAP=/go1.4"},
      		SSHUsername:     "root",
      	},
      	"host-linux-amd64-wsl": &HostConfig{
      		Notes:       "Windows 10 WSL2 Ubuntu",
      		OwnerGithub: "mengzhuo",
      		IsReverse:   true,
      		ExpectNum:   2,
      		env:         []string{"GOROOT_BOOTSTRAP=/usr/lib/go"},
      	},
      }

        Hosts contains the names and configs of all the types of buildlets. They can be VMs, containers, or dedicated machines.

        Functions

        This section is empty.

        Types

        type BuildConfig

        type BuildConfig struct {
        	// Name is the unique name of the builder, in the form of
        	// "GOOS-GOARCH" or "GOOS-GOARCH-suffix". For example,
        	// "darwin-386", "linux-386-387", "linux-amd64-race". Some
        	// suffixes are well-known and carry special meaning, such as
        	// "-race".
        	Name string
        
        	// HostType is the required key into the Hosts map, describing
        	// the type of host this build will run on.
        	// For example, "host-linux-jessie".
        	HostType string
        
        	// KnownIssue is a non-zero golang.org/issue/nnn number for a builder
        	// that may fail due to a known issue, such as because it is a new
        	// builder still in development/testing, or because the feature
        	// or port that it's meant to test hasn't been added yet, etc.
        	//
        	// A non-zero value here means that failures on this builder should not
        	// be considered a serious regression and don't need investigation beyond
        	// what is already in scope of the listed issue.
        	KnownIssue int
        
        	Notes string // notes for humans
        
        	CompileOnly bool // if true, compile tests, but don't run them
        	FlakyNet    bool // network tests are flaky (try anyway, but ignore some failures)
        
        	// MinimumGoVersion optionally specifies the minimum Go version
        	// this builder is allowed to use. It can be useful for skipping
        	// builders that are too new and no longer support some supported
        	// Go versions. It doesn't need to be set for builders that support
        	// all supported Go versions.
        	//
        	// Note: This field currently has effect on trybot runs only.
        	//
        	// TODO: unexport this and make buildsRepoAtAll return false on too-old
        	// of repos. The callers in coordinator will need updating.
        	MinimumGoVersion types.MajorMinor
        
        	// SkipSnapshot, if true, means to not fetch a tarball
        	// snapshot of the world post-make.bash from the buildlet (and
        	// thus to not write it to Google Cloud Storage). This is
        	// incompatible with sharded tests, and should only be used
        	// for very slow builders or networks, unable to transfer
        	// the tarball in under ~5 minutes.
        	SkipSnapshot bool
        
        	// RunBench causes the coordinator to run benchmarks on this buildlet type.
        	RunBench bool
        
        	// StopAfterMake causes the build to stop after the make
        	// script completes, returning its result as the result of the
        	// whole build. It does not run or compile any of the tests,
        	// nor does it write a snapshot of the world to cloud
        	// storage. This option is only supported for builders whose
        	// BuildConfig.SplitMakeRun returns true.
        	StopAfterMake bool
        
        	// InstallRacePackages controls which packages to "go install
        	// -race <pkgs>" after running make.bash (or equivalent).  If
        	// the builder ends in "-race", the default if non-nil is just
        	// "std".
        	InstallRacePackages []string
        
        	// GoDeps is a list of of git sha1 commits that must be in the
        	// commit to be tested's history. If absent, this builder is
        	// not run for that commit.
        	GoDeps []string
        
        	// CrossCompileConfig optionally specifies whether and how
        	// this build is cross compiled.
        	CrossCompileConfig *CrossCompileConfig
        	// contains filtered or unexported fields
        }

          A BuildConfig describes how to run a builder.

          func TryBuildersForProject

          func TryBuildersForProject(proj, branch, goBranch string) []*BuildConfig

            TryBuildersForProject returns the builders that should run as part of a TryBot set for the given project. The project argument is of the form "go", "net", "sys", etc. The branch is the branch of that project ("master", "release-branch.go1.12", etc) The goBranch is the branch of Go to use. If proj == "go", then branch == goBranch.

            func (*BuildConfig) AllScript

            func (c *BuildConfig) AllScript() string

              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 (*BuildConfig) AllScriptArgs

              func (c *BuildConfig) AllScriptArgs() []string

                AllScriptArgs returns the set of arguments that should be passed to the all.bash-equivalent script. Usually empty.

                func (*BuildConfig) BuildsRepoPostSubmit

                func (c *BuildConfig) BuildsRepoPostSubmit(repo, branch, goBranch string) bool

                  BuildsRepoPostSubmit reports whether the build configuration type c should build the given repo ("go", "net", etc) and branch ("master", "release-branch.go1.12") as a post-submit build that shows up on https://build.golang.org/.

                  func (*BuildConfig) BuildsRepoTryBot

                  func (c *BuildConfig) BuildsRepoTryBot(repo, branch, goBranch string) bool

                    BuildsRepoTryBot reports whether the build configuration type c should build the given repo ("go", "net", etc) and branch ("master", "release-branch.go1.12") as a trybot.

                    func (*BuildConfig) DistTestsExecTimeout

                    func (c *BuildConfig) DistTestsExecTimeout(distTests []string) time.Duration

                      DistTestsExecTimeout returns how long the coordinator should wait for a cmd/dist test execution to run the provided dist test names.

                      func (*BuildConfig) Env

                      func (c *BuildConfig) Env() []string

                        Env returns the environment variables this builder should run with.

                        func (*BuildConfig) FilePathJoin

                        func (c *BuildConfig) FilePathJoin(x ...string) string

                          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 (*BuildConfig) GOARCH

                          func (c *BuildConfig) GOARCH() string

                          func (*BuildConfig) GOOS

                          func (c *BuildConfig) GOOS() string

                          func (*BuildConfig) GoBootstrapURL

                          func (c *BuildConfig) GoBootstrapURL(e *buildenv.Environment) string

                            GoBootstrapURL returns the URL of a built Go 1.4+ tar.gz for the build configuration type c, or empty string if there isn't one.

                            func (*BuildConfig) GoInstallRacePackages

                            func (c *BuildConfig) GoInstallRacePackages() []string

                            func (*BuildConfig) GorootFinal

                            func (c *BuildConfig) GorootFinal() string

                              GorootFinal returns the default install location for releases for this platform.

                              func (*BuildConfig) HostConfig

                              func (c *BuildConfig) HostConfig() *HostConfig

                                HostConfig returns the host configuration of c.

                                func (*BuildConfig) IsContainer

                                func (c *BuildConfig) IsContainer() bool

                                func (*BuildConfig) IsLongTest

                                func (c *BuildConfig) IsLongTest() bool

                                  IsLongTest reports whether this is a longtest builder. A longtest builder runs tests without the -short flag.

                                  A builder is considered to be a longtest builder if and only if its name ends with "-longtest".

                                  func (*BuildConfig) IsRace

                                  func (c *BuildConfig) IsRace() bool

                                  func (*BuildConfig) IsReverse

                                  func (c *BuildConfig) IsReverse() bool

                                  func (*BuildConfig) IsTryOnly

                                  func (c *BuildConfig) IsTryOnly() bool

                                  func (*BuildConfig) IsVM

                                  func (c *BuildConfig) IsVM() bool

                                  func (*BuildConfig) MakeScript

                                  func (c *BuildConfig) MakeScript() string

                                    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 (*BuildConfig) MakeScriptArgs

                                    func (c *BuildConfig) MakeScriptArgs() []string

                                      MakeScriptArgs returns the set of arguments that should be passed to the make.bash-equivalent script. Usually empty.

                                      func (*BuildConfig) MatchesSlowBotTerm

                                      func (c *BuildConfig) MatchesSlowBotTerm(term string) bool

                                        MatchesSlowBotTerm reports whether some provided term from a TRY=... comment on a Run-TryBot+1 vote on Gerrit should match this build config.

                                        func (*BuildConfig) ModulesEnv

                                        func (c *BuildConfig) ModulesEnv(repo string) (env []string)

                                          ModulesEnv returns the extra module-specific environment variables to append to this builder as a function of the repo being built ("go", "oauth2", "net", etc).

                                          func (*BuildConfig) NeedsGoProxy

                                          func (c *BuildConfig) NeedsGoProxy() bool

                                          func (*BuildConfig) NumTestHelpers

                                          func (c *BuildConfig) NumTestHelpers(isTry bool) int

                                            NumTestHelpers reports how many additional buildlets past the first one to help out with sharded tests.

                                            isTry specifies whether it's for a pre-submit test run (a TryBot or SlowBot) where speed matters more.

                                            func (*BuildConfig) OutboundNetworkAllowed

                                            func (c *BuildConfig) OutboundNetworkAllowed() bool

                                              OutboundNetworkAllowed reports whether this builder should be allowed to make outbound network requests. This is only enforced on some builders. (Currently most Linux ones)

                                              func (BuildConfig) OwnerGithub

                                              func (c BuildConfig) OwnerGithub() string

                                                OwnerGithub returns the Github handle of the owner.

                                                func (BuildConfig) ShortOwner

                                                func (c BuildConfig) ShortOwner() string

                                                  ShortOwner returns a short human-readable owner.

                                                  func (*BuildConfig) ShouldRunDistTest

                                                  func (c *BuildConfig) ShouldRunDistTest(distTest string, isNormalTry bool) bool

                                                    ShouldRunDistTest reports whether the named cmd/dist test should be run for this build config. The isNormalTry parameter is whether this is for a normal TryBot (non-SlowBot) run.

                                                    In general, this returns true. When in normal trybot mode, some slow portable tests are only run on the fastest builder.

                                                    Individual builders can adjust this policy to fit their needs.

                                                    func (*BuildConfig) ShouldTestPackageInGOPATHMode

                                                    func (*BuildConfig) ShouldTestPackageInGOPATHMode(importPath string) bool

                                                      ShouldTestPackageInGOPATHMode is used to control whether the package with the specified import path should be tested in GOPATH mode.

                                                      When running tests for all golang.org/* repositories in GOPATH mode, this method is called repeatedly with the full import path of each package that is found and is being considered for testing in GOPATH mode. It's not used and has no effect on import paths in the main "go" repository. It has no effect on tests done in module mode.

                                                      When considering making changes here, keep the release policy in mind:

                                                      https://golang.org/doc/devel/release.html#policy
                                                      

                                                      func (*BuildConfig) SplitMakeRun

                                                      func (c *BuildConfig) SplitMakeRun() bool

                                                        SplitMakeRun reports whether the coordinator should first compile (using c.MakeScript), then snapshot, then run the tests (ideally sharded) using cmd/dist test. 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.

                                                        type CrossCompileConfig

                                                        type CrossCompileConfig struct {
                                                        	// CompileHostType is the host type to use for compilation
                                                        	CompileHostType string
                                                        
                                                        	// CCForTarget is the CC_FOR_TARGET environment variable.
                                                        	CCForTarget string
                                                        
                                                        	// GOARM is any GOARM= environment variable.
                                                        	GOARM string
                                                        
                                                        	// AlwaysCrossCompile controls whether this builder always
                                                        	// cross compiles. Otherwise it's only done for trybot runs.
                                                        	AlwaysCrossCompile bool
                                                        }

                                                          CrossCompileConfig describes how to cross-compile a build on a faster host.

                                                          type HostConfig

                                                          type HostConfig struct {
                                                          	// HostType is the unique name of this host config. It is also
                                                          	// the key in the Hosts map.
                                                          	HostType string
                                                          
                                                          	// Exactly 1 of these must be set (with the exception of EC2 instances).
                                                          	// An EC2 instance may run a container inside a VM. In that case, a VMImage
                                                          	// and ContainerImage will both be set.
                                                          	VMImage        string // e.g. "openbsd-amd64-60"
                                                          	ContainerImage string // e.g. "linux-buildlet-std:latest" (suffix after "gcr.io/<PROJ>/")
                                                          	IsReverse      bool   // if true, only use the reverse buildlet pool
                                                          
                                                          	RegularDisk    bool   // if true, use spinning disk instead of SSD
                                                          	MinCPUPlatform string // optional; https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform
                                                          
                                                          	// ReverseOptions:
                                                          	ExpectNum       int  // expected number of reverse buildlets of this type
                                                          	HermeticReverse bool // whether reverse buildlet has fresh env per conn
                                                          
                                                          	// Container image options, if ContainerImage != "":
                                                          	NestedVirt    bool   // container requires VMX nested virtualization
                                                          	KonletVMImage string // optional VM image (containing konlet) to use instead of default
                                                          
                                                          	Owner       string // optional email of owner; "bradfitz@golang.org", empty means golang-dev
                                                          	OwnerGithub string // optional GitHub username of owner
                                                          	Notes       string // notes for humans
                                                          
                                                          	SSHUsername string // username to ssh as, empty means not supported
                                                          	// contains filtered or unexported fields
                                                          }

                                                            A HostConfig describes the available ways to obtain buildlets of different types. Some host configs can serve multiple builders. For example, a host config of "host-linux-jessie" can serve linux-amd64, linux-amd64-race, linux-386, linux-386-387, etc.

                                                            func (*HostConfig) BuildletBinaryURL

                                                            func (c *HostConfig) BuildletBinaryURL(e *buildenv.Environment) string

                                                              BuildletBinaryURL returns the public URL of this builder's buildlet.

                                                              func (*HostConfig) ContainerVMImage

                                                              func (c *HostConfig) ContainerVMImage() string

                                                                ContainerVMImage returns the base VM name (not the fully qualified URL resource name of the VM) that starts the konlet program that pulls & runs a container. The empty string means that no particular VM image is required and the caller can run this container in any host.

                                                                This method is only applicable when c.IsContainer() is true.

                                                                func (*HostConfig) GCENumCPU

                                                                func (c *HostConfig) GCENumCPU() int

                                                                  GCENumCPU reports the number of GCE CPUs this buildlet requires.

                                                                  func (*HostConfig) IsContainer

                                                                  func (c *HostConfig) IsContainer() bool

                                                                  func (*HostConfig) IsEC2

                                                                  func (c *HostConfig) IsEC2() bool

                                                                    IsEC2 returns true if the machine type is an EC2 arm64 type.

                                                                    func (*HostConfig) IsHermetic

                                                                    func (c *HostConfig) IsHermetic() bool

                                                                      IsHermetic reports whether this host config gets a fresh environment (including /usr, /var, etc) for each execution. This is true for VMs, GKE, and reverse buildlets running their containers running in Docker, but false on some reverse buildlets.

                                                                      func (*HostConfig) IsVM

                                                                      func (c *HostConfig) IsVM() bool

                                                                        IsVM reports whether the instance running the job is ultimately a VM. Hosts where a VM is used only to initiate a container are considered a container, not a VM. EC2 instances may be configured to run in containers that are running on custom AMIs.

                                                                        func (*HostConfig) MachineType

                                                                        func (c *HostConfig) MachineType() string

                                                                          MachineType returns the GCE machine type to use for this builder.

                                                                          func (*HostConfig) PoolName

                                                                          func (c *HostConfig) PoolName() string

                                                                            PoolName returns a short summary of the builder's host type for the https://farmer.golang.org/builders page.

                                                                            Source Files