// Munge is the workhorse the will actually make updates to the PR func (PingCIMunger) Munge(obj *github.MungeObject) { if !obj.IsPR() { return } if !obj.HasLabel("lgtm") { return } mergeable, err := obj.IsMergeable() if err != nil { glog.V(2).Infof("Skipping %d - problem determining mergeability", *obj.Issue.Number) return } if !mergeable { glog.V(2).Infof("Skipping %d - not mergeable", *obj.Issue.Number) return } if state := obj.GetStatusState([]string{jenkinsCIContext, travisContext}); state != "incomplete" { glog.V(2).Info("Have %s status - skipping ping CI", jenkinsCIContext) return } state := obj.GetStatusState([]string{shippableContext, travisContext}) if state == "incomplete" { msg := "Continuous integration appears to have missed, closing and re-opening to trigger it" obj.WriteComment(msg) obj.ClosePR() time.Sleep(5 * time.Second) obj.OpenPR(10) } }
// Munge is the workhorse the will actually make updates to the PR func (PingCIMunger) Munge(obj *github.MungeObject) { if !obj.IsPR() { return } // This munger only runs on certain branches, since travis/CI only listens // on certain branches validBranch := false for _, b := range validBranches { if obj.IsForBranch(b) { validBranch = true break } } if !validBranch { return } if !obj.HasLabel(lgtmLabel) { return } mergeable, err := obj.IsMergeable() if err != nil { glog.V(2).Infof("ping CI skipping %d - problem determining mergeability", *obj.Issue.Number) return } if !mergeable { glog.V(2).Infof("ping CI skipping %d - not mergeable", *obj.Issue.Number) return } if state := obj.GetStatusState([]string{travisContext}); state == "incomplete" { msg := "Travis continuous integration appears to have missed, closing and re-opening to trigger it" obj.WriteComment(msg) obj.ClosePR() time.Sleep(5 * time.Second) obj.OpenPR(10) } }