/// <inheritdoc/> public void WriteError(string message, AzurePipelinesMessageData data) { var properties = data.GetProperties(); properties.Add("type", "error"); WriteLoggingCommand("task.logissue", properties, message); }
private static void ReportBuildIssues(Context context, params FilePath[] logFilePaths) { if (!context.IsRunningInCI) { return; } // TODO: when Cake.Issues.Recipe is updated to support Frosting, we can switch to their more robust issue processing and reporting features var issueProviders = logFilePaths.Select(logFilePath => context.MsBuildIssuesFromFilePath(logFilePath, context.MsBuildBinaryLogFileFormat())); foreach (var issue in context.ReadIssues(issueProviders, context.Environment.WorkingDirectory)) { var messageData = new AzurePipelinesMessageData { SourcePath = issue.AffectedFileRelativePath?.FullPath, LineNumber = issue.Line, }; if (issue.Priority == (int)IssuePriority.Error) { context.AzurePipelines().Commands.WriteError(issue.MessageText, messageData); } else { context.AzurePipelines().Commands.WriteWarning(issue.MessageText, messageData); } } }
/// <inheritdoc/> public override void Run(Context context) { // TODO: when Cake.Issues.MsBuild is updated to support Binary Log version 9, can use .EnableBinaryLogger() instead of .WithLogger(…) // TODO: also can remove the .InstallTool(…) call for Cake.Issues.MsBuild in Program.cs at that point var cleanLog = context.ArtifactsDir.Path.CombineWithFilePath("clean.binlog"); var buildLog = context.ArtifactsDir.Path.CombineWithFilePath("rebuild.binlog"); try { var cleanSettings = CreateMsBuildSettings(context, cleanLog).WithTarget("Clean"); context.MSBuild(context.DnnSolutionPath, cleanSettings); var buildSettings = CreateMsBuildSettings(context, buildLog) .SetPlatformTarget(PlatformTarget.MSIL) .WithTarget("Rebuild") .WithProperty("SourceLinkCreate", "true"); context.MSBuild(context.DnnSolutionPath, buildSettings); } finally { var issues = context.ReadIssues( new List <IIssueProvider> { new MsBuildIssuesProvider( context.Log, new MsBuildIssuesSettings(cleanLog, context.MsBuildBinaryLogFileFormat())), new MsBuildIssuesProvider( context.Log, new MsBuildIssuesSettings(buildLog, context.MsBuildBinaryLogFileFormat())), }, context.Directory(".")); foreach (var issue in issues) { var messageData = new AzurePipelinesMessageData { SourcePath = issue.AffectedFileRelativePath?.FullPath, LineNumber = issue.Line, }; if (string.Equals(issue.PriorityName, "Error", StringComparison.Ordinal)) { context.AzurePipelines().Commands.WriteError(issue.MessageText, messageData); } else { context.AzurePipelines().Commands.WriteWarning(issue.MessageText, messageData); } } } }