From ef107dae7193bb0472a2661979e189c87e255998 Mon Sep 17 00:00:00 2001 From: Cameron Palone Date: Wed, 26 Aug 2015 13:04:38 -0600 Subject: [PATCH 1/7] Record SHA for PRs so we can attach CI results. --- github.go | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/github.go b/github.go index 83eebcc..f37781a 100644 --- a/github.go +++ b/github.go @@ -88,7 +88,7 @@ func (s *Session) hookServer(port int, secret string, sendReplyChan chan PacketE panic("Malformed *PullRequestEvent.") } action := payload.Action - if action == "synced" { + if action == "synchronize" { action = "New commits made to synced branch." } msg := fmt.Sprintf(":pencil: [ %s | PR: %s ] %s (%s)", @@ -97,8 +97,28 @@ func (s *Session) hookServer(port int, secret string, sendReplyChan chan PacketE action, payload.PullRequest.HTMLURL, ) - s.sendMessage(msg, "", strconv.Itoa(s.msgID)) s.msgID++ + t := strconv.Itoa(int(time.Now().Unix())) + s.waiting = true + s.sendMessage(msg, "", t) + var reply PacketEvent + for s.waiting { + reply = <-sendReplyChan + if reply.ID == t { + s.waiting = false + } + } + srPayload, err := reply.Payload() + if err != nil { + s.logger.Fatalln(err) + } + + // need send-reply for msgID to reply to + data, ok := srPayload.(*SendReply) + if !ok { + s.logger.Fatalln("Could not assert *SendReply as such.") + } + s.commitParent[payload.PullRequest.Head.SHA] = data.ID case gohook.PullRequestReviewCommentEventType: payload, ok := et.Event.(*gohook.PullRequestReviewCommentEvent) if !ok { From 37d1353f95182f2a0d40e3ca0338e324296e7e57 Mon Sep 17 00:00:00 2001 From: Cameron Palone Date: Fri, 4 Sep 2015 10:51:47 -0600 Subject: [PATCH 2/7] Add notification on ping. --- github.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/github.go b/github.go index f37781a..1ee4cbf 100644 --- a/github.go +++ b/github.go @@ -191,6 +191,14 @@ func (s *Session) hookServer(port int, secret string, sendReplyChan chan PacketE s.logger.Fatalln("Could not assert *SendReply as such.") } s.commitParent[payload.HeadCommit.ID] = data.ID + case gohook.PingEventType: + payload, ok := et.Event.(*gohook.PingEvent) + if !ok { + panic("Malformed *PingEvent") + } + s.sendMessage("[ Github Webhook | ping ]", "", strconv.Itoa(s.msgID)) + s.msgID++ } + } } From 4d8ff88523f390007ca0a8d3f801505db4d471a4 Mon Sep 17 00:00:00 2001 From: Cameron Palone Date: Wed, 7 Oct 2015 12:21:38 -0600 Subject: [PATCH 3/7] Don't exit on empty commit, continue instead --- github.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github.go b/github.go index 1ee4cbf..8549d94 100644 --- a/github.go +++ b/github.go @@ -151,7 +151,7 @@ func (s *Session) hookServer(port int, secret string, sendReplyChan chan PacketE panic("Malformed *PushEvent.") } if payload.HeadCommit.Message == "" { - return + continue } var msg string if len(payload.Commits) > 1 { From 70f11dc6629f9462bc3c2df6f094cf48753c41a6 Mon Sep 17 00:00:00 2001 From: "M. Cameron Palone" Date: Wed, 7 Oct 2015 19:38:37 +0000 Subject: [PATCH 4/7] Send a message when a ping is received. --- github.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/github.go b/github.go index 8549d94..1d419f6 100644 --- a/github.go +++ b/github.go @@ -19,8 +19,6 @@ func (s *Session) hookServer(port int, secret string, sendReplyChan chan PacketE et := <-gServer.EventAndTypes s.logger.Infof("Received hook event of type '%s'.", et.Type) switch et.Type { - case gohook.PingEventType: - continue case gohook.CommitCommentEventType: payload, ok := et.Event.(*gohook.CommitCommentEvent) if !ok { @@ -192,10 +190,10 @@ func (s *Session) hookServer(port int, secret string, sendReplyChan chan PacketE } s.commitParent[payload.HeadCommit.ID] = data.ID case gohook.PingEventType: - payload, ok := et.Event.(*gohook.PingEvent) - if !ok { - panic("Malformed *PingEvent") - } + //payload, ok := et.Event.(*gohook.PingEvent) + //if !ok { + // panic("Malformed *PingEvent") + //} s.sendMessage("[ Github Webhook | ping ]", "", strconv.Itoa(s.msgID)) s.msgID++ } From b495ca5381198871b0957dcaf5fe3c4a3d8ab197 Mon Sep 17 00:00:00 2001 From: Cameron Palone Date: Mon, 9 Nov 2015 14:25:02 -0700 Subject: [PATCH 5/7] Update to use new drone payload. --- ci.go | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/ci.go b/ci.go index b9f50eb..7846340 100644 --- a/ci.go +++ b/ci.go @@ -40,27 +40,22 @@ func (s *Session) ciHandler() error { s.msgID++ case p := <-dServer.Out: var parent string - parent, ok := s.commitParent[p.Commit.SHA] + parent, ok := s.commitParent[p.Build.Ref] if !ok { parent = "" } var emoji string - if p.Commit.Status == "Success" { + if p.Build.Status == "Success" { emoji = ":white_check_mark:" } else { emoji = ":no_entry:" } // https://drone.in.euphoria.io/github.com/euphoria-io/heim/master/b816f23ec209d6f6d2f99788515329099e3d92d0 - url := fmt.Sprintf("drone.in.euphoria.io/%s/%s/%s/%s/%s", - p.Repository.Host, - p.Repository.Owner, - p.Repository.Name, - p.Commit.Branch, - p.Commit.SHA) + url := p.Build.LinkURL str := fmt.Sprintf("%s [ drone.io | %s | Branch: %s ] (%s)", emoji, - p.Repository.Name, - p.Commit.Branch, + p.Repo.Name, + p.Build.Branch, url, ) s.sendMessage(str, From 086041b844a40ef65ed043d719f67e30d2137b80 Mon Sep 17 00:00:00 2001 From: Cameron Palone Date: Mon, 9 Nov 2015 15:04:22 -0700 Subject: [PATCH 6/7] Change URL to new format and fix commit association. --- ci.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ci.go b/ci.go index 7846340..beb89dc 100644 --- a/ci.go +++ b/ci.go @@ -40,18 +40,22 @@ func (s *Session) ciHandler() error { s.msgID++ case p := <-dServer.Out: var parent string - parent, ok := s.commitParent[p.Build.Ref] + parent, ok := s.commitParent[p.Build.Commit] if !ok { parent = "" } var emoji string - if p.Build.Status == "Success" { + if p.Build.Status == "success" { emoji = ":white_check_mark:" } else { emoji = ":no_entry:" } - // https://drone.in.euphoria.io/github.com/euphoria-io/heim/master/b816f23ec209d6f6d2f99788515329099e3d92d0 - url := p.Build.LinkURL + // https://drone.in.euphoria.io/euphoria-io/heim/77 + url := fmt.Sprintf("drone.in.euphoria.io/%s/%s/%s", + p.Repo.Name, + p.Build.Branch, + p.Build.Number, + ) str := fmt.Sprintf("%s [ drone.io | %s | Branch: %s ] (%s)", emoji, p.Repo.Name, From a3a4006d1ff8f7070b5c4f07e0195626bd3df3f6 Mon Sep 17 00:00:00 2001 From: Cameron Palone Date: Mon, 9 Nov 2015 16:24:17 -0700 Subject: [PATCH 7/7] Change URL formatting code from string to integer. --- ci.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci.go b/ci.go index beb89dc..9085b80 100644 --- a/ci.go +++ b/ci.go @@ -51,7 +51,7 @@ func (s *Session) ciHandler() error { emoji = ":no_entry:" } // https://drone.in.euphoria.io/euphoria-io/heim/77 - url := fmt.Sprintf("drone.in.euphoria.io/%s/%s/%s", + url := fmt.Sprintf("drone.in.euphoria.io/%s/%s/%v", p.Repo.Name, p.Build.Branch, p.Build.Number,