public async Task RunAsync() { var prBuild = await _teamcityService.GetTeamCityBuild(_buildId); var prNumber = GetBranchId(prBuild.BranchName); if (!prNumber.HasValue) { Console.WriteLine("This build is not for a pull request"); return; } var github = new GithubApi(_gitToken); foreach (var configs in _configs) { var parts = configs.Split(':'); var oldConfiguration = parts[0]; var newConfiguration = parts[1]; var oldBuildType = await _teamcityService.GetTeamCityBuildType(oldConfiguration); var newBuildUrl = await _teamcityService.GetTeamCityLastBuildUrlOfBuildType(newConfiguration); await github.SetStatusCheckAsync(prBuild.Revisions.Revision.First().Version, new StatusCheck { State = StatusCheckType.success, TargetUrl = newBuildUrl, Description = "Deprecated - This check has been replaced by a daily build", Context = $"{oldBuildType.Name} ({oldBuildType.Project.Name})" }); } }
private async Task CheckDerivationStatus(PullRequest pullRequest, DateTime now, string buildUrl) { Console.WriteLine($"Checking status for pull request \"{pullRequest.Title}\""); var commit = await _git.GetCommonAncestorWithDevelop(pullRequest.Head.Commit); if (string.IsNullOrEmpty(commit)) { Console.WriteLine("Could not retrieve ancestor commit"); return; } pullRequest.LastDevelopCommit = commit; Console.WriteLine($"Common ancestor is commit {commit}"); var commitDate = await _git.GetCommitDate(commit); if (!commitDate.HasValue) { Console.WriteLine("Could not retrieve commit date"); return; } pullRequest.LastDevelopMerge = commitDate; Console.WriteLine($"This commit dates from {commitDate.Value:f}"); var isUpToDate = commitDate.Value >= GetTimeLimit(now); var status = new StatusCheck { TargetUrl = buildUrl, Context = "Recent merge from develop" }; if (isUpToDate) { Console.WriteLine($" \"{pullRequest.Title}\" is up to date"); status.State = StatusCheckType.success; status.Description = "The branch contains a recent version of develop"; } else { var span = now - commitDate.Value; Console.WriteLine($" \"{pullRequest.Title}\" derived for more than {span.Days} days"); status.State = StatusCheckType.failure; status.Description = $"The branch derived from develop for more than {span.Days} days"; } if (!_dryRun) { await _github.SetStatusCheckAsync(pullRequest.Head.Commit, status); } }