From ee3fd53a955682a8e8b3d009a0b982e56c3b971f Mon Sep 17 00:00:00 2001 From: Brad Rydzewski Date: Tue, 1 Aug 2017 15:21:46 -0400 Subject: [PATCH] add command to force kill builds --- drone/build/build.go | 1 + drone/build/build_kill.go | 42 +++++++++++++++++++ .../github.com/drone/drone-go/drone/client.go | 7 ++++ .../drone/drone-go/drone/interface.go | 3 ++ vendor/vendor.json | 6 +-- 5 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 drone/build/build_kill.go diff --git a/drone/build/build.go b/drone/build/build.go index e4d6a82..4b42f2a 100644 --- a/drone/build/build.go +++ b/drone/build/build.go @@ -16,5 +16,6 @@ var Command = cli.Command{ buildApproveCmd, buildDeclineCmd, buildQueueCmd, + buildKillCmd, }, } diff --git a/drone/build/build_kill.go b/drone/build/build_kill.go new file mode 100644 index 0000000..68b9162 --- /dev/null +++ b/drone/build/build_kill.go @@ -0,0 +1,42 @@ +package build + +import ( + "fmt" + "strconv" + + "github.com/drone/drone-cli/drone/internal" + "github.com/urfave/cli" +) + +var buildKillCmd = cli.Command{ + Name: "kill", + Usage: "force kill a build", + ArgsUsage: " ", + Action: buildKill, + Hidden: true, +} + +func buildKill(c *cli.Context) (err error) { + repo := c.Args().First() + owner, name, err := internal.ParseRepo(repo) + if err != nil { + return err + } + number, err := strconv.Atoi(c.Args().Get(1)) + if err != nil { + return err + } + + client, err := internal.NewClient(c) + if err != nil { + return err + } + + err = client.BuildKill(owner, name, number) + if err != nil { + return err + } + + fmt.Printf("Force killing build %s/%s#%d\n", owner, name, number) + return nil +} diff --git a/vendor/github.com/drone/drone-go/drone/client.go b/vendor/github.com/drone/drone-go/drone/client.go index 2d336b2..7cf5a43 100644 --- a/vendor/github.com/drone/drone-go/drone/client.go +++ b/vendor/github.com/drone/drone-go/drone/client.go @@ -276,6 +276,13 @@ func (c *client) BuildDecline(owner, name string, num int) (*Build, error) { return out, err } +// BuildKill force kills the running build. +func (c *client) BuildKill(owner, name string, num int) error { + uri := fmt.Sprintf(pathBuild, c.addr, owner, name, num) + err := c.delete(uri) + return err +} + // BuildLogs returns the build logs for the specified job. func (c *client) BuildLogs(owner, name string, num, job int) (io.ReadCloser, error) { return nil, errors.New("Method not implemented") diff --git a/vendor/github.com/drone/drone-go/drone/interface.go b/vendor/github.com/drone/drone-go/drone/interface.go index bcdf7fa..2329aa0 100644 --- a/vendor/github.com/drone/drone-go/drone/interface.go +++ b/vendor/github.com/drone/drone-go/drone/interface.go @@ -72,6 +72,9 @@ type Client interface { // BuildDecline declines a blocked build. BuildDecline(string, string, int) (*Build, error) + // BuildKill force kills the running build. + BuildKill(string, string, int) error + // Deploy triggers a deployment for an existing build using the specified // target environment. Deploy(string, string, int, string, map[string]string) (*Build, error) diff --git a/vendor/vendor.json b/vendor/vendor.json index 73953dc..562e0db 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -273,10 +273,10 @@ "revisionTime": "2017-05-14T17:21:45Z" }, { - "checksumSHA1": "hCvDBLoVfOQBsVFLrJmCE1c2i04=", + "checksumSHA1": "qLAnM1gmgrZfYrGCNE+nKYFrJAY=", "path": "github.com/drone/drone-go/drone", - "revision": "4c3fa553f6b82974aa6c94c46de00b65ed42777b", - "revisionTime": "2017-05-22T22:46:34Z" + "revision": "327c9594f784216a651dbaed30731600e496dd4e", + "revisionTime": "2017-08-01T19:17:01Z" }, { "checksumSHA1": "pjMV8mwWcQ0Kk9cbLWweTGiqYPk=",