@@ -194,19 +194,30 @@ func handlePullRequestEvent(gitlabProvider utils.GitlabProvider, payload *gitlab
194
194
prNumber := payload .ObjectAttributes .IID
195
195
isDraft := payload .ObjectAttributes .WorkInProgress
196
196
branch := payload .ObjectAttributes .SourceBranch
197
- // commitSha := payload.ObjectAttributes.MergeCommitSHA
197
+ commitSha := payload .ObjectAttributes .LastCommit . ID
198
198
//defaultBranch := payload.Repository.DefaultBranch
199
199
//actor := payload.User.Username
200
- discussionId := ""
200
+ // discussionId := ""
201
201
//action := payload.ObjectAttributes.Action
202
202
203
- glService , glerr := utils .GetGitlabService (gitlabProvider , projectId , repoName , repoFullName , prNumber , discussionId )
203
+ // temp hack: we initialize glService to publish an initial comment and then use that as a discussionId onwards (
204
+ glService , glerr := utils .GetGitlabService (gitlabProvider , projectId , repoName , repoFullName , prNumber , "" )
204
205
if glerr != nil {
205
206
log .Printf ("GetGithubService error: %v" , glerr )
206
207
return fmt .Errorf ("error getting ghService to post error comment" )
207
208
}
209
+ comment , err := glService .PublishComment (prNumber , fmt .Sprintf ("Report for pull request (%v)" , commitSha ))
210
+ discussionId := comment .DiscussionId
208
211
209
- _ , config , projectsGraph , err := utils .GetDiggerConfigForBranch (gitlabProvider , projectId , repoFullName , repoOwner , repoName , cloneURL , branch , prNumber , discussionId )
212
+ log .Printf ("got first discussion id: %v" , discussionId )
213
+ // re-initialize with the right discussion ID
214
+ glService , glerr = utils .GetGitlabService (gitlabProvider , projectId , repoName , repoFullName , prNumber , discussionId )
215
+ if glerr != nil {
216
+ log .Printf ("GetGithubService error: %v" , glerr )
217
+ return fmt .Errorf ("error getting ghService to post error comment" )
218
+ }
219
+
220
+ diggeryamlStr , config , projectsGraph , err := utils .GetDiggerConfigForBranch (gitlabProvider , projectId , repoFullName , repoOwner , repoName , cloneURL , branch , prNumber , discussionId )
210
221
if err != nil {
211
222
log .Printf ("getDiggerConfigForPR error: %v" , err )
212
223
utils .InitCommentReporter (glService , prNumber , fmt .Sprintf (":x: Could not load digger config, error: %v" , err ))
@@ -281,112 +292,85 @@ func handlePullRequestEvent(gitlabProvider utils.GitlabProvider, payload *gitlab
281
292
return nil
282
293
}
283
294
284
- //if !config.AllowDraftPRs && isDraft {
285
- // log.Printf("Draft PRs are disabled, skipping PR: %v", prNumber)
286
- // return nil
287
- //}
288
- //
289
- //commentReporter, err := utils.InitCommentReporter(glService, prNumber, ":construction_worker: Digger starting...")
290
- //if err != nil {
291
- // log.Printf("Error initializing comment reporter: %v", err)
292
- // return fmt.Errorf("error initializing comment reporter")
293
- //}
294
- //
295
- //err = utils.ReportInitialJobsStatus(commentReporter, jobsForImpactedProjects)
296
- //if err != nil {
297
- // log.Printf("Failed to comment initial status for jobs: %v", err)
298
- // utils.InitCommentReporter(glService, prNumber, fmt.Sprintf(":x: Failed to comment initial status for jobs: %v", err))
299
- // return fmt.Errorf("failed to comment initial status for jobs")
300
- //}
301
- //
302
- //err = utils.SetPRStatusForJobs(glService, prNumber, jobsForImpactedProjects)
303
- //if err != nil {
304
- // log.Printf("error setting status for PR: %v", err)
305
- // utils.InitCommentReporter(glService, prNumber, fmt.Sprintf(":x: error setting status for PR: %v", err))
306
- // fmt.Errorf("error setting status for PR: %v", err)
307
- //}
308
- //
309
- //impactedProjectsMap := make(map[string]dg_configuration.Project)
310
- //for _, p := range impactedProjects {
311
- // impactedProjectsMap[p.Name] = p
312
- //}
313
- //
314
- //impactedJobsMap := make(map[string]scheduler.Job)
315
- //for _, j := range jobsForImpactedProjects {
316
- // impactedJobsMap[j.ProjectName] = j
317
- //}
318
- //
319
- //commentId, err := strconv.ParseInt(commentReporter.CommentId, 10, 64)
320
- //if err != nil {
321
- // log.Printf("strconv.ParseInt error: %v", err)
322
- // utils.InitCommentReporter(glService, prNumber, fmt.Sprintf(":x: could not handle commentId: %v", err))
323
- //}
324
- //batchId, _, err := utils.ConvertJobsToDiggerJobs(*diggerCommand, models.DiggerVCSGitlab, organisationId, impactedJobsMap, impactedProjectsMap, projectsGraph, 0, branch, prNumber, repoOwner, repoName, repoFullName, commitSha, commentId, diggerYmlStr)
325
- //if err != nil {
326
- // log.Printf("ConvertJobsToDiggerJobs error: %v", err)
327
- // utils.InitCommentReporter(glService, prNumber, fmt.Sprintf(":x: ConvertJobsToDiggerJobs error: %v", err))
328
- // return fmt.Errorf("error converting jobs")
329
- //}
330
- //
331
- //if config.CommentRenderMode == dg_configuration.CommentRenderModeGroupByModule {
332
- // sourceDetails, err := comment_updater.PostInitialSourceComments(glService, prNumber, impactedProjectsSourceMapping)
333
- // if err != nil {
334
- // log.Printf("PostInitialSourceComments error: %v", err)
335
- // utils.InitCommentReporter(glService, prNumber, fmt.Sprintf(":x: PostInitialSourceComments error: %v", err))
336
- // return fmt.Errorf("error posting initial comments")
337
- // }
338
- // batch, err := models.DB.GetDiggerBatch(batchId)
339
- // if err != nil {
340
- // log.Printf("GetDiggerBatch error: %v", err)
341
- // utils.InitCommentReporter(glService, prNumber, fmt.Sprintf(":x: PostInitialSourceComments error: %v", err))
342
- // return fmt.Errorf("error getting digger batch")
343
- // }
344
- // batch.SourceDetails, err = json.Marshal(sourceDetails)
345
- // if err != nil {
346
- // log.Printf("sourceDetails, json Marshal error: %v", err)
347
- // utils.InitCommentReporter(glService, prNumber, fmt.Sprintf(":x: json Marshal error: %v", err))
348
- // return fmt.Errorf("error marshalling sourceDetails")
349
- // }
350
- // err = models.DB.UpdateDiggerBatch(batch)
351
- // if err != nil {
352
- // log.Printf("UpdateDiggerBatch error: %v", err)
353
- // utils.InitCommentReporter(glService, prNumber, fmt.Sprintf(":x: UpdateDiggerBatch error: %v", err))
354
- // return fmt.Errorf("error updating digger batch")
355
- // }
356
- //}
295
+ if ! config .AllowDraftPRs && isDraft {
296
+ log .Printf ("Draft PRs are disabled, skipping PR: %v" , prNumber )
297
+ return nil
298
+ }
357
299
358
- //segment.Track(strconv.Itoa(int(organisationId)), "backend_trigger_job")
359
- //
360
- //ciBackend, err := ciBackendProvider.GetCiBackend(
361
- // ci_backends.CiBackendOptions{
362
- // RepoName: repoName,
363
- // RepoOwner: repoOwner,
364
- // RepoFullName: repoFullName,
365
- // GitlabProjectId: projectId,
366
- // GitlabCIMergeRequestID: payload.ObjectAttributes.ID,
367
- // GitlabCIMergeRequestIID: payload.ObjectAttributes.IID,
368
- // GitlabciprojectId: payload.Project.ID,
369
- // GitlabciprojectNamespace: payload.Project.Namespace,
370
- // //GitlabciprojectNamespaceId: 0,
371
- // GitlabmergeRequestEventName: payload.EventType,
372
- // //GitlabCIPipelineID: ,
373
- // //GitlabCIPipelineIID: "",
374
- // GitlabCIProjectName: payload.Project.Name,
375
- // GitlabDiscussionId: discussionId,
376
- // },
377
- //)
378
- //if err != nil {
379
- // log.Printf("GetCiBackend error: %v", err)
380
- // utils.InitCommentReporter(glService, prNumber, fmt.Sprintf(":x: GetCiBackend error: %v", err))
381
- // return fmt.Errorf("error fetching ci backed %v", err)
382
- //}
383
- //
384
- //err = controllers.TriggerDiggerJobs(ciBackend, repoFullName, repoOwner, repoName, batchId, prNumber, glService)
385
- //if err != nil {
386
- // log.Printf("TriggerDiggerJobs error: %v", err)
387
- // utils.InitCommentReporter(glService, prNumber, fmt.Sprintf(":x: TriggerDiggerJobs error: %v", err))
388
- // return fmt.Errorf("error triggerring Digger Jobs")
389
- //}
300
+ commentReporter , err := utils .InitCommentReporter (glService , prNumber , ":construction_worker: Digger starting..." )
301
+ if err != nil {
302
+ log .Printf ("Error initializing comment reporter: %v" , err )
303
+ return fmt .Errorf ("error initializing comment reporter" )
304
+ }
305
+
306
+ err = utils .ReportInitialJobsStatus (commentReporter , jobsForImpactedProjects )
307
+ if err != nil {
308
+ log .Printf ("Failed to comment initial status for jobs: %v" , err )
309
+ utils .InitCommentReporter (glService , prNumber , fmt .Sprintf (":x: Failed to comment initial status for jobs: %v" , err ))
310
+ return fmt .Errorf ("failed to comment initial status for jobs" )
311
+ }
312
+
313
+ err = utils .SetPRStatusForJobs (glService , prNumber , jobsForImpactedProjects )
314
+ if err != nil {
315
+ log .Printf ("error setting status for PR: %v" , err )
316
+ utils .InitCommentReporter (glService , prNumber , fmt .Sprintf (":x: error setting status for PR: %v" , err ))
317
+ fmt .Errorf ("error setting status for PR: %v" , err )
318
+ }
319
+
320
+ impactedProjectsMap := make (map [string ]dg_configuration.Project )
321
+ for _ , p := range impactedProjects {
322
+ impactedProjectsMap [p .Name ] = p
323
+ }
324
+
325
+ impactedJobsMap := make (map [string ]scheduler.Job )
326
+ for _ , j := range jobsForImpactedProjects {
327
+ impactedJobsMap [j .ProjectName ] = j
328
+ }
329
+
330
+ commentId , err := strconv .ParseInt (commentReporter .CommentId , 10 , 64 )
331
+ if err != nil {
332
+ log .Printf ("strconv.ParseInt error: %v" , err )
333
+ utils .InitCommentReporter (glService , prNumber , fmt .Sprintf (":x: could not handle commentId: %v" , err ))
334
+ }
335
+ batchId , _ , err := utils .ConvertJobsToDiggerJobs (* diggerCommand , models .DiggerVCSGitlab , organisationId , impactedJobsMap , impactedProjectsMap , projectsGraph , 0 , branch , prNumber , repoOwner , repoName , repoFullName , commitSha , commentId , diggeryamlStr , projectId )
336
+ if err != nil {
337
+ log .Printf ("ConvertJobsToDiggerJobs error: %v" , err )
338
+ utils .InitCommentReporter (glService , prNumber , fmt .Sprintf (":x: ConvertJobsToDiggerJobs error: %v" , err ))
339
+ return fmt .Errorf ("error converting jobs" )
340
+ }
341
+
342
+ segment .Track (strconv .Itoa (int (organisationId )), "backend_trigger_job" )
343
+
344
+ ciBackend , err := ciBackendProvider .GetCiBackend (
345
+ ci_backends.CiBackendOptions {
346
+ RepoName : repoName ,
347
+ RepoOwner : repoOwner ,
348
+ RepoFullName : repoFullName ,
349
+ GitlabProjectId : projectId ,
350
+ GitlabCIMergeRequestID : payload .ObjectAttributes .ID ,
351
+ GitlabCIMergeRequestIID : payload .ObjectAttributes .IID ,
352
+ GitlabciprojectId : payload .Project .ID ,
353
+ GitlabciprojectNamespace : payload .Project .Namespace ,
354
+ //GitlabciprojectNamespaceId: 0,
355
+ GitlabmergeRequestEventName : payload .EventType ,
356
+ //GitlabCIPipelineID: ,
357
+ //GitlabCIPipelineIID: "",
358
+ GitlabCIProjectName : payload .Project .Name ,
359
+ GitlabDiscussionId : discussionId ,
360
+ },
361
+ )
362
+ if err != nil {
363
+ log .Printf ("GetCiBackend error: %v" , err )
364
+ utils .InitCommentReporter (glService , prNumber , fmt .Sprintf (":x: GetCiBackend error: %v" , err ))
365
+ return fmt .Errorf ("error fetching ci backed %v" , err )
366
+ }
367
+
368
+ err = controllers .TriggerDiggerJobs (ciBackend , repoFullName , repoOwner , repoName , batchId , prNumber , glService , nil )
369
+ if err != nil {
370
+ log .Printf ("TriggerDiggerJobs error: %v" , err )
371
+ utils .InitCommentReporter (glService , prNumber , fmt .Sprintf (":x: TriggerDiggerJobs error: %v" , err ))
372
+ return fmt .Errorf ("error triggering Digger Jobs" )
373
+ }
390
374
391
375
return nil
392
376
}
0 commit comments