in pkg/event_processor/github/github.go [72:132]
func (p *EventProcessor) processMergeEvent(ctx context.Context, body []byte, ns string) (*event_processor.EventInfo, error) {
gitHubEvent := &github.PullRequestEvent{}
if err := json.Unmarshal(body, gitHubEvent); err != nil {
return nil, fmt.Errorf("failed to unmarshal GitHub event: %w", err)
}
if gitHubEvent.Repo == nil || gitHubEvent.Repo.FullName == nil || *gitHubEvent.Repo.FullName == "" {
return nil, errors.New("github repository path empty")
}
if gitHubEvent.PullRequest == nil ||
gitHubEvent.PullRequest.Base == nil ||
gitHubEvent.PullRequest.Base.Ref == nil ||
*gitHubEvent.PullRequest.Base.Ref == "" {
return nil, errors.New("github target branch empty")
}
if gitHubEvent.GetPullRequest().GetHead() == nil {
return nil, errors.New("github head branch empty")
}
repoPath := event_processor.ConvertRepositoryPath(*gitHubEvent.Repo.FullName)
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 PullRequestEvent: %w", err)
}
client := p.gitHubClient(ctx, gitServerToken)
commitMessage, err := p.getCommitMessage(
ctx,
client,
gitHubEvent.GetRepo().GetOwner().GetLogin(),
gitHubEvent.GetRepo().GetName(),
gitHubEvent.GetNumber(),
)
if err != nil {
return nil, err
}
return &event_processor.EventInfo{
GitProvider: event_processor.GitProviderGitHub,
RepoPath: repoPath,
TargetBranch: *gitHubEvent.PullRequest.Base.Ref,
Codebase: codebase,
Type: event_processor.EventTypeMerge,
PullRequest: &event_processor.PullRequest{
HeadRef: gitHubEvent.GetPullRequest().GetHead().GetRef(),
HeadSha: gitHubEvent.GetPullRequest().GetHead().GetSHA(),
Title: gitHubEvent.GetPullRequest().GetTitle(),
ChangeNumber: gitHubEvent.GetNumber(),
LastCommitMessage: commitMessage,
},
}, nil
}