Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/GitVersion.App/ArgumentParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public ArgumentParser(IEnvironment environment, ICurrentBuildAgent buildAgent, I
this.environment = environment.NotNull();
this.console = console.NotNull();
this.globbingResolver = globbingResolver.NotNull();
this.buildAgent = buildAgent;
this.buildAgent = buildAgent.NotNull();
}

public Arguments ParseArguments(string commandLineArguments)
Expand All @@ -42,7 +42,7 @@ public Arguments ParseArguments(string[] commandLineArguments)

AddAuthentication(args);

args.NoFetch = this.buildAgent != null && this.buildAgent.PreventFetch();
args.NoFetch = this.buildAgent.PreventFetch();

return args;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ namespace GitVersion.BuildAgents;

public interface IBuildAgentResolver
{
ICurrentBuildAgent? Resolve();
ICurrentBuildAgent Resolve();
}
2 changes: 1 addition & 1 deletion src/GitVersion.Core/BuildAgents/AppVeyor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public AppVeyor(IEnvironment environment, ILog log) : base(environment, log)

public const string EnvironmentVariableName = "APPVEYOR";

protected override string EnvironmentVariable { get; } = EnvironmentVariableName;
protected override string EnvironmentVariable => EnvironmentVariableName;

public override string GenerateSetVersionMessage(VersionVariables variables)
{
Expand Down
2 changes: 1 addition & 1 deletion src/GitVersion.Core/BuildAgents/AzurePipelines.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public AzurePipelines(IEnvironment environment, ILog log) : base(environment, lo

public const string EnvironmentVariableName = "TF_BUILD";

protected override string EnvironmentVariable { get; } = EnvironmentVariableName;
protected override string EnvironmentVariable => EnvironmentVariableName;

public override string[] GenerateSetParameterMessage(string name, string value) => new[]
{
Expand Down
12 changes: 7 additions & 5 deletions src/GitVersion.Core/BuildAgents/BuildAgentResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,18 @@ public BuildAgentResolver(IEnumerable<IBuildAgent> buildAgents, ILog log)
this.buildAgents = buildAgents;
}

public ICurrentBuildAgent? Resolve()
public ICurrentBuildAgent Resolve() => new Lazy<ICurrentBuildAgent>(ResolveInternal).Value;

private ICurrentBuildAgent ResolveInternal()
{
ICurrentBuildAgent? instance = null;
foreach (var buildAgent in this.buildAgents)
ICurrentBuildAgent instance = (ICurrentBuildAgent)this.buildAgents.Single(x => x is LocalBuild);

foreach (var buildAgent in this.buildAgents.Where(x => x is not LocalBuild))
{
var agentName = buildAgent.GetType().Name;
try
{
if (!buildAgent.CanApplyToCurrentContext()) continue;

this.log.Info($"Applicable build agent found: '{agentName}'.");
instance = (ICurrentBuildAgent)buildAgent;
}
catch (Exception ex)
Expand All @@ -32,6 +33,7 @@ public BuildAgentResolver(IEnumerable<IBuildAgent> buildAgents, ILog log)
}
}

this.log.Info($"Applicable build agent found: '{instance.GetType().Name}'.");
return instance;
}
}
2 changes: 1 addition & 1 deletion src/GitVersion.Core/BuildAgents/BuildKite.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public BuildKite(IEnvironment environment, ILog log) : base(environment, log)

public const string EnvironmentVariableName = "BUILDKITE";

protected override string EnvironmentVariable { get; } = EnvironmentVariableName;
protected override string EnvironmentVariable => EnvironmentVariableName;

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

Expand Down
4 changes: 1 addition & 3 deletions src/GitVersion.Core/BuildAgents/BuildServerModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ public override void RegisterTypes(IServiceCollection services)
}

