Skip to content

Commit

Permalink
Merge pull request #112 from JuergenRB/feature/AddAzurePipelinesExecu…
Browse files Browse the repository at this point in the history
…tionStrategyForGrouping

Add grouping for tasks in AzureDevOps pipeline
  • Loading branch information
nils-a authored Jan 4, 2022
2 parents 3a7f5b4 + 736196c commit 9f83f03
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 10 deletions.
71 changes: 62 additions & 9 deletions src/Cake.AzurePipelines.Module/AzurePipelinesEngine.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using Cake.Common.Build;
Expand All @@ -24,17 +24,54 @@ public sealed class AzurePipelinesEngine : CakeEngineBase
public AzurePipelinesEngine(ICakeDataService dataService, ICakeLog log)
: base(new CakeEngine(dataService, log))
{
_engine.BeforeSetup += BuildSetup;
_engine.BeforeTaskSetup += OnTaskSetup;
_engine.BeforeTaskTeardown += OnTaskTeardown;
_engine.BeforeTeardown += OnBuildTeardown;
_log = log;
_engine.BeforeSetup += OnBeforeSetup;
_engine.AfterSetup += OnAfterSetup;

_engine.BeforeTaskSetup += OnBeforeTaskSetup;

_engine.BeforeTaskTeardown += OnBeforeTaskTeardown;

_engine.AfterTaskTeardown += OnAfterTaskTeardown;

_engine.BeforeTeardown += OnBeforeTeardown;
_engine.AfterTeardown += OnAfterTeardown;
}

private void OnAfterTaskTeardown(object sender, AfterTaskTeardownEventArgs e)
{
var b = e.TaskTeardownContext.BuildSystem();
if (b.IsRunningOnPipelines())
{
WriteGroupEndCommand();
}
}

private void OnAfterTeardown(object sender, AfterTeardownEventArgs e)
{
var b = e.TeardownContext.BuildSystem();
if (b.IsRunningOnPipelines())
{
WriteGroupEndCommand();
}
}

private void OnBuildTeardown(object sender, BeforeTeardownEventArgs e)
private void OnAfterSetup(object sender, AfterSetupEventArgs e)
{
var b = e.Context.BuildSystem();
if (b.IsRunningOnPipelines())
{
WriteGroupEndCommand();
}
}

private void OnBeforeTeardown(object sender, BeforeTeardownEventArgs e)
{
var b = e.TeardownContext.BuildSystem();
if (b.IsRunningOnPipelines())
{
WriteGroupCommand("Teardown");

b.AzurePipelines.Commands.UpdateRecord(_parentRecord, new AzurePipelinesRecordData
{
FinishTime = DateTime.Now,
Expand All @@ -45,7 +82,7 @@ private void OnBuildTeardown(object sender, BeforeTeardownEventArgs e)
}
}

private void OnTaskTeardown(object sender, BeforeTaskTeardownEventArgs e)
private void OnBeforeTaskTeardown(object sender, BeforeTaskTeardownEventArgs e)
{
var b = e.TaskTeardownContext.BuildSystem();
if (b.IsRunningOnPipelines())
Expand Down Expand Up @@ -74,11 +111,13 @@ private void OnTaskTeardown(object sender, BeforeTaskTeardownEventArgs e)
return AzurePipelinesTaskResult.Succeeded;
}

private void OnTaskSetup(object sender, BeforeTaskSetupEventArgs e)
private void OnBeforeTaskSetup(object sender, BeforeTaskSetupEventArgs e)
{
var b = e.TaskSetupContext.BuildSystem();
if (b.IsRunningOnPipelines())
{
WriteGroupCommand(e.TaskSetupContext.Task.Name);

var currentTask =
_engine.Tasks.First(t => t.Name == e.TaskSetupContext.Task.Name);
var currentIndex = _engine.Tasks.ToList().IndexOf(currentTask);
Expand All @@ -97,19 +136,33 @@ private int GetProgress(int currentTask, int count)
return Convert.ToInt32(Math.Truncate(f));
}

private void BuildSetup(object sender, BeforeSetupEventArgs e)
private void OnBeforeSetup(object sender, BeforeSetupEventArgs e)
{
var b = e.Context.BuildSystem();
if (b.IsRunningOnPipelines())
{
WriteGroupCommand("Setup");

e.Context.AzurePipelines().Commands.SetProgress(0, string.Empty);
var g = e.Context.AzurePipelines()
.Commands.CreateNewRecord("Cake Build", "build", 0, new AzurePipelinesRecordData { StartTime = DateTime.Now });
_parentRecord = g;
}
}

private void WriteGroupCommand(string groupName)
{
_log.Verbose(string.Empty);
_log.Information("##[group]{0}", groupName);
}

private void WriteGroupEndCommand()
{
_log.Information("##[endgroup]");
}

private Guid _parentRecord;
private ICakeLog _log;

private Dictionary<string, Guid> TaskRecords { get; } = new Dictionary<string, Guid>();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
Expand Down

0 comments on commit 9f83f03

Please sign in to comment.