Skip to content

Commit f160526

Browse files
committed
Added support for build number in Github Actions
1 parent 76d12c0 commit f160526

File tree

4 files changed

+113
-31
lines changed

4 files changed

+113
-31
lines changed

src/main/java/pl/project13/core/cibuild/GitHubBuildServerData.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package pl.project13.core.cibuild;
1919

20+
import pl.project13.core.GitCommitPropertyConstant;
2021
import pl.project13.core.log.LogInterface;
2122

2223
import javax.annotation.Nonnull;
@@ -39,7 +40,9 @@ public static boolean isActiveServer(Map<String, String> env) {
3940

4041
@Override
4142
void loadBuildNumber(@Nonnull Properties properties) {
42-
// This information is not reliably available on GitHub Actions
43+
String buildNumber = env.getOrDefault("GITHUB_RUN_NUMBER", "");
44+
45+
maybePut(properties, GitCommitPropertyConstant.BUILD_NUMBER, () -> buildNumber);
4346
}
4447

4548
@Override

src/test/java/pl/project13/core/GitCommitIdTestCallback.java

Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package pl.project13.core;
1919

2020
import pl.project13.core.git.GitDescribeConfig;
21+
import pl.project13.core.log.DummyLogInterface;
2122
import pl.project13.core.log.LogInterface;
2223
import pl.project13.core.util.BuildFileChangeListener;
2324

@@ -34,7 +35,7 @@
3435
public class GitCommitIdTestCallback {
3536
private Map<String, String> systemEnv = System.getenv();
3637
private String projectVersion = "dummy-version";
37-
private LogInterface logInterface = createDummyLogInterface();
38+
private LogInterface logInterface = new DummyLogInterface();
3839
private String dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ";
3940
private String dateFormatTimeZone = TimeZone.getDefault().getID();
4041
private String prefixDot = "git.";
@@ -362,33 +363,4 @@ private GitDescribeConfig createGitDescribeConfig(boolean forceLongFormat, int a
362363
gitDescribeConfig.setAbbrev(abbrev);
363364
return gitDescribeConfig;
364365
}
365-
366-
private LogInterface createDummyLogInterface() {
367-
return new LogInterface() {
368-
@Override
369-
public void debug(String msg) {
370-
// ignore
371-
}
372-
373-
@Override
374-
public void info(String msg) {
375-
// ignore
376-
}
377-
378-
@Override
379-
public void warn(String msg) {
380-
// ignore
381-
}
382-
383-
@Override
384-
public void error(String msg) {
385-
// ignore
386-
}
387-
388-
@Override
389-
public void error(String msg, Throwable t) {
390-
// ignore
391-
}
392-
};
393-
}
394366
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package pl.project13.core.cibuild;
2+
3+
import org.junit.jupiter.api.Nested;
4+
import org.junit.jupiter.api.Test;
5+
import pl.project13.core.GitCommitPropertyConstant;
6+
import pl.project13.core.log.DummyLogInterface;
7+
8+
import java.util.Map;
9+
import java.util.Properties;
10+
11+
import static org.assertj.core.api.Assertions.assertThat;
12+
13+
class BuildServerDataProviderTest {
14+
@Test
15+
void shouldSelectGithubAsDataProvider() {
16+
Map<String, String> environment = Map.of("GITHUB_ACTIONS", "true");
17+
18+
BuildServerDataProvider provider = BuildServerDataProvider.getBuildServerProvider(environment, new DummyLogInterface());
19+
20+
assertThat(provider).isInstanceOf(GitHubBuildServerData.class);
21+
}
22+
23+
@Nested
24+
class GithubProviderTests {
25+
@Test
26+
void shouldVerifyOnGithubEnvironment() {
27+
Map<String, String> environment = Map.of("GITHUB_ACTIONS", "true");
28+
29+
assertThat(GitHubBuildServerData.isActiveServer(environment)).isTrue();
30+
}
31+
32+
@Test
33+
void shouldLoadBuildNumber() {
34+
Properties properties = new Properties();
35+
Map<String, String> environment = Map.of("GITHUB_RUN_NUMBER", "123");
36+
GitHubBuildServerData provider = new GitHubBuildServerData(new DummyLogInterface(), environment);
37+
38+
provider.loadBuildNumber(properties);
39+
40+
assertThat(properties).containsEntry(GitCommitPropertyConstant.BUILD_NUMBER, "123");
41+
}
42+
43+
@Test
44+
void shouldLoadBuildNumberAsEmptyIfNotAvailable() {
45+
Properties properties = new Properties();
46+
Map<String, String> environment = Map.of();
47+
GitHubBuildServerData provider = new GitHubBuildServerData(new DummyLogInterface(), environment);
48+
49+
provider.loadBuildNumber(properties);
50+
51+
assertThat(properties).containsEntry(GitCommitPropertyConstant.BUILD_NUMBER, "");
52+
}
53+
54+
@Test
55+
void shouldLoadBranchNameForPullRequestBuild() {
56+
Map<String, String> environment = Map.of("GITHUB_REF", "refs/pull/feature_branch",
57+
"GITHUB_HEAD_REF", "feature_branch");
58+
GitHubBuildServerData provider = new GitHubBuildServerData(new DummyLogInterface(), environment);
59+
60+
assertThat(provider.getBuildBranch()).isEqualTo("feature_branch");
61+
}
62+
63+
@Test
64+
void shouldLoadBranchNameForBranchBuild() {
65+
Map<String, String> environment = Map.of("GITHUB_REF", "refs/heads/feature_branch");
66+
GitHubBuildServerData provider = new GitHubBuildServerData(new DummyLogInterface(), environment);
67+
68+
assertThat(provider.getBuildBranch()).isEqualTo("feature_branch");
69+
}
70+
71+
@Test
72+
void shouldLoadBranchNameAsEmptyIfNotAvailable() {
73+
Map<String, String> environment = Map.of();
74+
GitHubBuildServerData provider = new GitHubBuildServerData(new DummyLogInterface(), environment);
75+
76+
assertThat(provider.getBuildBranch()).isEmpty();
77+
}
78+
}
79+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package pl.project13.core.log;
2+
3+
public class DummyLogInterface implements LogInterface {
4+
@Override
5+
public void debug(String msg) {
6+
// ignore
7+
}
8+
9+
@Override
10+
public void info(String msg) {
11+
// ignore
12+
}
13+
14+
@Override
15+
public void warn(String msg) {
16+
// ignore
17+
}
18+
19+
@Override
20+
public void error(String msg) {
21+
// ignore
22+
}
23+
24+
@Override
25+
public void error(String msg, Throwable t) {
26+
// ignore
27+
}
28+
}

0 commit comments

Comments
 (0)