services.AddSingleton<IBuildAgentResolver, BuildAgentResolver>();
#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.
services.AddSingleton(sp => sp.GetService<IBuildAgentResolver>()?.Resolve());
#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.
services.AddSingleton(sp => sp.GetRequiredService<IBuildAgentResolver>().Resolve());
}
}
7 changes: 3 additions & 4 deletions src/GitVersion.Core/BuildAgents/CodeBuild.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public sealed class CodeBuild : BuildAgentBase

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

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

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

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

public override string? GetCurrentBranch(bool usingDynamicRepos)
{

var currentBranch = Environment.GetEnvironmentVariable(WebHookEnvironmentVariableName);

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

public override bool PreventFetch() => true;

public override bool CanApplyToCurrentContext()
=> !Environment.GetEnvironmentVariable(WebHookEnvironmentVariableName).IsNullOrEmpty() || !Environment.GetEnvironmentVariable(SourceVersionEnvironmentVariableName).IsNullOrEmpty();
public override bool CanApplyToCurrentContext() => !Environment.GetEnvironmentVariable(WebHookEnvironmentVariableName).IsNullOrEmpty()
|| !Environment.GetEnvironmentVariable(SourceVersionEnvironmentVariableName).IsNullOrEmpty();
}
2 changes: 1 addition & 1 deletion src/GitVersion.Core/BuildAgents/ContinuaCi.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public ContinuaCi(IEnvironment environment, ILog log) : base(environment, log)

public const string EnvironmentVariableName = "ContinuaCI.Version";

protected override string EnvironmentVariable { get; } = EnvironmentVariableName;
protected override string EnvironmentVariable => EnvironmentVariableName;

public override string[] GenerateSetParameterMessage(string name, string value) => new[]
{
Expand Down
2 changes: 1 addition & 1 deletion src/GitVersion.Core/BuildAgents/Drone.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public Drone(IEnvironment environment, ILog log) : base(environment, log)
}

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

public override string GenerateSetVersionMessage(VersionVariables variables) => variables.FullSemVer;
Expand Down
2 changes: 1 addition & 1 deletion src/GitVersion.Core/BuildAgents/EnvRun.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public EnvRun(IEnvironment environment, ILog log) : base(environment, log)
}

