cmd/coordinator, dashboard: split build into 'make' and 'run' steps

Change-Id: Ib60a601ef21163d5e0d1fed3a2609d9b719c616a
Reviewed-on: https://go-review.googlesource.com/10073
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
Andrew Gerrand 2015-05-21 14:02:38 +10:00
Родитель 1fc56ca750
Коммит fb774889dc
3 изменённых файлов: 62 добавлений и 12 удалений

Просмотреть файл

@ -1,4 +1,4 @@
coordinator: builders.go coordinator.go gce.go dash.go debug.go reverse.go status.go watcher.go
coordinator: builders.go coordinator.go dash.go debug.go gce.go reverse.go status.go watcher.go
GOOS=linux go build -o coordinator .
# After "make upload", either reboot the machine, or ssh to it and:

Просмотреть файл

@ -297,8 +297,7 @@ func main() {
if devCluster {
// Only run the linux-amd64 builder in the dev cluster (for now).
conf := dashboard.Builders["linux-amd64"]
// TODO(adg): uncomment once we have buildlet images in the dev bucket
//conf.SetBuildletBinaryURL(strings.Replace(conf.BuildletBinaryURL(), "go-builder-data", "dev-go-builder-data", 1))
conf.SetBuildletBinaryURL(strings.Replace(conf.BuildletBinaryURL(), "go-builder-data", "dev-go-builder-data", 1))
dashboard.Builders = map[string]dashboard.BuildConfig{"linux-amd64": conf}
}
@ -1033,17 +1032,43 @@ func (st *buildStatus) build() (retErr error) {
st.logEventTime("pre_exec")
fmt.Fprintf(st, "%s at %v\n\n", st.name, st.rev)
remoteErr, err := bc.Exec(path.Join("go", st.conf.AllScript()), buildlet.ExecOpts{
Output: st,
OnStartExec: func() { st.logEventTime("running_exec") },
ExtraEnv: st.conf.Env(),
Debug: true,
Args: st.conf.AllScriptArgs(),
makeScript := st.conf.MakeScript()
lastScript := makeScript
remoteErr, err := bc.Exec(path.Join("go", makeScript), buildlet.ExecOpts{
Output: st,
OnStartExec: func() {
st.logEventTime("running_exec") // TODO(adg): remove this?
st.logEventTime("make_exec")
},
ExtraEnv: st.conf.Env(),
Debug: true,
Args: st.conf.MakeScriptArgs(),
})
if err != nil {
return err
}
st.logEventTime("done")
st.logEventTime("make_done")
if remoteErr == nil {
runScript := st.conf.RunScript()
lastScript = runScript
remoteErr, err = bc.Exec(path.Join("go", runScript), buildlet.ExecOpts{
Output: st,
OnStartExec: func() { st.logEventTime("run_exec") },
ExtraEnv: st.conf.Env(),
// all.X sources make.X which adds $GOROOT/bin to $PATH,
// so run.X expects to find the go binary in $PATH.
Path: []string{"$WORKDIR/go/bin", "$PATH"},
Debug: true,
Args: st.conf.RunScriptArgs(),
})
if err != nil {
return err
}
st.logEventTime("run_done")
}
st.logEventTime("done") // TODO(adg): remove this?
if st.trySet == nil {
var buildLog string
if remoteErr != nil {
@ -1057,7 +1082,7 @@ func (st *buildStatus) build() (retErr error) {
}
}
if remoteErr != nil {
return fmt.Errorf("%s failed: %v", st.conf.AllScript(), remoteErr)
return fmt.Errorf("%v failed: %v", lastScript, remoteErr)
}
return nil
}

Просмотреть файл

@ -100,7 +100,7 @@ func (c *BuildConfig) AllScript() string {
return "src/all.bash"
}
// AllScript returns the set of arguments that should be passed to the
// AllScriptArgs returns the set of arguments that should be passed to the
// all.bash-equivalent script. Usually empty.
func (c *BuildConfig) AllScriptArgs() []string {
if strings.HasPrefix(c.Name, "darwin-arm") {
@ -122,6 +122,31 @@ func (c *BuildConfig) MakeScript() string {
return "src/make.bash"
}
// MakeScriptArgs returns the set of arguments that should be passed to the
// make.bash-equivalent script. Usually empty.
func (c *BuildConfig) MakeScriptArgs() []string {
return c.AllScriptArgs()
}
// RunScript returns the relative path to the operating system's script to
// run the test suite.
// Example values are "src/run.bash", "src/run.bat", "src/run.rc".
func (c *BuildConfig) RunScript() string {
if strings.HasPrefix(c.Name, "windows-") {
return "src/run.bat"
}
if strings.HasPrefix(c.Name, "plan9-") {
return "src/run.rc"
}
return "src/run.bash"
}
// RunScriptArgs returns the set of arguments that should be passed to the
// run.bash-equivalent script.
func (c *BuildConfig) RunScriptArgs() []string {
return []string{"--no-rebuild"}
}
// GorootFinal returns the default install location for
// releases for this platform.
func (c *BuildConfig) GorootFinal() string {