func (r *RunSingleCommand) processBuild(data common.ExecutorData, abortSignal chan os.Signal) (err error) { buildData, healthy := r.network.GetBuild(r.RunnerConfig) if !healthy { log.Println("Runner is not healthy!") select { case <-time.After(common.NotHealthyCheckInterval * time.Second): case <-abortSignal: } return } if buildData == nil { select { case <-time.After(common.CheckInterval): case <-abortSignal: } return } config := common.NewConfig() newBuild := common.Build{ GetBuildResponse: *buildData, Runner: &r.RunnerConfig, SystemInterrupt: abortSignal, ExecutorData: data, } buildCredentials := &common.BuildCredentials{ ID: buildData.ID, Token: buildData.Token, } trace := r.network.ProcessBuild(r.RunnerConfig, buildCredentials) defer trace.Fail(err) err = newBuild.Run(config, trace) return }