in pkg/event_processor/github/github.go [136:210]
func (p *EventProcessor) processCommentEvent(ctx context.Context, body []byte, ns string) (*event_processor.EventInfo, error) {
event := &github.IssueCommentEvent{}
if err := json.Unmarshal(body, event); err != nil {
return nil, fmt.Errorf("failed to unmarshal GitHub IssueCommentEvent: %w", err)
}
if event.GetAction() != "created" {
return createEventInfoWithoutRecheck(), nil
}
repoPath := event_processor.ConvertRepositoryPath(event.GetRepo().GetFullName())
codebase, err := event_processor.GetCodebaseByRepoPath(ctx, p.ksClient, ns, repoPath)
if err != nil {
return nil, fmt.Errorf("failed to get codebase %s for GitHub IssueCommentEvent: %w", repoPath, err)
}
gitServerToken, err := event_processor.GetGitServerToken(ctx, p.ksClient, codebase)
if err != nil {
return nil, fmt.Errorf("failed to get git server token for GitHub IssueCommentEvent: %w", err)
}
client := p.gitHubClient(ctx, gitServerToken)
pullReq, _, err := client.PullRequests.Get(
ctx,
event.GetRepo().GetOwner().GetLogin(),
event.GetRepo().GetName(),
event.GetIssue().GetNumber(),
)
if err != nil {
if isPRNotFoundErr(err) {
p.logger.Info("GitHub pull request not found")
return createEventInfoWithoutRecheck(), nil
}
return nil, fmt.Errorf("failed to get GitHub pull request: %w", err)
}
if pullReq.GetBase() == nil {
return nil, errors.New("github target branch empty")
}
if pullReq.GetHead() == nil {
return nil, errors.New("github head branch empty")
}
commitMessage, err := p.getCommitMessage(
ctx,
client,
event.GetRepo().GetOwner().GetLogin(),
event.GetRepo().GetName(),
event.GetIssue().GetNumber(),
)
if err != nil {
return nil, err
}
return &event_processor.EventInfo{
GitProvider: event_processor.GitProviderGitHub,
RepoPath: repoPath,
TargetBranch: pullReq.GetBase().GetRef(),
Type: event_processor.EventTypeReviewComment,
HasPipelineRecheck: event_processor.ContainsPipelineRecheck(event.GetComment().GetBody()),
Codebase: codebase,
PullRequest: &event_processor.PullRequest{
HeadRef: pullReq.GetHead().GetRef(),
HeadSha: pullReq.GetHead().GetSHA(),
Title: pullReq.GetTitle(),
ChangeNumber: pullReq.GetNumber(),
LastCommitMessage: commitMessage,
},
}, nil
}