From cd63362ebbd76b6e3d6be0912f5c7a2402e4e1b2 Mon Sep 17 00:00:00 2001 From: Kirsten Kluge Date: Tue, 18 Feb 2020 14:36:30 +0100 Subject: [PATCH 1/3] Add `UpdateBuildNumber` configuration value - Add an bool value to allow tuning on BuildNumber Replacement when no Variable found in the value of BuildNumber --- .../Helpers/TestEffectiveConfiguration.cs | 5 +++-- src/GitVersionCore.Tests/Model/CommitDateTests.cs | 2 +- src/GitVersionCore/Configuration/ConfigExtensions.cs | 3 +++ src/GitVersionCore/Model/Configuration/Config.cs | 3 +++ .../Model/Configuration/EffectiveConfiguration.cs | 4 ++++ 5 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/GitVersionCore.Tests/Helpers/TestEffectiveConfiguration.cs b/src/GitVersionCore.Tests/Helpers/TestEffectiveConfiguration.cs index adaef8d5e1..4c179f3db2 100644 --- a/src/GitVersionCore.Tests/Helpers/TestEffectiveConfiguration.cs +++ b/src/GitVersionCore.Tests/Helpers/TestEffectiveConfiguration.cs @@ -35,14 +35,15 @@ public TestEffectiveConfiguration( IEnumerable versionFilters = null, bool tracksReleaseBranches = false, bool isRelease = false, - string commitDateFormat = "yyyy-MM-dd") : + string commitDateFormat = "yyyy-MM-dd", + bool updateBuildNumber = false) : base(assemblyVersioningScheme, assemblyFileVersioningScheme, assemblyInformationalFormat, assemblyVersioningFormat, assemblyFileVersioningFormat, versioningMode, gitTagPrefix, tag, nextVersion, IncrementStrategy.Patch, branchPrefixToTrim, preventIncrementForMergedBranchVersion, tagNumberPattern, continuousDeploymentFallbackTag, trackMergeTarget, majorMessage, minorMessage, patchMessage, noBumpMessage, commitMessageMode, legacySemVerPadding, buildMetaDataPadding, commitsSinceVersionSourcePadding, versionFilters ?? Enumerable.Empty(), - tracksReleaseBranches, isRelease, commitDateFormat, 0) + tracksReleaseBranches, isRelease, commitDateFormat, updateBuildNumber, 0) { } } diff --git a/src/GitVersionCore.Tests/Model/CommitDateTests.cs b/src/GitVersionCore.Tests/Model/CommitDateTests.cs index 72fa502424..f98b6a8a42 100644 --- a/src/GitVersionCore.Tests/Model/CommitDateTests.cs +++ b/src/GitVersionCore.Tests/Model/CommitDateTests.cs @@ -29,7 +29,7 @@ public void CommitDateFormatTest(string format, string expectedOutcome) }, new EffectiveConfiguration( AssemblyVersioningScheme.MajorMinorPatch, AssemblyFileVersioningScheme.MajorMinorPatch, "", "", "", VersioningMode.ContinuousDelivery, "", "", "", IncrementStrategy.Inherit, - "", true, "", "", false, "", "", "", "", CommitMessageIncrementMode.Enabled, 4, 4, 4, Enumerable.Empty(), false, true, format, 0) + "", true, "", "", false, "", "", "", "", CommitMessageIncrementMode.Enabled, 4, 4, 4, Enumerable.Empty(), false, true, format, false, 0) ); Assert.That(formatValues.CommitDate, Is.EqualTo(expectedOutcome)); diff --git a/src/GitVersionCore/Configuration/ConfigExtensions.cs b/src/GitVersionCore/Configuration/ConfigExtensions.cs index 2eda16941f..1165db94ab 100644 --- a/src/GitVersionCore/Configuration/ConfigExtensions.cs +++ b/src/GitVersionCore/Configuration/ConfigExtensions.cs @@ -36,6 +36,7 @@ public static void Reset(this Config config) config.BuildMetaDataPadding ??= 4; config.CommitsSinceVersionSourcePadding ??= 4; config.CommitDateFormat ??= "yyyy-MM-dd"; + config.UpdateBuildNumber ??= false; var configBranches = config.Branches.ToList(); @@ -263,6 +264,7 @@ public static EffectiveConfiguration CalculateEffectiveConfiguration(this Config var patchMessage = configuration.PatchVersionBumpMessage; var noBumpMessage = configuration.NoBumpMessage; var commitDateFormat = configuration.CommitDateFormat; + var updateBuildNumber = configuration.UpdateBuildNumber ?? false; var commitMessageVersionBump = currentBranchConfig.CommitMessageIncrementing ?? configuration.CommitMessageIncrementing.Value; @@ -282,6 +284,7 @@ public static EffectiveConfiguration CalculateEffectiveConfiguration(this Config currentBranchConfig.TracksReleaseBranches.Value, currentBranchConfig.IsReleaseBranch.Value, commitDateFormat, + updateBuildNumber, preReleaseWeight); } diff --git a/src/GitVersionCore/Model/Configuration/Config.cs b/src/GitVersionCore/Model/Configuration/Config.cs index 006cc044f1..980cdbf395 100644 --- a/src/GitVersionCore/Model/Configuration/Config.cs +++ b/src/GitVersionCore/Model/Configuration/Config.cs @@ -118,6 +118,9 @@ private static T MergeObjects(T target, T source) [YamlMember(Alias = "merge-message-formats")] public Dictionary MergeMessageFormats { get; set; } = new Dictionary(); + [YamlMember(Alias = "update-build-number ")] + public bool? UpdateBuildNumber { get; set; } + public override string ToString() { var stringBuilder = new StringBuilder(); diff --git a/src/GitVersionCore/Model/Configuration/EffectiveConfiguration.cs b/src/GitVersionCore/Model/Configuration/EffectiveConfiguration.cs index a46eba9db3..abb135da72 100644 --- a/src/GitVersionCore/Model/Configuration/EffectiveConfiguration.cs +++ b/src/GitVersionCore/Model/Configuration/EffectiveConfiguration.cs @@ -34,6 +34,7 @@ public EffectiveConfiguration( bool tracksReleaseBranches, bool isCurrentBranchRelease, string commitDateFormat, + bool updateBuildNumber, int preReleaseWeight) { AssemblyVersioningScheme = assemblyVersioningScheme; @@ -63,6 +64,7 @@ public EffectiveConfiguration( TracksReleaseBranches = tracksReleaseBranches; IsCurrentBranchRelease = isCurrentBranchRelease; CommitDateFormat = commitDateFormat; + UpdateBuildNumber = updateBuildNumber; PreReleaseWeight = preReleaseWeight; } @@ -118,6 +120,8 @@ public EffectiveConfiguration( public IEnumerable VersionFilters { get; private set; } public string CommitDateFormat { get; private set; } + + public bool UpdateBuildNumber { get; private set; } public int PreReleaseWeight { get; private set; } } From 4a739bc60af1b6ae0a98d0fe4cab11fdd34b4b38 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 5 May 2020 14:39:56 +0300 Subject: [PATCH 2/3] rebase and fix the existing unit tests --- docs/input/docs/configuration.md | 4 ++++ ...ests.CanWriteOutEffectiveConfiguration.approved.txt | 1 + src/GitVersionCore/Model/Configuration/Config.cs | 10 ++++------ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/docs/input/docs/configuration.md b/docs/input/docs/configuration.md index 360b8ca5d5..d0f751d9e3 100644 --- a/docs/input/docs/configuration.md +++ b/docs/input/docs/configuration.md @@ -213,6 +213,10 @@ Sets the format which will be used to format the `CommitDate` output variable. The header for ignore configuration. +### update-build-number + +Configures GitVersion to update the build number or not when running on a build server. + #### sha A sequence of SHAs to be excluded from the version calculations. Useful when diff --git a/src/GitVersionCore.Tests/Configuration/ConfigProviderTests.CanWriteOutEffectiveConfiguration.approved.txt b/src/GitVersionCore.Tests/Configuration/ConfigProviderTests.CanWriteOutEffectiveConfiguration.approved.txt index bcac7119f9..80f671f934 100644 --- a/src/GitVersionCore.Tests/Configuration/ConfigProviderTests.CanWriteOutEffectiveConfiguration.approved.txt +++ b/src/GitVersionCore.Tests/Configuration/ConfigProviderTests.CanWriteOutEffectiveConfiguration.approved.txt @@ -123,3 +123,4 @@ ignore: sha: [] commit-date-format: yyyy-MM-dd merge-message-formats: {} +update-build-number: false diff --git a/src/GitVersionCore/Model/Configuration/Config.cs b/src/GitVersionCore/Model/Configuration/Config.cs index 980cdbf395..cc03dd0f33 100644 --- a/src/GitVersionCore/Model/Configuration/Config.cs +++ b/src/GitVersionCore/Model/Configuration/Config.cs @@ -118,17 +118,15 @@ private static T MergeObjects(T target, T source) [YamlMember(Alias = "merge-message-formats")] public Dictionary MergeMessageFormats { get; set; } = new Dictionary(); - [YamlMember(Alias = "update-build-number ")] + [YamlMember(Alias = "update-build-number")] public bool? UpdateBuildNumber { get; set; } public override string ToString() { var stringBuilder = new StringBuilder(); - using (var stream = new StringWriter(stringBuilder)) - { - ConfigSerializer.Write(this, stream); - stream.Flush(); - } + using var stream = new StringWriter(stringBuilder); + ConfigSerializer.Write(this, stream); + stream.Flush(); return stringBuilder.ToString(); } From b6ec69b343950820c2131ba32b6d15b1a2180115 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Sat, 9 May 2020 21:17:44 +0300 Subject: [PATCH 3/3] use updateBuildNumber configuration, updated tests --- .../BuildAgents/BuildServerBaseTests.cs | 4 ++++ .../BuildAgents/GitHubActionsTests.cs | 17 +++++++++++++++++ ...nWriteOutEffectiveConfiguration.approved.txt | 2 +- src/GitVersionCore/BuildAgents/CodeBuild.cs | 2 +- src/GitVersionCore/BuildAgents/GitLabCi.cs | 2 +- src/GitVersionCore/BuildAgents/Jenkins.cs | 2 +- src/GitVersionCore/Common/IBuildAgent.cs | 2 +- .../Configuration/ConfigExtensions.cs | 4 ++-- src/GitVersionCore/Core/BuildAgentBase.cs | 4 ++-- .../Configuration/EffectiveConfiguration.cs | 2 +- .../OutputGenerator/OutputGenerator.cs | 6 ++++-- 11 files changed, 35 insertions(+), 12 deletions(-) diff --git a/src/GitVersionCore.Tests/BuildAgents/BuildServerBaseTests.cs b/src/GitVersionCore.Tests/BuildAgents/BuildServerBaseTests.cs index 23c4b5d2e0..271dba4e5a 100644 --- a/src/GitVersionCore.Tests/BuildAgents/BuildServerBaseTests.cs +++ b/src/GitVersionCore.Tests/BuildAgents/BuildServerBaseTests.cs @@ -50,6 +50,10 @@ public void BuildNumberIsFullSemVer() buildServer.WriteIntegration(writes.Add, variables); writes[1].ShouldBe("1.2.3-beta.1+5"); + + writes = new List(); + buildServer.WriteIntegration(writes.Add, variables, false); + writes.ShouldBeEmpty(); } private class BuildAgent : BuildAgentBase diff --git a/src/GitVersionCore.Tests/BuildAgents/GitHubActionsTests.cs b/src/GitVersionCore.Tests/BuildAgents/GitHubActionsTests.cs index ecb0fe7bb4..9eff0adf77 100644 --- a/src/GitVersionCore.Tests/BuildAgents/GitHubActionsTests.cs +++ b/src/GitVersionCore.Tests/BuildAgents/GitHubActionsTests.cs @@ -148,6 +148,23 @@ public void ShouldWriteIntegration() .ShouldBe(string.Join(Environment.NewLine, expected)); } + [Test] + public void ShouldNotWriteIntegration() + { + // Arrange + var vars = new TestableVersionVariables("1.0.0"); + + var list = new List(); + + // Assert + environment.GetEnvironmentVariable("GitVersion_Major").ShouldBeNullOrWhiteSpace(); + + // Act + buildServer.WriteIntegration(s => { list.Add(s); }, vars, false); + + list.ShouldBeEmpty(); + } + [Test] public void GetEmptyGenerateSetVersionMessage() { diff --git a/src/GitVersionCore.Tests/Configuration/ConfigProviderTests.CanWriteOutEffectiveConfiguration.approved.txt b/src/GitVersionCore.Tests/Configuration/ConfigProviderTests.CanWriteOutEffectiveConfiguration.approved.txt index 80f671f934..f27fc41426 100644 --- a/src/GitVersionCore.Tests/Configuration/ConfigProviderTests.CanWriteOutEffectiveConfiguration.approved.txt +++ b/src/GitVersionCore.Tests/Configuration/ConfigProviderTests.CanWriteOutEffectiveConfiguration.approved.txt @@ -123,4 +123,4 @@ ignore: sha: [] commit-date-format: yyyy-MM-dd merge-message-formats: {} -update-build-number: false +update-build-number: true diff --git a/src/GitVersionCore/BuildAgents/CodeBuild.cs b/src/GitVersionCore/BuildAgents/CodeBuild.cs index e315f51a08..46050da546 100644 --- a/src/GitVersionCore/BuildAgents/CodeBuild.cs +++ b/src/GitVersionCore/BuildAgents/CodeBuild.cs @@ -40,7 +40,7 @@ public override string GetCurrentBranch(bool usingDynamicRepos) return Environment.GetEnvironmentVariable(EnvironmentVariableName); } - public override void WriteIntegration(Action writer, VersionVariables variables) + public override void WriteIntegration(Action writer, VersionVariables variables, bool updateBuildNumber = true) { base.WriteIntegration(writer, variables); writer($"Outputting variables to '{file}' ... "); diff --git a/src/GitVersionCore/BuildAgents/GitLabCi.cs b/src/GitVersionCore/BuildAgents/GitLabCi.cs index 460b3c859b..e33ed5deb0 100644 --- a/src/GitVersionCore/BuildAgents/GitLabCi.cs +++ b/src/GitVersionCore/BuildAgents/GitLabCi.cs @@ -43,7 +43,7 @@ public override string GetCurrentBranch(bool usingDynamicRepos) public override bool PreventFetch() => true; - public override void WriteIntegration(Action writer, VersionVariables variables) + public override void WriteIntegration(Action writer, VersionVariables variables, bool updateBuildNumber = true) { base.WriteIntegration(writer, variables); writer($"Outputting variables to '{file}' ... "); diff --git a/src/GitVersionCore/BuildAgents/Jenkins.cs b/src/GitVersionCore/BuildAgents/Jenkins.cs index 18ca81494c..76fcd8c9ed 100644 --- a/src/GitVersionCore/BuildAgents/Jenkins.cs +++ b/src/GitVersionCore/BuildAgents/Jenkins.cs @@ -58,7 +58,7 @@ public override bool ShouldCleanUpRemotes() return IsPipelineAsCode(); } - public override void WriteIntegration(Action writer, VersionVariables variables) + public override void WriteIntegration(Action writer, VersionVariables variables, bool updateBuildNumber = true) { base.WriteIntegration(writer, variables); writer($"Outputting variables to '{file}' ... "); diff --git a/src/GitVersionCore/Common/IBuildAgent.cs b/src/GitVersionCore/Common/IBuildAgent.cs index 8a830660ff..2eedbc83cf 100644 --- a/src/GitVersionCore/Common/IBuildAgent.cs +++ b/src/GitVersionCore/Common/IBuildAgent.cs @@ -6,7 +6,7 @@ namespace GitVersion public interface IBuildAgent { bool CanApplyToCurrentContext(); - void WriteIntegration(Action writer, VersionVariables variables); + void WriteIntegration(Action writer, VersionVariables variables, bool updateBuildNumber = true); string GetCurrentBranch(bool usingDynamicRepos); bool PreventFetch(); bool ShouldCleanUpRemotes(); diff --git a/src/GitVersionCore/Configuration/ConfigExtensions.cs b/src/GitVersionCore/Configuration/ConfigExtensions.cs index 1165db94ab..e8b5da813d 100644 --- a/src/GitVersionCore/Configuration/ConfigExtensions.cs +++ b/src/GitVersionCore/Configuration/ConfigExtensions.cs @@ -36,7 +36,7 @@ public static void Reset(this Config config) config.BuildMetaDataPadding ??= 4; config.CommitsSinceVersionSourcePadding ??= 4; config.CommitDateFormat ??= "yyyy-MM-dd"; - config.UpdateBuildNumber ??= false; + config.UpdateBuildNumber ??= true; var configBranches = config.Branches.ToList(); @@ -264,7 +264,7 @@ public static EffectiveConfiguration CalculateEffectiveConfiguration(this Config var patchMessage = configuration.PatchVersionBumpMessage; var noBumpMessage = configuration.NoBumpMessage; var commitDateFormat = configuration.CommitDateFormat; - var updateBuildNumber = configuration.UpdateBuildNumber ?? false; + var updateBuildNumber = configuration.UpdateBuildNumber ?? true; var commitMessageVersionBump = currentBranchConfig.CommitMessageIncrementing ?? configuration.CommitMessageIncrementing.Value; diff --git a/src/GitVersionCore/Core/BuildAgentBase.cs b/src/GitVersionCore/Core/BuildAgentBase.cs index dc3f068950..6fe1383e8f 100644 --- a/src/GitVersionCore/Core/BuildAgentBase.cs +++ b/src/GitVersionCore/Core/BuildAgentBase.cs @@ -28,9 +28,9 @@ protected BuildAgentBase(IEnvironment environment, ILog log) public virtual bool PreventFetch() => true; public virtual bool ShouldCleanUpRemotes() => false; - public virtual void WriteIntegration(Action writer, VersionVariables variables) + public virtual void WriteIntegration(Action writer, VersionVariables variables, bool updateBuildNumber = true) { - if (writer == null) + if (writer == null || !updateBuildNumber) { return; } diff --git a/src/GitVersionCore/Model/Configuration/EffectiveConfiguration.cs b/src/GitVersionCore/Model/Configuration/EffectiveConfiguration.cs index abb135da72..8070813436 100644 --- a/src/GitVersionCore/Model/Configuration/EffectiveConfiguration.cs +++ b/src/GitVersionCore/Model/Configuration/EffectiveConfiguration.cs @@ -120,7 +120,7 @@ public EffectiveConfiguration( public IEnumerable VersionFilters { get; private set; } public string CommitDateFormat { get; private set; } - + public bool UpdateBuildNumber { get; private set; } public int PreReleaseWeight { get; private set; } diff --git a/src/GitVersionCore/VersionConverters/OutputGenerator/OutputGenerator.cs b/src/GitVersionCore/VersionConverters/OutputGenerator/OutputGenerator.cs index 60ff934471..c66e7323af 100644 --- a/src/GitVersionCore/VersionConverters/OutputGenerator/OutputGenerator.cs +++ b/src/GitVersionCore/VersionConverters/OutputGenerator/OutputGenerator.cs @@ -15,13 +15,15 @@ public class OutputGenerator : IOutputGenerator private readonly IConsole console; private readonly IFileSystem fileSystem; private readonly IOptions options; + private readonly Lazy versionContext; private readonly ICurrentBuildAgent buildAgent; - public OutputGenerator(ICurrentBuildAgent buildAgent, IConsole console, IFileSystem fileSystem, IOptions options) + public OutputGenerator(ICurrentBuildAgent buildAgent, IConsole console, IFileSystem fileSystem, IOptions options, Lazy versionContext) { this.console = console ?? throw new ArgumentNullException(nameof(console)); this.fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem)); this.options = options ?? throw new ArgumentNullException(nameof(options)); + this.versionContext = versionContext; this.buildAgent = buildAgent; } @@ -30,7 +32,7 @@ public void Execute(VersionVariables variables, OutputContext context) var gitVersionOptions = options.Value; if (gitVersionOptions.Output.Contains(OutputType.BuildServer)) { - buildAgent?.WriteIntegration(console.WriteLine, variables); + buildAgent?.WriteIntegration(console.WriteLine, variables, versionContext.Value.Configuration.UpdateBuildNumber); } if (gitVersionOptions.Output.Contains(OutputType.File)) {