private void EventSourceOnBuildFinished(object sender, BuildFinishedEventArgs e) { var submitSuccess = false; try { var logData = _logDataBuilder.Build(); var hasAnyFailure = logData.Annotations.Any() && logData.Annotations.Any(annotation => annotation.AnnotationLevel == AnnotationLevel.Failure); var stringBuilder = new StringBuilder(); stringBuilder.Append(logData.ErrorCount.ToString()); stringBuilder.Append(" "); stringBuilder.Append(logData.ErrorCount == 1 ? "error" : "errors"); stringBuilder.Append(" - "); stringBuilder.Append(logData.WarningCount.ToString()); stringBuilder.Append(" "); stringBuilder.Append(logData.WarningCount == 1 ? "warning" : "warnings"); var createCheckRun = new CreateCheckRun { Annotations = logData.Annotations, Conclusion = !hasAnyFailure ? CheckConclusion.Success : CheckConclusion.Failure, StartedAt = _startedAt, CompletedAt = DateTimeOffset.Now, Summary = logData.Report, Name = _configuration?.Name ?? "MSBuild Log", Title = stringBuilder.ToString(), }; var contents = createCheckRun.ToJson(); var bytes = Encoding.Unicode.GetBytes(contents); submitSuccess = _submissionService.SubmitAsync(bytes, _parameters).Result; } catch (Exception exception) { _environmentProvider.WriteLine(exception.ToString()); } _environmentProvider.WriteLine($"Submission {(submitSuccess ? "Success" : "Failure")}"); }
public void Proces(string inputFile, string outputFile, string cloneRoot, string owner, string repo, string hash, string configurationFile = null) { if (!_fileSystem.File.Exists(inputFile)) { throw new InvalidOperationException($"Input file `{inputFile}` does not exist."); } if (_fileSystem.File.Exists(outputFile)) { throw new InvalidOperationException($"Output file `{outputFile}` already exists."); } CheckRunConfiguration configuration = null; if (configurationFile != null) { if (!_fileSystem.File.Exists(configurationFile)) { throw new InvalidOperationException($"Configuration file `{configurationFile}` does not exist."); } var configurationString = _fileSystem.File.ReadAllText(configurationFile); if (string.IsNullOrWhiteSpace(configurationString)) { throw new InvalidOperationException($"Content of configuration file `{configurationFile}` is null or empty."); } configuration = JsonConvert.DeserializeObject <CheckRunConfiguration>(configurationString, new JsonSerializerSettings { Formatting = Formatting.None, ContractResolver = new CamelCasePropertyNamesContractResolver(), Converters = new List <JsonConverter> { new StringEnumConverter { NamingStrategy = new CamelCaseNamingStrategy() } }, MissingMemberHandling = MissingMemberHandling.Error }); } var dateTimeOffset = DateTimeOffset.Now; var logData = _binaryLogProcessor.ProcessLog(inputFile, cloneRoot, owner, repo, hash, configuration); var hasAnyFailure = logData.Annotations.Any() && logData.Annotations.Any(annotation => annotation.AnnotationLevel == AnnotationLevel.Failure); var stringBuilder = new StringBuilder(); stringBuilder.Append(logData.ErrorCount.ToString()); stringBuilder.Append(" "); stringBuilder.Append(logData.ErrorCount == 1 ? "error": "errors"); stringBuilder.Append(" - "); stringBuilder.Append(logData.WarningCount.ToString()); stringBuilder.Append(" "); stringBuilder.Append(logData.WarningCount == 1 ? "warning" : "warnings"); var createCheckRun = new CreateCheckRun { Annotations = logData.Annotations, Conclusion = !hasAnyFailure ? CheckConclusion.Success : CheckConclusion.Failure, StartedAt = dateTimeOffset, CompletedAt = DateTimeOffset.Now, Summary = logData.Report, Name = configuration?.Name ?? "MSBuild Log", Title = stringBuilder.ToString(), }; var contents = createCheckRun.ToJson(); _fileSystem.File.WriteAllText(outputFile, contents); }