dashboard: build vulndb only for 1.17 and later

Don't build the vulndb repo for Go 1.16 (and earlier).
It contains only code used by the Go team, so it need
not work on older Go versions.

Change-Id: Ic936e98f13ad897a138ece415fcda9e28084c21a
Reviewed-on: https://go-review.googlesource.com/c/build/+/388934
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
diff --git a/dashboard/builders.go b/dashboard/builders.go
index 2d2adaa..dbfc26d 100644
--- a/dashboard/builders.go
+++ b/dashboard/builders.go
@@ -1287,8 +1287,9 @@
 }
 
 var (
-	defaultPlusExp      = defaultPlus("exp")
-	defaultPlusExpBuild = defaultPlus("exp", "build")
+	defaultPlusExp            = defaultPlus("exp")
+	defaultPlusExpBuild       = defaultPlus("exp", "build")
+	defaultPlusExpBuildVulnDB = defaultPlus("exp", "build", "vulndb")
 )
 
 // defaultPlus returns a buildsRepo policy function that returns true for all
@@ -1580,10 +1581,17 @@
 		env:      []string{"GOARCH=386", "GOHOSTARCH=386", "GO386=softfloat"},
 	})
 	addBuilder(BuildConfig{
-		Name:       "linux-amd64",
-		HostType:   "host-linux-bullseye",
-		tryBot:     defaultTrySet(),
-		buildsRepo: defaultPlus("exp", "build", "vulndb"),
+		Name:     "linux-amd64",
+		HostType: "host-linux-bullseye",
+		tryBot:   defaultTrySet(),
+		buildsRepo: func(repo, branch, goBranch string) bool {
+			if repo == "vulndb" && atMostGo1(goBranch, 16) {
+				// The vulndb repo is for use only by the Go team,
+				// so it doesn't need to work on older Go versions.
+				return false
+			}
+			return defaultPlusExpBuildVulnDB(repo, branch, goBranch)
+		},
 		env: []string{
 			"GO_DISABLE_OUTBOUND_NETWORK=1",
 		},
diff --git a/dashboard/builders_test.go b/dashboard/builders_test.go
index f68c7a0..308dc98 100644
--- a/dashboard/builders_test.go
+++ b/dashboard/builders_test.go
@@ -613,6 +613,13 @@
 		{b("linux-amd64-bullseye", "build"), none},
 		{b("linux-amd64-nocgo", "build"), none},
 		{b("linux-386-longtest", "build"), none},
+
+		// x/vulndb isn't tested on Go 1.16 and older.
+		{b("linux-amd64@go1.16", "vulndb"), none},
+		{b("linux-amd64@go1.17", "vulndb"), both},
+		{b("linux-amd64-longtest@go1.16", "vulndb"), none},
+		{b("linux-amd64-longtest", "vulndb"), onlyPost},
+
 		{b("js-wasm", "build"), none},
 		{b("android-386-emu", "build"), none},
 		{b("android-amd64-emu", "build"), none},