Skip to content

Commit b0649e1

Browse files
authored
Added LocalBuild agent (#3006)
* (#3005) cleanup the build agents * (#3005) introduce LocalBuild agent
1 parent 28ef014 commit b0649e1

23 files changed

+52
-43
lines changed

src/GitVersion.App/ArgumentParser.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public ArgumentParser(IEnvironment environment, ICurrentBuildAgent buildAgent, I
1919
this.environment = environment.NotNull();
2020
this.console = console.NotNull();
2121
this.globbingResolver = globbingResolver.NotNull();
22-
this.buildAgent = buildAgent;
22+
this.buildAgent = buildAgent.NotNull();
2323
}
2424

2525
public Arguments ParseArguments(string commandLineArguments)
@@ -42,7 +42,7 @@ public Arguments ParseArguments(string[] commandLineArguments)
4242

4343
AddAuthentication(args);
4444

45-
args.NoFetch = this.buildAgent != null && this.buildAgent.PreventFetch();
45+
args.NoFetch = this.buildAgent.PreventFetch();
4646

4747
return args;
4848
}

src/GitVersion.Core/BuildAgents/Abstractions/IBuildAgentResolver.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ namespace GitVersion.BuildAgents;
22

33
public interface IBuildAgentResolver
44
{
5-
ICurrentBuildAgent? Resolve();
5+
ICurrentBuildAgent Resolve();
66
}

src/GitVersion.Core/BuildAgents/AppVeyor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public AppVeyor(IEnvironment environment, ILog log) : base(environment, log)
1313

1414
public const string EnvironmentVariableName = "APPVEYOR";
1515

16-
protected override string EnvironmentVariable { get; } = EnvironmentVariableName;
16+
protected override string EnvironmentVariable => EnvironmentVariableName;
1717

1818
public override string GenerateSetVersionMessage(VersionVariables variables)
1919
{

src/GitVersion.Core/BuildAgents/AzurePipelines.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public AzurePipelines(IEnvironment environment, ILog log) : base(environment, lo
1313

1414
public const string EnvironmentVariableName = "TF_BUILD";
1515

16-
protected override string EnvironmentVariable { get; } = EnvironmentVariableName;
16+
protected override string EnvironmentVariable => EnvironmentVariableName;
1717

1818
public override string[] GenerateSetParameterMessage(string name, string value) => new[]
1919
{

src/GitVersion.Core/BuildAgents/BuildAgentResolver.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,18 @@ public BuildAgentResolver(IEnumerable<IBuildAgent> buildAgents, ILog log)
1313
this.buildAgents = buildAgents;
1414
}
1515

16-
public ICurrentBuildAgent? Resolve()
16+
public ICurrentBuildAgent Resolve() => new Lazy<ICurrentBuildAgent>(ResolveInternal).Value;
17+
18+
private ICurrentBuildAgent ResolveInternal()
1719
{
18-
ICurrentBuildAgent? instance = null;
19-
foreach (var buildAgent in this.buildAgents)
20+
ICurrentBuildAgent instance = (ICurrentBuildAgent)this.buildAgents.Single(x => x is LocalBuild);
21+
22+
foreach (var buildAgent in this.buildAgents.Where(x => x is not LocalBuild))
2023
{
2124
var agentName = buildAgent.GetType().Name;
2225
try
2326
{
2427
if (!buildAgent.CanApplyToCurrentContext()) continue;
25-
26-
this.log.Info($"Applicable build agent found: '{agentName}'.");
2728
instance = (ICurrentBuildAgent)buildAgent;
2829
}
2930
catch (Exception ex)
@@ -32,6 +33,7 @@ public BuildAgentResolver(IEnumerable<IBuildAgent> buildAgents, ILog log)
3233
}
3334
}
3435

36+
this.log.Info($"Applicable build agent found: '{instance.GetType().Name}'.");
3537
return instance;
3638
}
3739
}

src/GitVersion.Core/BuildAgents/BuildKite.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public BuildKite(IEnvironment environment, ILog log) : base(environment, log)
1111

1212
public const string EnvironmentVariableName = "BUILDKITE";
1313

14-
protected override string EnvironmentVariable { get; } = EnvironmentVariableName;
14+
protected override string EnvironmentVariable => EnvironmentVariableName;
1515

1616
public override bool CanApplyToCurrentContext() => "true".Equals(Environment.GetEnvironmentVariable(EnvironmentVariable), StringComparison.OrdinalIgnoreCase);
1717

src/GitVersion.Core/BuildAgents/BuildServerModule.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ public override void RegisterTypes(IServiceCollection services)
1414
}
1515

