@@ -6,16 +6,6 @@ import (
66 "encoding/json"
77 "errors"
88 "fmt"
9- "log"
10- "math/rand"
11- "net/http"
12- "net/url"
13- "os"
14- "path"
15- "reflect"
16- "strconv"
17- "strings"
18-
199 "github.com/diggerhq/digger/backend/ci_backends"
2010 "github.com/diggerhq/digger/backend/locking"
2111 "github.com/diggerhq/digger/backend/segment"
@@ -27,6 +17,15 @@ import (
2717 orchestrator_scheduler "github.com/diggerhq/digger/libs/scheduler"
2818 "github.com/google/uuid"
2919 "gorm.io/gorm"
20+ "log"
21+ "math/rand"
22+ "net/http"
23+ "net/url"
24+ "os"
25+ "path"
26+ "reflect"
27+ "strconv"
28+ "strings"
3029
3130 "github.com/diggerhq/digger/backend/middleware"
3231 "github.com/diggerhq/digger/backend/models"
@@ -96,35 +95,16 @@ func (d DiggerController) GithubAppWebHook(c *gin.Context) {
9695 c .String (http .StatusOK , "OK" )
9796 return
9897 }
99- err = handleIssueCommentEvent (gh , event , d .CiBackendProvider , appId64 )
100- if err != nil {
101- log .Printf ("handleIssueCommentEvent error: %v" , err )
102- c .String (http .StatusAccepted , err .Error ())
103- return
104- }
105-
106- log .Printf ("executing issue comment event post hooks:" )
107- for _ , hook := range d .GithubWebhookPostIssueCommentHooks {
108- err := hook (gh , event , d .CiBackendProvider )
109- if err != nil {
110- log .Printf ("handleIssueCommentEvent post hook error: %v" , err )
111- c .String (http .StatusAccepted , err .Error ())
112- return
113- }
114- }
98+ handleIssueCommentEvent (gh , event , d .CiBackendProvider , appId64 , d .GithubWebhookPostIssueCommentHooks )
11599 case * github.PullRequestEvent :
116100 log .Printf ("Got pull request event for %d" , * event .PullRequest .ID )
117- err = handlePullRequestEvent (gh , event , d .CiBackendProvider , appId64 )
118- if err != nil {
119- log .Printf ("handlePullRequestEvent error: %v" , err )
120- c .String (http .StatusAccepted , err .Error ())
121- return
122- }
101+ // run it as a goroutine to avoid timeouts
102+ go handlePullRequestEvent (gh , event , d .CiBackendProvider , appId64 )
123103 default :
124104 log .Printf ("Unhandled event, event type %v" , reflect .TypeOf (event ))
125105 }
126106
127- c .JSON (200 , "ok" )
107+ c .JSON (http . StatusAccepted , "ok" )
128108}
129109
130110func GithubAppSetup (c * gin.Context ) {
@@ -641,7 +621,7 @@ func getBatchType(jobs []orchestrator_scheduler.Job) orchestrator_scheduler.Digg
641621 }
642622}
643623
644- func handleIssueCommentEvent (gh utils.GithubClientProvider , payload * github.IssueCommentEvent , ciBackendProvider ci_backends.CiBackendProvider , appId int64 ) error {
624+ func handleIssueCommentEvent (gh utils.GithubClientProvider , payload * github.IssueCommentEvent , ciBackendProvider ci_backends.CiBackendProvider , appId int64 , postCommentHooks [] IssueCommentHook ) error {
645625 installationId := * payload .Installation .ID
646626 repoName := * payload .Repo .Name
647627 repoOwner := * payload .Repo .Owner .Login
@@ -871,6 +851,15 @@ func handleIssueCommentEvent(gh utils.GithubClientProvider, payload *github.Issu
871851 commentReporterManager .UpdateComment (fmt .Sprintf (":x: TriggerDiggerJobs error: %v" , err ))
872852 return fmt .Errorf ("error triggering Digger Jobs" )
873853 }
854+
855+ log .Printf ("executing issue comment event post hooks:" )
856+ for _ , hook := range postCommentHooks {
857+ err := hook (gh , payload , ciBackendProvider )
858+ if err != nil {
859+ log .Printf ("handleIssueCommentEvent post hook error: %v" , err )
860+ return fmt .Errorf ("error during postevent hooks: %v" , err )
861+ }
862+ }
874863 return nil
875864}
876865
0 commit comments