Skip to content

Commit a886921

Browse files
authored
Merge pull request #2468 from carcer/feature/codebuild-source-version
Adds CodeBuild support for builds that are not initiated via a webhook
2 parents c67982d + 137f5ca commit a886921

File tree

3 files changed

+34
-8
lines changed

3 files changed

+34
-8
lines changed

src/GitVersionCore.Tests/BuildAgents/CodeBuildTests.cs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,30 @@ public void SetUp()
3131
}
3232

3333
[Test]
34-
public void CorrectlyIdentifiesCodeBuildPresence()
34+
public void CorrectlyIdentifiesCodeBuildPresenceFromSourceVersion()
3535
{
36-
environment.SetEnvironmentVariable(CodeBuild.EnvironmentVariableName, "a value");
36+
environment.SetEnvironmentVariable(CodeBuild.SourceVersionEnvironmentVariableName, "a value");
3737
buildServer.CanApplyToCurrentContext().ShouldBe(true);
3838
}
3939

4040
[Test]
41-
public void PicksUpBranchNameFromEnvironment()
41+
public void PicksUpBranchNameFromEnvironmentFromSourceVersion()
4242
{
43-
environment.SetEnvironmentVariable(CodeBuild.EnvironmentVariableName, "refs/heads/master");
43+
environment.SetEnvironmentVariable(CodeBuild.SourceVersionEnvironmentVariableName, "refs/heads/master");
44+
buildServer.GetCurrentBranch(false).ShouldBe("refs/heads/master");
45+
}
46+
47+
[Test]
48+
public void CorrectlyIdentifiesCodeBuildPresenceFromWebHook()
49+
{
50+
environment.SetEnvironmentVariable(CodeBuild.WebHookEnvironmentVariableName, "a value");
51+
buildServer.CanApplyToCurrentContext().ShouldBe(true);
52+
}
53+
54+
[Test]
55+
public void PicksUpBranchNameFromEnvironmentFromWebHook()
56+
{
57+
environment.SetEnvironmentVariable(CodeBuild.WebHookEnvironmentVariableName, "refs/heads/master");
4458
buildServer.GetCurrentBranch(false).ShouldBe("refs/heads/master");
4559
}
4660

src/GitVersionCore/BuildAgents/CodeBuild.cs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ namespace GitVersion.BuildAgents
88
public sealed class CodeBuild : BuildAgentBase
99
{
1010
private string file;
11-
public const string EnvironmentVariableName = "CODEBUILD_WEBHOOK_HEAD_REF";
11+
public const string WebHookEnvironmentVariableName = "CODEBUILD_WEBHOOK_HEAD_REF";
12+
public const string SourceVersionEnvironmentVariableName = "CODEBUILD_SOURCE_VERSION";
1213

1314
public CodeBuild(IEnvironment environment, ILog log) : base(environment, log)
1415
{
@@ -20,7 +21,7 @@ public void WithPropertyFile(string propertiesFileName)
2021
file = propertiesFileName;
2122
}
2223

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

2526
public override string GenerateSetVersionMessage(VersionVariables variables)
2627
{
@@ -37,7 +38,15 @@ public override string[] GenerateSetParameterMessage(string name, string value)
3738

3839
public override string GetCurrentBranch(bool usingDynamicRepos)
3940
{
40-
return Environment.GetEnvironmentVariable(EnvironmentVariableName);
41+
42+
var currentBranch = Environment.GetEnvironmentVariable(WebHookEnvironmentVariableName);
43+
44+
if (string.IsNullOrEmpty(currentBranch))
45+
{
46+
return Environment.GetEnvironmentVariable(SourceVersionEnvironmentVariableName);
47+
}
48+
49+
return currentBranch;
4150
}
4251

4352
public override void WriteIntegration(Action<string> writer, VersionVariables variables, bool updateBuildNumber = true)
@@ -48,5 +57,8 @@ public override void WriteIntegration(Action<string> writer, VersionVariables va
4857
}
4958

5059
public override bool PreventFetch() => true;
60+
61+
public override bool CanApplyToCurrentContext()
62+
=> !string.IsNullOrEmpty(Environment.GetEnvironmentVariable(WebHookEnvironmentVariableName)) || !string.IsNullOrEmpty(Environment.GetEnvironmentVariable(SourceVersionEnvironmentVariableName));
5163
}
5264
}

src/GitVersionExe.Tests/PullRequestInBuildAgentTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public async Task VerifyCodeBuildPullRequest(string pullRequestRef)
3838
{
3939
var env = new Dictionary<string, string>
4040
{
41-
{ CodeBuild.EnvironmentVariableName, PullRequestBranchName },
41+
{ CodeBuild.WebHookEnvironmentVariableName, PullRequestBranchName },
4242
};
4343
await VerifyPullRequestVersionIsCalculatedProperly(pullRequestRef, env);
4444
}

0 commit comments

Comments
 (0)