mirror of
https://github.com/golang/go
synced 2024-11-25 09:07:58 -07:00
dashboard: add gobuilder -fail mode
This is for filling a column with "fail", like I just did for Windows, when the builder would get stuck running that build. (We have safeguards against the tests getting stuck but this was the bootstrap build getting stuck.) I usually use -cmd=/bin/false, but this avoids the Mercurial checkouts, which means it runs instantly instead of requiring ~1 minute per "fail". R=golang-dev, adg CC=golang-dev https://golang.org/cl/5649049
This commit is contained in:
parent
ef1d2a32ea
commit
ee3e24f2d7
@ -54,6 +54,7 @@ var (
|
||||
buildRelease = flag.Bool("release", false, "Build and upload binary release archives")
|
||||
buildRevision = flag.String("rev", "", "Build specified revision and exit")
|
||||
buildCmd = flag.String("cmd", filepath.Join(".", allCmd), "Build command (specify relative to go/src/)")
|
||||
failAll = flag.Bool("fail", false, "fail all builds")
|
||||
external = flag.Bool("external", false, "Build external packages")
|
||||
parallel = flag.Bool("parallel", false, "Build multiple targets in parallel")
|
||||
verbose = flag.Bool("v", false, "verbose")
|
||||
@ -87,6 +88,11 @@ func main() {
|
||||
}
|
||||
builders[i] = b
|
||||
}
|
||||
|
||||
if *failAll {
|
||||
failMode(builders)
|
||||
return
|
||||
}
|
||||
|
||||
// set up work environment
|
||||
if err := os.RemoveAll(*buildroot); err != nil {
|
||||
@ -161,6 +167,21 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
// go continuous fail mode
|
||||
// check for new commits and FAIL them
|
||||
func failMode(builders []*Builder) {
|
||||
for {
|
||||
built := false
|
||||
for _, b := range builders {
|
||||
built = b.failBuild() || built
|
||||
}
|
||||
// stop if there was nothing to fail
|
||||
if !built {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func NewBuilder(builder string) (*Builder, error) {
|
||||
b := &Builder{name: builder}
|
||||
|
||||
@ -350,6 +371,27 @@ func (b *Builder) buildHash(hash string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// failBuild checks for a new commit for this builder
|
||||
// and fails it if one is found.
|
||||
// It returns true if a build was "attempted".
|
||||
func (b *Builder) failBuild() bool {
|
||||
hash, err := b.todo("build-go-commit", "", "")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return false
|
||||
}
|
||||
if hash == "" {
|
||||
return false
|
||||
}
|
||||
|
||||
log.Printf("fail %s %s\n", b.name, hash)
|
||||
|
||||
if err := b.recordResult(false, "", hash, "", "auto-fail mode run by " + os.Getenv("USER"), 0); err != nil {
|
||||
log.Print(err)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (b *Builder) buildSubrepos(goRoot, goHash string) {
|
||||
for _, pkg := range dashboardPackages("subrepo") {
|
||||
// get the latest todo for this package
|
||||
|
Loading…
Reference in New Issue
Block a user