зеркало из https://github.com/golang/build.git
cmd/coordinator: restore partial support for -mode=dev
Set gceMode earlier in InitGCE. Its value is used by some of the code that runs inside InitGCE. Don't try to run gcePool.pollQuotaLoop in dev mode. Make the code more clear and consistent about this and createBasepinDisks calls. Merge oAuthHTTPClient into the "Initialized by InitGCE" var block above. Remove initGCECalled, it has become unused. For golang/go#34744. For golang/go#38337. Change-Id: Ic47870fa9aed0eded0cfdf14e18e63c1acda4554 Reviewed-on: https://go-review.googlesource.com/c/build/+/244398 Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Carlos Amedee <carlos@golang.org> Reviewed-by: Alexander Rakoczy <alex@golang.org>
This commit is contained in:
Родитель
70303fc210
Коммит
b405858d83
|
@ -65,7 +65,7 @@ func gceAPIGate() {
|
|||
// is a GCE remote buildlet.
|
||||
type IsGCERemoteBuildletFunc func(instanceName string) bool
|
||||
|
||||
// Initialized by initGCE:
|
||||
// Initialized by InitGCE:
|
||||
// TODO(http://golang.org/issue/38337): These should be moved into a struct as
|
||||
// part of the effort to reduce package level variables.
|
||||
var (
|
||||
|
@ -74,16 +74,18 @@ var (
|
|||
// dsClient is a datastore client for the build project (symbolic-datum-552), where build progress is stored.
|
||||
dsClient *datastore.Client
|
||||
// goDSClient is a datastore client for golang-org, where build status is stored.
|
||||
goDSClient *datastore.Client
|
||||
computeService *compute.Service
|
||||
gcpCreds *google.Credentials
|
||||
errTryDeps error // non-nil if try bots are disabled
|
||||
gerritClient *gerrit.Client
|
||||
storageClient *storage.Client
|
||||
metricsClient *monapi.MetricClient
|
||||
inStaging bool // are we running in the staging project? (named -dev)
|
||||
errorsClient *errorreporting.Client // Stackdriver errors client
|
||||
gkeNodeIP string
|
||||
goDSClient *datastore.Client
|
||||
// oAuthHTTPClient is the OAuth2 HTTP client used to make API calls to Google Cloud APIs.
|
||||
oAuthHTTPClient *http.Client
|
||||
computeService *compute.Service
|
||||
gcpCreds *google.Credentials
|
||||
errTryDeps error // non-nil if try bots are disabled
|
||||
gerritClient *gerrit.Client
|
||||
storageClient *storage.Client
|
||||
metricsClient *monapi.MetricClient
|
||||
inStaging bool // are we running in the staging project? (named -dev)
|
||||
errorsClient *errorreporting.Client // Stackdriver errors client
|
||||
gkeNodeIP string
|
||||
|
||||
// values created due to seperating the buildlet pools into a seperate package
|
||||
gceMode string
|
||||
|
@ -91,23 +93,18 @@ var (
|
|||
testFiles map[string]string
|
||||
basePinErr *atomic.Value
|
||||
isGCERemoteBuildlet IsGCERemoteBuildletFunc
|
||||
|
||||
initGCECalled bool
|
||||
)
|
||||
|
||||
// oAuthHTTPClient is the OAuth2 HTTP client used to make API calls to Google Cloud APIs.
|
||||
// It is initialized by initGCE.
|
||||
var oAuthHTTPClient *http.Client
|
||||
|
||||
// InitGCE initializes the GCE buildlet pool.
|
||||
func InitGCE(sc *secret.Client, vmDeleteTimeout time.Duration, tFiles map[string]string, basePin *atomic.Value, fn IsGCERemoteBuildletFunc, buildEnvName, mode string) error {
|
||||
initGCECalled = true
|
||||
gceMode = mode
|
||||
deleteTimeout = vmDeleteTimeout
|
||||
testFiles = tFiles
|
||||
basePinErr = basePin
|
||||
isGCERemoteBuildlet = fn
|
||||
var err error
|
||||
|
||||
ctx := context.Background()
|
||||
var err error
|
||||
|
||||
// If the coordinator is running on a GCE instance and a
|
||||
// buildEnv was not specified with the env flag, set the
|
||||
|
@ -214,14 +211,12 @@ func InitGCE(sc *secret.Client, vmDeleteTimeout time.Duration, tFiles map[string
|
|||
log.Printf("TryBot builders enabled.")
|
||||
}
|
||||
|
||||
if mode != "dev" {
|
||||
if mode != "dev" && metadata.OnGCE() && (buildEnv == buildenv.Production || buildEnv == buildenv.Staging) {
|
||||
go syncBuildStatsLoop(buildEnv)
|
||||
go gcePool.pollQuotaLoop()
|
||||
go createBasepinDisks(ctx)
|
||||
}
|
||||
|
||||
gceMode = mode
|
||||
|
||||
go gcePool.pollQuotaLoop()
|
||||
go createBasepinDisks(context.Background())
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -360,14 +355,6 @@ type GCEBuildlet struct {
|
|||
}
|
||||
|
||||
func (p *GCEBuildlet) pollQuotaLoop() {
|
||||
if computeService == nil {
|
||||
log.Printf("pollQuotaLoop: no GCE access; not checking quota.")
|
||||
return
|
||||
}
|
||||
if buildEnv.ProjectName == "" {
|
||||
log.Printf("pollQuotaLoop: no GCE project name configured; not checking quota.")
|
||||
return
|
||||
}
|
||||
for {
|
||||
p.pollQuota()
|
||||
time.Sleep(5 * time.Second)
|
||||
|
@ -827,9 +814,6 @@ func syncBuildStatsLoop(env *buildenv.Environment) {
|
|||
// Other than a list call, this a no-op unless new VM images were
|
||||
// added or updated recently.
|
||||
func createBasepinDisks(ctx context.Context) {
|
||||
if !metadata.OnGCE() || (buildEnv != buildenv.Production && buildEnv != buildenv.Staging) {
|
||||
return
|
||||
}
|
||||
for {
|
||||
t0 := time.Now()
|
||||
bgc, err := buildgo.NewClient(ctx, buildEnv)
|
||||
|
|
|
@ -62,7 +62,7 @@ func InitKube(monitorGitMirror MonitorGitMirrorFunc) error {
|
|||
return errors.New("Kubernetes builders disabled due to KubeBuild.MaxNodes == 0")
|
||||
}
|
||||
|
||||
// projectID was set by initGCE
|
||||
// projectID was set by InitGCE.
|
||||
registryPrefix += "/" + gceBuildEnv.ProjectName
|
||||
if !hasCloudPlatformScope() {
|
||||
return errors.New("coordinator not running with access to the Cloud Platform scope.")
|
||||
|
|
Загрузка…
Ссылка в новой задаче