led: improvements in led get-build subcommand.
1. Support buildbucekt ID copied from MILO URL which has "b" prefix.
Thus the following two commands are the same:
$ led get-build b123
$ led get-build 123
2. ... and don't panic with nullptr deref if build=123 doesn't exist,
but print error returned by buildbucket instead.
R=iannucci@chromium.org
Bug:
Change-Id: I9e8482100f3091a2a45a5ac49b0c4f2bc418924a
Reviewed-on: https://chromium-review.googlesource.com/777989
Commit-Queue: Andrii Shyshkalov <tandrii@chromium.org>
Reviewed-by: Robbie Iannucci <iannucci@chromium.org>
diff --git a/go/src/infra/tools/led/cmd_get_build.go b/go/src/infra/tools/led/cmd_get_build.go
index 0285439..65cf228 100644
--- a/go/src/infra/tools/led/cmd_get_build.go
+++ b/go/src/infra/tools/led/cmd_get_build.go
@@ -26,7 +26,10 @@
return &subcommands.Command{
UsageLine: "get-build <buildbucket_build_id>",
ShortDesc: "obtain a JobDefinition from a buildbucket build",
- LongDesc: `Obtains the build's definition from buildbucket and produces a JobDefinition.`,
+ LongDesc: `Obtains the build's definition from buildbucket and produces a JobDefinition.
+
+buildbucket_build_id can be specified with "b" prefix like b8962624445013664976,
+which is useful when copying it from ci.chromium.org URL.`,
CommandRun: func() subcommands.CommandRun {
ret := &cmdGetBuild{}
@@ -67,7 +70,12 @@
return
}
- if c.buildID, err = strconv.ParseInt(args[0], 10, 64); err != nil {
+ buildIdStr := args[0]
+ if strings.HasPrefix(buildIdStr, "b") {
+ // Milo URL structure prefixes buildbucket builds id with "b".
+ buildIdStr = args[0][1:]
+ }
+ if c.buildID, err = strconv.ParseInt(buildIdStr, 10, 64); err != nil {
err = errors.Annotate(err, "bad <buildbucket_build_id>").Err()
return
}
@@ -92,6 +100,9 @@
if err != nil {
return transient.Tag.Apply(err)
}
+ if answer.Error != nil {
+ return errors.New(answer.Error.Reason)
+ }
logging.Infof(ctx, "getting build definition: done")
swarmingTaskID := ""