Skip to content

Commit b70af65

Browse files
dmitshurgopherbot
authored andcommitted
internal/migration: add a small package to hold migration knobs
I'm looking to largely leave existing coordinator code alone as it's being gradually shut down, before being eventually deleted. This makes it easier to look up past behaviors. Add a small internal package that can be imported both by dashboard and coordinator. It'll hold some state that controls what's been turned off. For golang/go#67761. Change-Id: Iff3615418307fbd925590ccc98306374bb7891ac Reviewed-on: https://go-review.googlesource.com/c/build/+/589657 Auto-Submit: Dmitri Shuralyov <[email protected]> Reviewed-by: Dmitri Shuralyov <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]> Reviewed-by: Michael Knyszek <[email protected]>
1 parent c327aad commit b70af65

File tree

5 files changed

+114
-96
lines changed

5 files changed

+114
-96
lines changed

cmd/coordinator/internal/dashboard/handler.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"cloud.google.com/go/datastore"
2424
"golang.org/x/build/cmd/coordinator/internal/lucipoll"
2525
"golang.org/x/build/dashboard"
26+
"golang.org/x/build/internal/migration"
2627
"golang.org/x/build/internal/releasetargets"
2728
"golang.org/x/build/maintner/maintnerd/apipb"
2829
"google.golang.org/grpc"
@@ -128,7 +129,7 @@ func (d *Handler) getBuilders(conf map[string]*dashboard.BuildConfig, luci lucip
128129
if !b.BuildsRepoPostSubmit("go", "master", "master") {
129130
continue
130131
}
131-
if dashboard.BuildersPortedToLUCI[b.Name] && len(luci.Builders) > 0 {
132+
if migration.BuildersPortedToLUCI[b.Name] && len(luci.Builders) > 0 {
132133
// Don't display old builders that have been ported
133134
// to LUCI if willing to show LUCI builders as well.
134135
continue

cmd/coordinator/internal/legacydash/ui.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
bbpb "go.chromium.org/luci/buildbucket/proto"
2727
"golang.org/x/build/cmd/coordinator/internal/lucipoll"
2828
"golang.org/x/build/dashboard"
29+
"golang.org/x/build/internal/migration"
2930
"golang.org/x/build/internal/releasetargets"
3031
"golang.org/x/build/maintner/maintnerd/apipb"
3132
"golang.org/x/build/repos"
@@ -482,7 +483,7 @@ func (tb *uiTemplateDataBuilder) buildTemplateData(ctx context.Context, datastor
482483
}
483484
if len(luci.Builders) > 0 {
484485
for name := range builders {
485-
if dashboard.BuildersPortedToLUCI[name] {
486+
if migration.BuildersPortedToLUCI[name] {
486487
// Don't display old builders that have been ported
487488
// to LUCI if willing to show LUCI builders as well.
488489
delete(builders, name)
@@ -525,7 +526,7 @@ func (tb *uiTemplateDataBuilder) buildTemplateData(ctx context.Context, datastor
525526
}
526527
if len(luci.Builders) > 0 {
527528
for name := range builders {
528-
if dashboard.BuildersPortedToLUCI[name] {
529+
if migration.BuildersPortedToLUCI[name] {
529530
// Don't display old builders that have been ported
530531
// to LUCI if willing to show LUCI builders as well.
531532
delete(builders, name)

dashboard/builders.go

Lines changed: 2 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616

1717
"golang.org/x/build/buildenv"
1818
"golang.org/x/build/internal/gophers"
19+
"golang.org/x/build/internal/migration"
1920
"golang.org/x/build/maintner/maintnerd/maintapi/version"
2021
"golang.org/x/build/types"
2122
)
@@ -2861,97 +2862,6 @@ func init() {
28612862
})
28622863
}
28632864

2864-
// BuildersPortedToLUCI lists coordinator builders that have been ported
2865-
// over to LUCI and don't need to continue to run. Their results will be
2866-
// hidden from the build.golang.org page and new builds won't be started
2867-
// if stopPortedBuilder (below) returns true.
2868-
//
2869-
// See go.dev/issue/65913
2870-
// and go.dev/issue/63471.
2871-
var BuildersPortedToLUCI = map[string]bool{
2872-
// macOS builders.
2873-
"darwin-amd64-10_15": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-darwin-amd64_10.15.
2874-
"darwin-amd64-11_0": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-darwin-amd64_11.
2875-
"darwin-amd64-12_0": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-darwin-amd64_12.
2876-
"darwin-amd64-13": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-darwin-amd64_13.
2877-
"darwin-amd64-longtest": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-darwin-amd64-longtest.
2878-
"darwin-amd64-nocgo": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-darwin-amd64-nocgo.
2879-
"darwin-arm64-11": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-darwin-arm64_11.
2880-
"darwin-arm64-12": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-darwin-arm64_12.
2881-
2882-
// Linux builders (just those covering first-class ports).
2883-
"linux-386": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-386.
2884-
"linux-386-longtest": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-386-longtest.
2885-
"linux-386-clang": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-386-clang15 (a newer clang, but we won't be adding exactly -clang7 to LUCI by now).
2886-
"linux-386-softfloat": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-386-softfloat.
2887-
"linux-arm-aws": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-arm.
2888-
"linux-amd64": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64.
2889-
"linux-amd64-longtest": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-longtest.
2890-
"linux-amd64-race": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-race.
2891-
"linux-amd64-longtest-race": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-longtest-race.
2892-
"linux-amd64-racecompile": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-racecompile.
2893-
"linux-amd64-nocgo": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-nocgo.
2894-
"linux-amd64-noopt": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-noopt.
2895-
"linux-amd64-clang": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-clang15 (a newer clang, but we won't be adding exactly -clang7 to LUCI by now).
2896-
"linux-amd64-goamd64v3": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-goamd64v3.
2897-
"linux-amd64-boringcrypto": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-boringcrypto.
2898-
"linux-amd64-ssacheck": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-ssacheck.
2899-
"linux-amd64-staticlockranking": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-staticlockranking.
2900-
"linux-amd64-newinliner": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-newinliner.
2901-
"linux-arm64": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-arm64.
2902-
"linux-arm64-longtest": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-arm64-longtest.
2903-
"linux-arm64-race": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-arm64-race.
2904-
"linux-arm64-boringcrypto": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-arm64-boringcrypto.
2905-
2906-
// Windows builders.
2907-
"windows-386-2016": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-windows-386.
2908-
"windows-amd64-2016": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-windows-amd64.
2909-
"windows-amd64-longtest": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-windows-amd64-longtest.
2910-
"windows-amd64-race": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-windows-amd64-race.
2911-
"windows-arm64-11": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-windows-arm64.
2912-
2913-
"linux-riscv64-jsing": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-riscv64.
2914-
"linux-riscv64-unmatched": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-riscv64 (this builder is testing the same port as on the line above).
2915-
2916-
"linux-ppc64le-buildlet": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-ppc64le_power8.
2917-
"linux-ppc64le-power9osu": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-ppc64le_power9.
2918-
"linux-ppc64le-power10osu": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-ppc64le_power10.
2919-
"linux-ppc64-sid-buildlet": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-ppc64_power8.
2920-
"linux-ppc64-sid-power10": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-ppc64_power10.
2921-
"linux-loong64-3a5000": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-loong64.
2922-
2923-
"netbsd-arm64-bsiegert": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-netbsd-arm64.
2924-
2925-
"openbsd-amd64-72": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-openbsd-amd64.
2926-
2927-
"solaris-amd64-oraclerel": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-solaris-amd64.
2928-
2929-
// WebAssembly builders.
2930-
"js-wasm-node18": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-js-wasm.
2931-
"wasip1-wasm-wasmedge": true, // Would be 'wasip1-wasm_wasmedge' but put off until go.dev/issue/60097 picks up activity.
2932-
"wasip1-wasm-wasmer": true, // Would be 'wasip1-wasm_wasmer' but put off until go.dev/issue/59907 picks up activity.
2933-
"wasip1-wasm-wasmtime": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-wasip1-wasm_wasmtime.
2934-
"wasip1-wasm-wazero": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-wasip1-wasm_wazero.
2935-
}
2936-
2937-
// stopPortedBuilder reports whether the named ported builder should be stopped,
2938-
// instead of just made invisible in the web UI.
2939-
func stopPortedBuilder(builderName string) (stop bool) {
2940-
nameKeyList := []string{
2941-
"linux-loong64",
2942-
"linux-ppc64",
2943-
"-wasm-",
2944-
}
2945-
2946-
for _, key := range nameKeyList {
2947-
if strings.Contains(builderName, key) {
2948-
return true
2949-
}
2950-
}
2951-
2952-
return false
2953-
}
2954-
29552865
// addBuilder adds c to the Builders map after doing some checks.
29562866
func addBuilder(c BuildConfig) {
29572867
if c.Name == "" {
@@ -2988,7 +2898,7 @@ func addBuilder(c BuildConfig) {
29882898
panic(fmt.Sprintf("build config %q host type inconsistent (must be Reverse, Image, or VM)", c.Name))
29892899
}
29902900

2991-
if BuildersPortedToLUCI[c.Name] && stopPortedBuilder(c.Name) {
2901+
if migration.BuildersPortedToLUCI[c.Name] && migration.StopPortedBuilder(c.Name) {
29922902
c.buildsRepo = func(_, _, _ string) bool { return false }
29932903
c.Notes = "Unavailable in the coordinator. Use LUCI (https://go.dev/wiki/LUCI) instead."
29942904
}

dashboard/builders_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import (
1515
"strings"
1616
"testing"
1717
"time"
18+
19+
"golang.org/x/build/internal/migration"
1820
)
1921

2022
func TestOSARCHAccessors(t *testing.T) {
@@ -1239,7 +1241,7 @@ func TestHostsSort(t *testing.T) {
12391241
func TestBuildersPortedToLUCI(t *testing.T) {
12401242
// Check that map keys refer to builder names that exist,
12411243
// otherwise the entry is a no-op. Mostly to catch typos.
1242-
for name := range BuildersPortedToLUCI {
1244+
for name := range migration.BuildersPortedToLUCI {
12431245
if _, ok := Builders[name]; !ok {
12441246
t.Errorf("BuildersPortedToLUCI contains an unknown legacy builder name %v", name)
12451247
}

internal/migration/migration.go

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
// Copyright 2024 The Go Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style
3+
// license that can be found in the LICENSE file.
4+
5+
// Package migration holds some knobs related to the migration from the
6+
// now-legacy build infrastructure to the new LUCI build infrastructure.
7+
package migration
8+
9+
import "strings"
10+
11+
const (
12+
StopLegacyMiscCompileTryBots = false
13+
)
14+
15+
// BuildersPortedToLUCI lists coordinator builders that have been ported
16+
// over to LUCI and don't need to continue to run. Their results will be
17+
// hidden from the build.golang.org page and new builds won't be started
18+
// if StopPortedBuilder (below) returns true.
19+
//
20+
// See go.dev/issue/65913
21+
// and go.dev/issue/63471.
22+
var BuildersPortedToLUCI = map[string]bool{
23+
// macOS builders.
24+
"darwin-amd64-10_15": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-darwin-amd64_10.15.
25+
"darwin-amd64-11_0": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-darwin-amd64_11.
26+
"darwin-amd64-12_0": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-darwin-amd64_12.
27+
"darwin-amd64-13": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-darwin-amd64_13.
28+
"darwin-amd64-longtest": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-darwin-amd64-longtest.
29+
"darwin-amd64-nocgo": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-darwin-amd64-nocgo.
30+
"darwin-arm64-11": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-darwin-arm64_11.
31+
"darwin-arm64-12": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-darwin-arm64_12.
32+
33+
// Linux builders (just those covering first-class ports).
34+
"linux-386": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-386.
35+
"linux-386-longtest": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-386-longtest.
36+
"linux-386-clang": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-386-clang15 (a newer clang, but we won't be adding exactly -clang7 to LUCI by now).
37+
"linux-386-softfloat": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-386-softfloat.
38+
"linux-arm-aws": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-arm.
39+
"linux-amd64": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64.
40+
"linux-amd64-longtest": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-longtest.
41+
"linux-amd64-race": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-race.
42+
"linux-amd64-longtest-race": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-longtest-race.
43+
"linux-amd64-racecompile": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-racecompile.
44+
"linux-amd64-nocgo": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-nocgo.
45+
"linux-amd64-noopt": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-noopt.
46+
"linux-amd64-clang": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-clang15 (a newer clang, but we won't be adding exactly -clang7 to LUCI by now).
47+
"linux-amd64-goamd64v3": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-goamd64v3.
48+
"linux-amd64-boringcrypto": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-boringcrypto.
49+
"linux-amd64-ssacheck": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-ssacheck.
50+
"linux-amd64-staticlockranking": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-staticlockranking.
51+
"linux-amd64-newinliner": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-amd64-newinliner.
52+
"linux-arm64": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-arm64.
53+
"linux-arm64-longtest": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-arm64-longtest.
54+
"linux-arm64-race": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-arm64-race.
55+
"linux-arm64-boringcrypto": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-arm64-boringcrypto.
56+
57+
// Windows builders.
58+
"windows-386-2016": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-windows-386.
59+
"windows-amd64-2016": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-windows-amd64.
60+
"windows-amd64-longtest": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-windows-amd64-longtest.
61+
"windows-amd64-race": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-windows-amd64-race.
62+
"windows-arm64-11": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-windows-arm64.
63+
64+
"linux-riscv64-jsing": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-riscv64.
65+
"linux-riscv64-unmatched": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-riscv64 (this builder is testing the same port as on the line above).
66+
67+
"linux-ppc64le-buildlet": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-ppc64le_power8.
68+
"linux-ppc64le-power9osu": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-ppc64le_power9.
69+
"linux-ppc64le-power10osu": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-ppc64le_power10.
70+
"linux-ppc64-sid-buildlet": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-ppc64_power8.
71+
"linux-ppc64-sid-power10": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-ppc64_power10.
72+
"linux-loong64-3a5000": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-linux-loong64.
73+
74+
"netbsd-arm64-bsiegert": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-netbsd-arm64.
75+
76+
"openbsd-amd64-72": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-openbsd-amd64.
77+
78+
"solaris-amd64-oraclerel": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-solaris-amd64.
79+
80+
// WebAssembly builders.
81+
"js-wasm-node18": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-js-wasm.
82+
"wasip1-wasm-wasmedge": true, // Would be 'wasip1-wasm_wasmedge' but put off until go.dev/issue/60097 picks up activity.
83+
"wasip1-wasm-wasmer": true, // Would be 'wasip1-wasm_wasmer' but put off until go.dev/issue/59907 picks up activity.
84+
"wasip1-wasm-wasmtime": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-wasip1-wasm_wasmtime.
85+
"wasip1-wasm-wazero": true, // Available as https://ci.chromium.org/p/golang/builders/ci/gotip-wasip1-wasm_wazero.
86+
}
87+
88+
// StopPortedBuilder reports whether the named ported builder should be stopped,
89+
// instead of just made invisible in the web UI.
90+
func StopPortedBuilder(builderName string) (stop bool) {
91+
nameKeyList := []string{
92+
"linux-loong64",
93+
"linux-ppc64",
94+
"-wasm-",
95+
}
96+
97+
for _, key := range nameKeyList {
98+
if strings.Contains(builderName, key) {
99+
return true
100+
}
101+
}
102+
103+
return false
104+
}

0 commit comments

Comments
 (0)