diff --git a/src/GitVersion.Core.Tests/BuildAgents/AzurePipelinesTests.cs b/src/GitVersion.Core.Tests/BuildAgents/AzurePipelinesTests.cs index 0845c862d5..d14d9ec83c 100644 --- a/src/GitVersion.Core.Tests/BuildAgents/AzurePipelinesTests.cs +++ b/src/GitVersion.Core.Tests/BuildAgents/AzurePipelinesTests.cs @@ -80,43 +80,4 @@ public void AzurePipelinesBuildNumberWithSemVer(string buildNumberFormat, string var logMessage = this.buildServer.GenerateSetVersionMessage(vars); logMessage.ShouldBe(logPrefix + expectedBuildNumber); } - - [Test] - public void GetCurrentBranchShouldHandleBranches() - { - // Arrange - this.environment.SetEnvironmentVariable("BUILD_SOURCEBRANCH", $"refs/heads/{MainBranch}"); - - // Act - var result = this.buildServer.GetCurrentBranch(false); - - // Assert - result.ShouldBe($"refs/heads/{MainBranch}"); - } - - [Test] - public void GetCurrentBranchShouldHandleTags() - { - // Arrange - this.environment.SetEnvironmentVariable("BUILD_SOURCEBRANCH", "refs/tags/1.0.0"); - - // Act - var result = this.buildServer.GetCurrentBranch(false); - - // Assert - result.ShouldBeNull(); - } - - [Test] - public void GetCurrentBranchShouldHandlePullRequests() - { - // Arrange - this.environment.SetEnvironmentVariable("BUILD_SOURCEBRANCH", "refs/pull/1/merge"); - - // Act - var result = this.buildServer.GetCurrentBranch(false); - - // Assert - result.ShouldBeNull(); - } } diff --git a/src/GitVersion.Core.Tests/BuildAgents/BuildKiteTests.cs b/src/GitVersion.Core.Tests/BuildAgents/BuildKiteTests.cs index a07fb28a68..4bbd4541fb 100644 --- a/src/GitVersion.Core.Tests/BuildAgents/BuildKiteTests.cs +++ b/src/GitVersion.Core.Tests/BuildAgents/BuildKiteTests.cs @@ -72,7 +72,7 @@ public void GetCurrentBranchShouldHandlePullRequests() var result = this.buildServer.GetCurrentBranch(false); // Assert - result.ShouldBeNull(); + result.ShouldBe("refs/pull/55/head"); } [Test] diff --git a/src/GitVersion.Core.Tests/BuildAgents/CodeBuildTests.cs b/src/GitVersion.Core.Tests/BuildAgents/CodeBuildTests.cs index 6f0406bef5..b81e4f1e91 100644 --- a/src/GitVersion.Core.Tests/BuildAgents/CodeBuildTests.cs +++ b/src/GitVersion.Core.Tests/BuildAgents/CodeBuildTests.cs @@ -102,30 +102,4 @@ private void AssertVariablesAreWrittenToFile(string file) props.ShouldContain("GitVersion_Major=1"); props.ShouldContain("GitVersion_Minor=2"); } - - [Test] - public void GetCurrentBranchShouldHandleTags() - { - // Arrange - this.environment.SetEnvironmentVariable("CODEBUILD_WEBHOOK_HEAD_REF", "refs/tags/1.0.0"); - - // Act - var result = this.buildServer.GetCurrentBranch(false); - - // Assert - result.ShouldBeNull(); - } - - [Test] - public void GetCurrentBranchShouldHandlePullRequests() - { - // Arrange - this.environment.SetEnvironmentVariable("CODEBUILD_SOURCE_VERSION", "refs/pull/1/merge"); - - // Act - var result = this.buildServer.GetCurrentBranch(false); - - // Assert - result.ShouldBeNull(); - } } diff --git a/src/GitVersion.Core.Tests/BuildAgents/GitHubActionsTests.cs b/src/GitVersion.Core.Tests/BuildAgents/GitHubActionsTests.cs index 7b30d97db5..f4fbc1b621 100644 --- a/src/GitVersion.Core.Tests/BuildAgents/GitHubActionsTests.cs +++ b/src/GitVersion.Core.Tests/BuildAgents/GitHubActionsTests.cs @@ -83,7 +83,7 @@ public void GetCurrentBranchShouldHandleTags() var result = this.buildServer.GetCurrentBranch(false); // Assert - result.ShouldBeNull(); + result.ShouldBe("refs/tags/1.0.0"); } [Test] @@ -96,7 +96,7 @@ public void GetCurrentBranchShouldHandlePullRequests() var result = this.buildServer.GetCurrentBranch(false); // Assert - result.ShouldBeNull(); + result.ShouldBe("refs/pull/1/merge"); } [Test] diff --git a/src/GitVersion.Core.Tests/BuildAgents/SpaceAutomationTests.cs b/src/GitVersion.Core.Tests/BuildAgents/SpaceAutomationTests.cs index 938d7834f2..f4160a9154 100644 --- a/src/GitVersion.Core.Tests/BuildAgents/SpaceAutomationTests.cs +++ b/src/GitVersion.Core.Tests/BuildAgents/SpaceAutomationTests.cs @@ -1,10 +1,11 @@ +using GitVersion; using GitVersion.BuildAgents; using GitVersion.Core.Tests.Helpers; using Microsoft.Extensions.DependencyInjection; using NUnit.Framework; using Shouldly; -namespace GitVersion.Core.Tests.BuildAgents; +namespace GitVersionCore.Tests.BuildAgents; [TestFixture] public class SpaceAutomationTests : TestBase @@ -70,7 +71,7 @@ public void GetCurrentBranchShouldHandleTags() var result = this.buildServer.GetCurrentBranch(false); // Assert - result.ShouldBeNull(); + result.ShouldBe("refs/tags/1.0.0"); } [Test] @@ -83,7 +84,7 @@ public void GetCurrentBranchShouldHandlePullRequests() var result = this.buildServer.GetCurrentBranch(false); // Assert - result.ShouldBeNull(); + result.ShouldBe("refs/pull/1/merge"); } [Test] diff --git a/src/GitVersion.Core/BuildAgents/AzurePipelines.cs b/src/GitVersion.Core/BuildAgents/AzurePipelines.cs index ebb223479d..30e08ee059 100644 --- a/src/GitVersion.Core/BuildAgents/AzurePipelines.cs +++ b/src/GitVersion.Core/BuildAgents/AzurePipelines.cs @@ -21,17 +21,7 @@ public override string[] GenerateSetParameterMessage(string name, string value) $"##vso[task.setvariable variable=GitVersion.{name};isOutput=true]{value}" }; - public override string? GetCurrentBranch(bool usingDynamicRepos) - { - // https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables - // BUILD_SOURCEBRANCH does not contain the branch name if the build was triggered by a tag or pull request. - string? branchName = Environment.GetEnvironmentVariable("BUILD_SOURCEBRANCH"); - if (branchName != null && branchName.StartsWith("refs/heads/")) - { - return branchName; - } - return null; - } + public override string? GetCurrentBranch(bool usingDynamicRepos) => Environment.GetEnvironmentVariable("BUILD_SOURCEBRANCH"); public override bool PreventFetch() => true; diff --git a/src/GitVersion.Core/BuildAgents/BuildKite.cs b/src/GitVersion.Core/BuildAgents/BuildKite.cs index d6cff4b4d4..f54fb2a1ca 100644 --- a/src/GitVersion.Core/BuildAgents/BuildKite.cs +++ b/src/GitVersion.Core/BuildAgents/BuildKite.cs @@ -30,9 +30,9 @@ public override string[] GenerateSetParameterMessage(string name, string value) } else { - // To align the behavior with the other BuildAgent implementations - // we return here also null. - return null; + // For pull requests BUILDKITE_BRANCH refers to the head, so adjust the + // branch name for pull request versioning to function as expected + return string.Format("refs/pull/{0}/head", pullRequest); } } diff --git a/src/GitVersion.Core/BuildAgents/CodeBuild.cs b/src/GitVersion.Core/BuildAgents/CodeBuild.cs index 1c1fbc7f99..1b06d29ce4 100644 --- a/src/GitVersion.Core/BuildAgents/CodeBuild.cs +++ b/src/GitVersion.Core/BuildAgents/CodeBuild.cs @@ -25,17 +25,9 @@ public override string[] GenerateSetParameterMessage(string name, string value) public override string? GetCurrentBranch(bool usingDynamicRepos) { - string? branchName = Environment.GetEnvironmentVariable(WebHookEnvironmentVariableName); - if (string.IsNullOrEmpty(branchName)) - { - branchName = Environment.GetEnvironmentVariable(SourceVersionEnvironmentVariableName); - } - - if (branchName != null && branchName.StartsWith("refs/heads/")) - { - return branchName; - } - return null; + var currentBranch = Environment.GetEnvironmentVariable(WebHookEnvironmentVariableName); + + return currentBranch.IsNullOrEmpty() ? Environment.GetEnvironmentVariable(SourceVersionEnvironmentVariableName) : currentBranch; } public override void WriteIntegration(Action writer, VersionVariables variables, bool updateBuildNumber = true) diff --git a/src/GitVersion.Core/BuildAgents/GitHubActions.cs b/src/GitVersion.Core/BuildAgents/GitHubActions.cs index a9b955c8bf..f1a694367e 100644 --- a/src/GitVersion.Core/BuildAgents/GitHubActions.cs +++ b/src/GitVersion.Core/BuildAgents/GitHubActions.cs @@ -50,18 +50,7 @@ public override void WriteIntegration(Action writer, VersionVariables v } } - public override string? GetCurrentBranch(bool usingDynamicRepos) - { - // https://docs.github.com/en/actions/learn-github-actions/environment-variables#default-environment-variables - // GITHUB_REF must be used only for "real" branches, not for tags and pull requests. - // Bug fix for https://github.com/GitTools/GitVersion/issues/2838 - string? githubRef = Environment.GetEnvironmentVariable("GITHUB_REF"); - if (githubRef != null && githubRef.StartsWith("refs/heads/")) - { - return githubRef; - } - return null; - } + public override string? GetCurrentBranch(bool usingDynamicRepos) => Environment.GetEnvironmentVariable("GITHUB_REF"); public override bool PreventFetch() => true; } diff --git a/src/GitVersion.Core/BuildAgents/GitLabCi.cs b/src/GitVersion.Core/BuildAgents/GitLabCi.cs index 3b1c7cb171..e20adcf783 100644 --- a/src/GitVersion.Core/BuildAgents/GitLabCi.cs +++ b/src/GitVersion.Core/BuildAgents/GitLabCi.cs @@ -22,9 +22,7 @@ public override string[] GenerateSetParameterMessage(string name, string value) $"GitVersion_{name}={value}" }; - // According to https://docs.gitlab.com/ee/ci/variables/predefined_variables.html - // the CI_COMMIT_BRANCH environment variable must be used. - public override string? GetCurrentBranch(bool usingDynamicRepos) => Environment.GetEnvironmentVariable("CI_COMMIT_BRANCH"); + public override string? GetCurrentBranch(bool usingDynamicRepos) => Environment.GetEnvironmentVariable("CI_COMMIT_REF_NAME"); public override bool PreventFetch() => true; diff --git a/src/GitVersion.Core/BuildAgents/SpaceAutomation.cs b/src/GitVersion.Core/BuildAgents/SpaceAutomation.cs index bda08aaf28..43be822a07 100644 --- a/src/GitVersion.Core/BuildAgents/SpaceAutomation.cs +++ b/src/GitVersion.Core/BuildAgents/SpaceAutomation.cs @@ -13,15 +13,7 @@ public SpaceAutomation(IEnvironment environment, ILog log) : base(environment, l protected override string EnvironmentVariable => EnvironmentVariableName; - public override string? GetCurrentBranch(bool usingDynamicRepos) - { - string? branchName = Environment.GetEnvironmentVariable("JB_SPACE_GIT_BRANCH"); - if (branchName != null && branchName.StartsWith("refs/heads/")) - { - return branchName; - } - return null; - } + public override string? GetCurrentBranch(bool usingDynamicRepos) => Environment.GetEnvironmentVariable("JB_SPACE_GIT_BRANCH"); public override string[] GenerateSetParameterMessage(string name, string value) => Array.Empty();