diff --git a/src/GitVersionCore.Tests/BuildServers/EnvironmentVariableJenkinsTests.cs b/src/GitVersionCore.Tests/BuildServers/EnvironmentVariableJenkinsTests.cs index 6daea9a767..a6c0d2e8a0 100644 --- a/src/GitVersionCore.Tests/BuildServers/EnvironmentVariableJenkinsTests.cs +++ b/src/GitVersionCore.Tests/BuildServers/EnvironmentVariableJenkinsTests.cs @@ -7,6 +7,8 @@ public class EnvironmentVariableJenkinsTests { string key = "JENKINS_URL"; + string branch = "GIT_BRANCH"; + string localBranch = "GIT_LOCAL_BRANCH"; private void SetEnvironmentVariableForDetection() { @@ -33,4 +35,29 @@ public void CanNotApplyCurrentContextWhenEnvironmentVariableIsNotSet() var j = new Jenkins(); j.CanApplyToCurrentContext().ShouldBe(false); } + + [Test] + public void JenkinsTakesLocalBranchNameNotRemoteName() + { + // Save original values so they can be restored + string branchOrig = Environment.GetEnvironmentVariable(branch); + string localBranchOrig = Environment.GetEnvironmentVariable(localBranch); + + // Set GIT_BRANCH for testing + Environment.SetEnvironmentVariable(branch, "origin/master"); + + // Test Jenkins that GetCurrentBranch falls back to GIT_BRANCH if GIT_LOCAL_BRANCH undefined + var j = new Jenkins(); + j.GetCurrentBranch(true).ShouldBe("origin/master"); + + // Set GIT_LOCAL_BRANCH + Environment.SetEnvironmentVariable(localBranch, "master"); + + // Test Jenkins GetCurrentBranch method now returns GIT_LOCAL_BRANCH + j.GetCurrentBranch(true).ShouldBe("master"); + + // Restore environment variables + Environment.SetEnvironmentVariable(branch, branchOrig); + Environment.SetEnvironmentVariable(localBranch, localBranchOrig); + } } \ No newline at end of file diff --git a/src/GitVersionCore/BuildServers/Jenkins.cs b/src/GitVersionCore/BuildServers/Jenkins.cs index b0b626d90a..ee00301e95 100644 --- a/src/GitVersionCore/BuildServers/Jenkins.cs +++ b/src/GitVersionCore/BuildServers/Jenkins.cs @@ -36,7 +36,7 @@ public override string[] GenerateSetParameterMessage(string name, string value) public override string GetCurrentBranch(bool usingDynamicRepos) { - return Environment.GetEnvironmentVariable("GIT_BRANCH"); + return Environment.GetEnvironmentVariable("GIT_LOCAL_BRANCH") ?? Environment.GetEnvironmentVariable("GIT_BRANCH"); } public override bool PreventFetch()