dashboard: add linux-mipsle-mengzhuo builder

Updates golang/go#31217

Change-Id: I7bda4f3ddf7dc76bdd974726747621f69a7acfa0
Reviewed-on: https://go-review.googlesource.com/c/build/+/191577
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
diff --git a/cmd/buildlet/stage0/Makefile b/cmd/buildlet/stage0/Makefile
index 1405fe1..2361d1b 100644
--- a/cmd/buildlet/stage0/Makefile
+++ b/cmd/buildlet/stage0/Makefile
@@ -50,6 +50,10 @@
 	go install golang.org/x/build/cmd/upload
 	upload --verbose --osarch=$@ --file=go:golang.org/x/build/cmd/buildlet/stage0 --public --cacheable=false go-builder-data/$@
 
+buildlet-stage0.linux-mips64le: FORCE
+	go install golang.org/x/build/cmd/upload
+	upload --verbose --osarch=$@ --file=go:golang.org/x/build/cmd/buildlet/stage0 --public --cacheable=false go-builder-data/$@
+
 # macstadium uploads all the darwin-amd64 stage0 binary as three
 # different filenames, which is used by four different Mac VM images.
 # See the env/darwin/macstadium/** files for details.
diff --git a/cmd/buildlet/stage0/stage0.go b/cmd/buildlet/stage0/stage0.go
index 65d02ff..f964a0b 100644
--- a/cmd/buildlet/stage0/stage0.go
+++ b/cmd/buildlet/stage0/stage0.go
@@ -164,6 +164,9 @@
 		cmd.Args = append(cmd.Args,
 			scalewayArgs...,
 		)
+	case "host-linux-mipsle-mengzhuo":
+		cmd.Args = append(cmd.Args, reverseHostTypeArgs(buildEnv)...)
+		cmd.Args = append(cmd.Args, os.ExpandEnv("--workdir=${WORKDIR}"))
 	}
 	switch osArch {
 	case "linux/s390x":
@@ -290,6 +293,7 @@
 		Timeout: 5 * time.Second,
 		Transport: &http.Transport{
 			DisableKeepAlives: true,
+			Proxy:             http.ProxyFromEnvironment,
 		},
 	}
 	res, err := c.Get(probeURL)
@@ -325,6 +329,8 @@
 		return "https://storage.googleapis.com/go-builder-data/buildlet.linux-ppc64"
 	case "linux/ppc64le":
 		return "https://storage.googleapis.com/go-builder-data/buildlet.linux-ppc64le"
+	case "linux/mips64le":
+		return "https://storage.googleapis.com/go-builder-data/buildlet.linux-mips64le"
 	case "solaris/amd64":
 		return "https://storage.googleapis.com/go-builder-data/buildlet.solaris-amd64"
 	case "illumos/amd64":
diff --git a/dashboard/builders.go b/dashboard/builders.go
index 5384bfd..7d35711 100644
--- a/dashboard/builders.go
+++ b/dashboard/builders.go
@@ -466,6 +466,16 @@
 		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",
+		OwnerGithub: "mengzhuo",
+		IsReverse:   true,
+		ExpectNum:   1,
+		env: []string{
+			"GOROOT_BOOTSTRAP=/usr/lib/golang",
+			"GOMIPS64=hardfloat",
+		},
+	},
 	"host-darwin-amd64-zenly-ios": &HostConfig{
 		Notes:       "MacBook Pro hosted by Zenly, running the ios reverse buildlet",
 		OwnerGithub: "znly",
@@ -2059,6 +2069,19 @@
 		FlakyNet: true, // maybe not flaky, but here conservatively
 	})
 	addBuilder(BuildConfig{
+		FlakyNet: true,
+		HostType: "host-linux-mipsle-mengzhuo",
+		Name:     "linux-mips64le-mengzhuo",
+		buildsRepo: func(repo, branch, goBranch string) bool {
+			switch repo {
+			case "go", "net", "sys":
+				return branch == "master" && goBranch == "master"
+			default:
+				return false
+			}
+		},
+	})
+	addBuilder(BuildConfig{
 		Name:           "linux-s390x-ibm",
 		HostType:       "host-linux-s390x",
 		numTestHelpers: 0,
diff --git a/dashboard/builders_test.go b/dashboard/builders_test.go
index c004433..5dc53c5 100644
--- a/dashboard/builders_test.go
+++ b/dashboard/builders_test.go
@@ -315,6 +315,10 @@
 		{b("linux-amd64@go1.11", "net@1.11"), both},
 		{b("linux-amd64@go1.12", "net@1.12"), both},
 
+		{b("linux-mips64le-mengzhuo", "go"), onlyPost},
+		{b("linux-mips64le-mengzhuo", "sys"), onlyPost},
+		{b("linux-mips64le-mengzhuo", "net"), onlyPost},
+
 		// go1.12.html: "Go 1.12 is the last release that is
 		// supported on FreeBSD 10.x [... and 11.1]"
 		{b("freebsd-386-10_3", "go"), none},