示例#1
0
        /// <inheritdoc/>
        public void WriteError(string message, AzurePipelinesMessageData data)
        {
            var properties = data.GetProperties();

            properties.Add("type", "error");
            WriteLoggingCommand("task.logissue", properties, message);
        }
示例#2
0
        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);
                }
            }
        }
示例#3
0
        /// <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);
                    }
                }
            }
        }