Skip to content

Commit 09c7ce5

Browse files
authored
Merge pull request #113 from nils-a/release/4.1.0
Release/4.1.0
2 parents 6eac904 + 9f83f03 commit 09c7ce5

3 files changed

Lines changed: 94 additions & 33 deletions

File tree

src/Cake.AzurePipelines.Module/AzurePipelinesEngine.cs

Lines changed: 62 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.Collections.Generic;
33
using System.Linq;
44
using Cake.Common.Build;
@@ -24,17 +24,54 @@ public sealed class AzurePipelinesEngine : CakeEngineBase
2424
public AzurePipelinesEngine(ICakeDataService dataService, ICakeLog log)
2525
: base(new CakeEngine(dataService, log))
2626
{
27-
_engine.BeforeSetup += BuildSetup;
28-
_engine.BeforeTaskSetup += OnTaskSetup;
29-
_engine.BeforeTaskTeardown += OnTaskTeardown;
30-
_engine.BeforeTeardown += OnBuildTeardown;
27+
_log = log;
28+
_engine.BeforeSetup += OnBeforeSetup;
29+
_engine.AfterSetup += OnAfterSetup;
30+
31+
_engine.BeforeTaskSetup += OnBeforeTaskSetup;
32+
33+
_engine.BeforeTaskTeardown += OnBeforeTaskTeardown;
34+
35+
_engine.AfterTaskTeardown += OnAfterTaskTeardown;
36+
37+
_engine.BeforeTeardown += OnBeforeTeardown;
38+
_engine.AfterTeardown += OnAfterTeardown;
39+
}
40+
41+
private void OnAfterTaskTeardown(object sender, AfterTaskTeardownEventArgs e)
42+
{
43+
var b = e.TaskTeardownContext.BuildSystem();
44+
if (b.IsRunningOnPipelines())
45+
{
46+
WriteGroupEndCommand();
47+
}
48+
}
49+
50+
private void OnAfterTeardown(object sender, AfterTeardownEventArgs e)
51+
{
52+
var b = e.TeardownContext.BuildSystem();
53+
if (b.IsRunningOnPipelines())
54+
{
55+
WriteGroupEndCommand();
56+
}
3157
}
3258