public const string EnvironmentVariableName = "ENVRUN_DATABASE";
protected override string EnvironmentVariable { get; } = EnvironmentVariableName;
protected override string EnvironmentVariable => EnvironmentVariableName;
public override bool CanApplyToCurrentContext()
{
var envRunDatabasePath = Environment.GetEnvironmentVariable(EnvironmentVariableName);
Expand Down
2 changes: 1 addition & 1 deletion src/GitVersion.Core/BuildAgents/GitHubActions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public GitHubActions(IEnvironment environment, ILog log) : base(environment, log
public const string EnvironmentVariableName = "GITHUB_ACTIONS";
public const string GitHubSetEnvTempFileEnvironmentVariableName = "GITHUB_ENV";

protected override string EnvironmentVariable { get; } = EnvironmentVariableName;
protected override string EnvironmentVariable => EnvironmentVariableName;

public override string GenerateSetVersionMessage(VersionVariables variables) =>
string.Empty; // There is no equivalent function in GitHub Actions.
Expand Down
2 changes: 1 addition & 1 deletion src/GitVersion.Core/BuildAgents/GitLabCi.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public class GitLabCi : BuildAgentBase

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

protected override string EnvironmentVariable { get; } = EnvironmentVariableName;
protected override string EnvironmentVariable => EnvironmentVariableName;


public override string GenerateSetVersionMessage(VersionVariables variables) => variables.FullSemVer;
Expand Down
2 changes: 1 addition & 1 deletion src/GitVersion.Core/BuildAgents/Jenkins.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public class Jenkins : BuildAgentBase
{
public const string EnvironmentVariableName = "JENKINS_URL";
private string? file;
protected override string EnvironmentVariable { get; } = EnvironmentVariableName;
protected override string EnvironmentVariable => EnvironmentVariableName;

public Jenkins(IEnvironment environment, ILog log) : base(environment, log) => WithPropertyFile("gitversion.properties");

Expand Down
15 changes: 15 additions & 0 deletions src/GitVersion.Core/BuildAgents/LocalBuild.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using GitVersion.Logging;
using GitVersion.OutputVariables;

namespace GitVersion.BuildAgents;

public class LocalBuild : BuildAgentBase
{
public LocalBuild(IEnvironment environment, ILog log) : base(environment, log)
{
}
protected override string EnvironmentVariable => string.Empty;
public override bool CanApplyToCurrentContext() => true;
public override string? GenerateSetVersionMessage(VersionVariables variables) => null;
public override string[] GenerateSetParameterMessage(string name, string value) => Array.Empty<string>();
}
2 changes: 1 addition & 1 deletion src/GitVersion.Core/BuildAgents/MyGet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public MyGet(IEnvironment environment, ILog log) : base(environment, log)
}

public const string EnvironmentVariableName = "BuildRunner";
protected override string EnvironmentVariable { get; } = EnvironmentVariableName;
protected override string EnvironmentVariable => EnvironmentVariableName;
public override bool CanApplyToCurrentContext()
{
var buildRunner = Environment.GetEnvironmentVariable(EnvironmentVariable);
Expand Down
2 changes: 1 addition & 1 deletion src/GitVersion.Core/BuildAgents/SpaceAutomation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public SpaceAutomation(IEnvironment environment, ILog log) : base(environment, l

public const string EnvironmentVariableName = "JB_SPACE_PROJECT_KEY";

protected override string EnvironmentVariable { get; } = EnvironmentVariableName;
protected override string EnvironmentVariable => EnvironmentVariableName;

public override string? GetCurrentBranch(bool usingDynamicRepos) => Environment.GetEnvironmentVariable("JB_SPACE_GIT_BRANCH");

Expand Down
2 changes: 1 addition & 1 deletion src/GitVersion.Core/BuildAgents/TeamCity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public TeamCity(IEnvironment environment, ILog log) : base(environment, log)

public const string EnvironmentVariableName = "TEAMCITY_VERSION";

protected override string EnvironmentVariable { get; } = EnvironmentVariableName;
protected override string EnvironmentVariable => EnvironmentVariableName;

public override string? GetCurrentBranch(bool usingDynamicRepos)
{
Expand Down
2 changes: 1 addition & 1 deletion src/GitVersion.Core/BuildAgents/TravisCI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public TravisCi(IEnvironment environment, ILog log) : base(environment, log)
}

public const string EnvironmentVariableName = "TRAVIS";
protected override string EnvironmentVariable { get; } = EnvironmentVariableName;
protected override string EnvironmentVariable => EnvironmentVariableName;

public override bool CanApplyToCurrentContext() => "true".Equals(Environment.GetEnvironmentVariable(EnvironmentVariable)) && "true".Equals(Environment.GetEnvironmentVariable("CI"));

Expand Down
14 changes: 5 additions & 9 deletions src/GitVersion.Core/Core/GitPreparer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ public class GitPreparer : IGitPreparer
private readonly IOptions<GitVersionOptions> options;
private readonly IGitRepositoryInfo repositoryInfo;
private readonly IRepositoryStore repositoryStore;
private readonly ICurrentBuildAgent? buildAgent;
private readonly ICurrentBuildAgent buildAgent;
private readonly RetryAction<LockedFileException> retryAction;

private const string DefaultRemoteName = "origin";

public GitPreparer(ILog log, IEnvironment environment, ICurrentBuildAgent? buildAgent, IOptions<GitVersionOptions> options,
public GitPreparer(ILog log, IEnvironment environment, ICurrentBuildAgent buildAgent, IOptions<GitVersionOptions> options,
IMutatingGitRepository repository, IGitRepositoryInfo repositoryInfo, IRepositoryStore repositoryStore)
{
this.log = log.NotNull();
Expand All @@ -30,7 +30,7 @@ public GitPreparer(ILog log, IEnvironment environment, ICurrentBuildAgent? build
this.options = options.NotNull();
this.repositoryInfo = repositoryInfo.NotNull();
this.repositoryStore = repositoryStore.NotNull();
this.buildAgent = buildAgent;
this.buildAgent = buildAgent.NotNull();
this.retryAction = new RetryAction<LockedFileException>();
}

Expand All @@ -39,8 +39,8 @@ public void Prepare()
var gitVersionOptions = this.options.Value;

// Normalize if we are running on build server
var normalizeGitDirectory = !gitVersionOptions.Settings.NoNormalize && this.buildAgent != null;
var shouldCleanUpRemotes = this.buildAgent != null && this.buildAgent.ShouldCleanUpRemotes();
var normalizeGitDirectory = !gitVersionOptions.Settings.NoNormalize && this.buildAgent is not LocalBuild;
var shouldCleanUpRemotes = this.buildAgent.ShouldCleanUpRemotes();
var currentBranch = ResolveCurrentBranch();

var dotGitDirectory = this.repositoryInfo.DotGitDirectory;
Expand Down Expand Up @@ -79,10 +79,6 @@ private void PrepareInternal(bool normalizeGitDirectory, string? currentBranch,
{
var gitVersionOptions = this.options.Value;
var targetBranch = gitVersionOptions.RepositoryInfo.TargetBranch;
if (this.buildAgent == null)
{
return targetBranch;
}

var isDynamicRepository = !gitVersionOptions.RepositoryInfo.DynamicRepositoryClonePath.IsNullOrWhiteSpace();
var currentBranch = this.buildAgent.GetCurrentBranch(isDynamicRepository) ?? targetBranch;
Expand Down
3 changes: 1 addition & 2 deletions src/GitVersion.Core/Core/GitVersionCalculateTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,7 @@ public GitVersionCalculateTool(ILog log, INextVersionCalculator nextVersionCalcu

public VersionVariables CalculateVersionVariables()
{
bool isCurrentCommitTagged = this.versionContext.IsValueCreated &&
this.versionContext.Value.IsCurrentCommitTagged;
bool isCurrentCommitTagged = this.versionContext.IsValueCreated && this.versionContext.Value.IsCurrentCommitTagged;

if (!isCurrentCommitTagged)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@ public OutputGenerator(ICurrentBuildAgent buildAgent, IConsole console, IFileSys
this.console = console.NotNull();
this.fileSystem = fileSystem.NotNull();
this.options = options.NotNull();
this.buildAgent = buildAgent;
this.buildAgent = buildAgent.NotNull();
}

public void Execute(VersionVariables variables, OutputContext context)
{
var gitVersionOptions = this.options.Value;
if (gitVersionOptions.Output.Contains(OutputType.BuildServer))
{
this.buildAgent?.WriteIntegration(this.console.WriteLine, variables, context.UpdateBuildNumber ?? true);
this.buildAgent.WriteIntegration(this.console.WriteLine, variables, context.UpdateBuildNumber ?? true);
}
if (gitVersionOptions.Output.Contains(OutputType.File))
{
Expand Down
4 changes: 2 additions & 2 deletions src/GitVersion.MsBuild/GitVersionTasks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,12 @@ private static bool ExecuteGitVersionTask<T>(T task, Action<IGitVersionTaskExecu
private static void Configure(IServiceProvider sp, GitVersionTaskBase task)
{
var log = sp.GetRequiredService<ILog>();
var buildAgent = sp.GetService<ICurrentBuildAgent>();
var buildAgent = sp.GetRequiredService<ICurrentBuildAgent>();
var gitVersionOptions = sp.GetRequiredService<IOptions<GitVersionOptions>>().Value;

log.AddLogAppender(new MsBuildAppender(task.Log));

if (buildAgent != null)
if (buildAgent is not LocalBuild)
{
gitVersionOptions.Output.Add(OutputType.BuildServer);
}
Expand Down