1616
services.AddSingleton<IBuildAgentResolver, BuildAgentResolver>();
17-
#pragma warning disable CS8634 // The type cannot be used as type parameter in the generic type or method. Nullability of type argument doesn't match 'class' constraint.
18-
services.AddSingleton(sp => sp.GetService<IBuildAgentResolver>()?.Resolve());
19-
#pragma warning restore CS8634 // The type cannot be used as type parameter in the generic type or method. Nullability of type argument doesn't match 'class' constraint.
17+
services.AddSingleton(sp => sp.GetRequiredService<IBuildAgentResolver>().Resolve());
2018
}
2119
}

src/GitVersion.Core/BuildAgents/CodeBuild.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public sealed class CodeBuild : BuildAgentBase
1414

1515
public void WithPropertyFile(string propertiesFileName) => this.file = propertiesFileName;
1616

17-
protected override string EnvironmentVariable => throw new NotSupportedException($"Accessing {nameof(EnvironmentVariable)} is not supported as {nameof(CodeBuild)} supports two environment variables for branch names.");
17+
protected override string EnvironmentVariable => WebHookEnvironmentVariableName;
1818

1919
public override string GenerateSetVersionMessage(VersionVariables variables) => variables.FullSemVer;
2020

@@ -25,7 +25,6 @@ public override string[] GenerateSetParameterMessage(string name, string value)
2525

2626
public override string? GetCurrentBranch(bool usingDynamicRepos)
2727
{
28-
2928
var currentBranch = Environment.GetEnvironmentVariable(WebHookEnvironmentVariableName);
3029

3130
if (currentBranch.IsNullOrEmpty())
@@ -45,6 +44,6 @@ public override void WriteIntegration(Action<string?> writer, VersionVariables v
4544

4645
public override bool PreventFetch() => true;
4746

48-
public override bool CanApplyToCurrentContext()
49-
=> !Environment.GetEnvironmentVariable(WebHookEnvironmentVariableName).IsNullOrEmpty() || !Environment.GetEnvironmentVariable(SourceVersionEnvironmentVariableName).IsNullOrEmpty();
47+
public override bool CanApplyToCurrentContext() => !Environment.GetEnvironmentVariable(WebHookEnvironmentVariableName).IsNullOrEmpty()
48+
|| !Environment.GetEnvironmentVariable(SourceVersionEnvironmentVariableName).IsNullOrEmpty();
5049
}

src/GitVersion.Core/BuildAgents/ContinuaCi.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public ContinuaCi(IEnvironment environment, ILog log) : base(environment, log)
1111

1212
public const string EnvironmentVariableName = "ContinuaCI.Version";
1313

14-
protected override string EnvironmentVariable { get; } = EnvironmentVariableName;
14+
protected override string EnvironmentVariable => EnvironmentVariableName;
1515

1616
public override string[] GenerateSetParameterMessage(string name, string value) => new[]
1717
{

src/GitVersion.Core/BuildAgents/Drone.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public Drone(IEnvironment environment, ILog log) : base(environment, log)
1111
}
1212

1313
public const string EnvironmentVariableName = "DRONE";
14-
protected override string EnvironmentVariable { get; } = EnvironmentVariableName;
14+
protected override string EnvironmentVariable => EnvironmentVariableName;
1515
public override bool CanApplyToCurrentContext() => "true".Equals(Environment.GetEnvironmentVariable(EnvironmentVariable), StringComparison.OrdinalIgnoreCase);
1616

1717
public override string GenerateSetVersionMessage(VersionVariables variables) => variables.FullSemVer;

0 commit comments

Comments
 (0)