public async Task HandleGithubPullRequestEvent(int projectId, PullRequestGithubPayloadDTO payload) { //Github fire pull_request event on every activity with pull requests //Next line filter only closed pull requests, which was merged if (payload.Action != "closed" || payload.Pull_Request?.Merged_At == null) { return; } var updatedBranch = payload.Pull_Request.Base.Ref; var triggers = await _projectService.GetProjectRemoteTriggers(projectId); var pullRequestTrigger = triggers.FirstOrDefault(t => (t.Type == RemoteTriggerType.PullRequest || t.Type == RemoteTriggerType.All) && t.Branch == updatedBranch); if (pullRequestTrigger == null) { return; } var rebuild = await _builder.PrepareBuild(projectId, payload.Sender.Login, updatedBranch); await _builder.StartBuild(projectId, rebuild.Id, updatedBranch, (await _projectService.GetAsync(projectId)).OwnerId); }
public async Task GithubWebhookPullRequestCallback(int projectId, [FromBody] PullRequestGithubPayloadDTO payload) { await _handler.HandleGithubPullRequestEvent(projectId, payload); }