33-
private void OnBuildTeardown(object sender, BeforeTeardownEventArgs e)
59+
private void OnAfterSetup(object sender, AfterSetupEventArgs e)
60+
{
61+
var b = e.Context.BuildSystem();
62+
if (b.IsRunningOnPipelines())
63+
{
64+
WriteGroupEndCommand();
65+
}
66+
}
67+
68+
private void OnBeforeTeardown(object sender, BeforeTeardownEventArgs e)
3469
{
3570
var b = e.TeardownContext.BuildSystem();
3671
if (b.IsRunningOnPipelines())
3772
{
73+
WriteGroupCommand("Teardown");
74+
3875
b.AzurePipelines.Commands.UpdateRecord(_parentRecord, new AzurePipelinesRecordData
3976
{
4077
FinishTime = DateTime.Now,
@@ -45,7 +82,7 @@ private void OnBuildTeardown(object sender, BeforeTeardownEventArgs e)
4582
}
4683
}
4784

48-
private void OnTaskTeardown(object sender, BeforeTaskTeardownEventArgs e)
85+
private void OnBeforeTaskTeardown(object sender, BeforeTaskTeardownEventArgs e)
4986
{
5087
var b = e.TaskTeardownContext.BuildSystem();
5188
if (b.IsRunningOnPipelines())
@@ -74,11 +111,13 @@ private void OnTaskTeardown(object sender, BeforeTaskTeardownEventArgs e)
74111
return AzurePipelinesTaskResult.Succeeded;
75112
}
76113

77-
private void OnTaskSetup(object sender, BeforeTaskSetupEventArgs e)
114+
private void OnBeforeTaskSetup(object sender, BeforeTaskSetupEventArgs e)
78115
{
79116
var b = e.TaskSetupContext.BuildSystem();
80117
if (b.IsRunningOnPipelines())
81118
{
119+
WriteGroupCommand(e.TaskSetupContext.Task.Name);
120+
82121
var currentTask =
83122
_engine.Tasks.First(t => t.Name == e.TaskSetupContext.Task.Name);
84123
var currentIndex = _engine.Tasks.ToList().IndexOf(currentTask);
@@ -97,19 +136,33 @@ private int GetProgress(int currentTask, int count)
97136
return Convert.ToInt32(Math.Truncate(f));
98137
}
99138

100-
private void BuildSetup(object sender, BeforeSetupEventArgs e)
139+
private void OnBeforeSetup(object sender, BeforeSetupEventArgs e)
101140
{
102141
var b = e.Context.BuildSystem();
103142
if (b.IsRunningOnPipelines())
104143
{
144+
WriteGroupCommand("Setup");
145+
105146
e.Context.AzurePipelines().Commands.SetProgress(0, string.Empty);
106147
var g = e.Context.AzurePipelines()
107148
.Commands.CreateNewRecord("Cake Build", "build", 0, new AzurePipelinesRecordData { StartTime = DateTime.Now });
108149
_parentRecord = g;
109150
}
110151
}
111152

153+
private void WriteGroupCommand(string groupName)
154+
{
155+
_log.Verbose(string.Empty);
156+
_log.Information("##[group]{0}", groupName);
157+
}
158+
159+
private void WriteGroupEndCommand()
160+
{
161+
_log.Information("##[endgroup]");
162+
}
163+
112164
private Guid _parentRecord;
165+
private ICakeLog _log;
113166

114167
private Dictionary<string, Guid> TaskRecords { get; } = new Dictionary<string, Guid>();
115168
}

src/Cake.AzurePipelines.Module/AzurePipelinesLog.cs

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using Cake.Core;
33
using Cake.Core.Diagnostics;
44
using JetBrains.Annotations;
@@ -11,6 +11,9 @@ namespace Cake.AzurePipelines.Module
1111
[UsedImplicitly]
1212
public class AzurePipelinesLog : ICakeLog
1313
{
14+
private readonly ICakeLog _cakeLogImplementation;
15+
private readonly IConsole _console;
16+
1417
/// <summary>
1518
/// Initializes a new instance of the <see cref="AzurePipelinesLog"/> class.
1619
/// </summary>
@@ -19,36 +22,41 @@ public class AzurePipelinesLog : ICakeLog
1922
public AzurePipelinesLog(IConsole console, Verbosity verbosity = Verbosity.Normal)
2023
{
2124
_cakeLogImplementation = new CakeBuildLog(console, verbosity);
25+
_console = console;
2226
}
2327

24-
private readonly ICakeLog _cakeLogImplementation;
25-
2628
/// <inheritdoc />
2729
public void Write(Verbosity verbosity, LogLevel level, string format, params object[] args)
2830
{
29-
if (!string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("TF_BUILD")))
31+
if (string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("TF_BUILD")))
3032
{
31-
switch (level)
32-
{
33-
case LogLevel.Fatal:
34-
case LogLevel.Error:
35-
_cakeLogImplementation.Write(Verbosity.Quiet, LogLevel.Information,
36-
"##vso[task.logissue type=error;]{0}", string.Format(format, args));
37-
break;
38-
case LogLevel.Warning:
39-
_cakeLogImplementation.Write(Verbosity.Quiet, LogLevel.Information,
40-
"##vso[task.logissue type=warning;]{0}", string.Format(format, args));
41-
break;
42-
case LogLevel.Information:
43-
case LogLevel.Verbose:
44-
case LogLevel.Debug:
45-
break;
46-
default:
47-
throw new ArgumentOutOfRangeException(nameof(level), level, null);
48-
}
33+
_cakeLogImplementation.Write(verbosity, level, format, args);
4934
}
5035

51-
_cakeLogImplementation.Write(verbosity, level, format, args);
36+
if (verbosity > Verbosity)
37+
{
38+
return;
39+
}
40+
41+
switch (level)
42+
{
43+
case LogLevel.Fatal:
44+
case LogLevel.Error:
45+
_console.WriteLine("##vso[task.logissue type=error;]{0}", string.Format(format, args));
46+
break;
47+
case LogLevel.Warning:
48+
_console.WriteLine("##vso[task.logissue type=warning;]{0}", string.Format(format, args));
49+
break;
50+
case LogLevel.Information:
51+
case LogLevel.Verbose:
52+
_console.WriteLine(format, args);
53+
break;
54+
case LogLevel.Debug:
55+
_console.WriteLine("##[debug]{0}", string.Format(format, args));
56+
break;
57+
default:
58+
throw new ArgumentOutOfRangeException(nameof(level), level, null);
59+
}
5260
}
5361

5462
/// <inheritdoc />

src/Cake.AzurePipelines.Module/Cake.AzurePipelines.Module.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<TargetFramework>netcoreapp3.1</TargetFramework>

0 commit comments

Comments
 (0)