Skip to content

Commit

Permalink
Merge pull request #3 from jenkinsci/compat
Browse files Browse the repository at this point in the history
[JENKINS-49294] Don't serialize GHRepository
  • Loading branch information
jxpearce-godaddy committed Feb 6, 2018
2 parents 4d64f0c + 60051e1 commit 636150c
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 26 deletions.
2 changes: 1 addition & 1 deletion Jenkinsfile
@@ -1 +1 @@
buildPlugin()
buildPlugin(jenkinsVersions: [null, '2.102'])
11 changes: 9 additions & 2 deletions pom.xml
Expand Up @@ -4,14 +4,15 @@
<parent>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plugin</artifactId>
<version>2.36</version>
<version>3.4</version>
<relativePath />
</parent>
<artifactId>github-autostatus</artifactId>
<version>1.1-SNAPSHOT</version>
<packaging>hpi</packaging>
<properties>
<jenkins.version>2.7.3</jenkins.version>
<java.level>7</java.level>
</properties>
<name>Github Autostatus Plugin</name>
<description>Automatically generates github status for each stage in a declarative pipeline.</description>
Expand Down Expand Up @@ -90,10 +91,16 @@
<version>1.2.1</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>token-macro</artifactId>
<version>1.12.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jenkins-ci</groupId>
<artifactId>annotation-indexer</artifactId>
<version>1.11</version>
<version>1.12</version>
<type>jar</type>
</dependency>
<dependency>
Expand Down
Expand Up @@ -39,8 +39,7 @@
*/
public class BuildStatus {

public BuildStatus(GHRepository repository, String shaString, String targetUrl, String context) {
this.repository = repository;
public BuildStatus(String shaString, String targetUrl, String context) {
this.shaString = shaString;
this.targetUrl = targetUrl;
this.context = context;
Expand All @@ -59,8 +58,6 @@ public BuildStatus(GHRepository repository, String shaString, String targetUrl,

private GHCommitState commitState;

private final GHRepository repository;

private final String targetUrl;

/**
Expand All @@ -81,10 +78,11 @@ public GHCommitState getCommitState() {

/**
* Sets the commit state and sends the new state to GitHub
* @param repository the repository to notify
* @param commitState the commitState to set
* @throws java.io.IOException downstream error
*/
public void setCommitState(GHCommitState commitState) throws IOException {
public void setCommitState(GHRepository repository, GHCommitState commitState) throws IOException {
this.commitState = commitState;
repository.createCommitStatus(shaString, commitState, targetUrl, DESCRIPTION_MAP.get(commitState), context);
}
Expand Down
Expand Up @@ -42,28 +42,25 @@ public BuildStatusAction(GHRepository repository,
String shaString,
String targetUrl,
List<String> stageList) throws IOException {
this.repository = repository;
this.shaString = shaString;
this.targetUrl = targetUrl;
this.buildStatuses = new HashMap<>();
for (String stageName : stageList) {
addBuildStatus(stageName);
addBuildStatus(repository, stageName);
}
}

private final HashMap<String, BuildStatus> buildStatuses;

private final GHRepository repository;

private final String shaString;

private final String targetUrl;

public void addBuildStatus(String stageName) {
public final void addBuildStatus(GHRepository repository, String stageName) {
try {
BuildStatus buildStatus = new BuildStatus(repository, shaString, targetUrl, stageName);
buildStatus.setCommitState(GHCommitState.PENDING);
BuildStatus buildStatus = new BuildStatus(shaString, targetUrl, stageName);
buildStatuses. put(buildStatus.getContext(), buildStatus);
buildStatus.setCommitState(repository, GHCommitState.PENDING);
} catch (IOException ex) {
Logger.getLogger(BuildStatusAction.class.getName()).log(Level.SEVERE, null, ex);
}
Expand Down
Expand Up @@ -59,10 +59,8 @@
import org.jenkinsci.plugins.workflow.actions.StageAction;
import org.jenkinsci.plugins.workflow.actions.ThreadNameAction;
import org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode;
import org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode;
import org.jenkinsci.plugins.workflow.flow.FlowExecution;
import org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject;
import org.jenkinsci.plugins.workflow.support.steps.StageStep;
import org.kohsuke.github.GHCommitState;
import org.kohsuke.github.GHRepository;
import org.kohsuke.github.GitHub;
Expand Down Expand Up @@ -100,10 +98,13 @@ public void onNewHead(FlowNode fn) {
if (label != null) {
BuildStatus buildStatus = buildStatusAction.getBuildStatusForStage(label.getDisplayName());
if (buildStatus != null) {
ErrorAction errorAction = fn.getAction(ErrorAction.class);
buildStatus.setCommitState(errorAction == null ?
GHRepository repo = getGHRepository(fn.getExecution());
if (null != repo) {
ErrorAction errorAction = fn.getAction(ErrorAction.class);
buildStatus.setCommitState(repo, errorAction == null ?
GHCommitState.SUCCESS :
GHCommitState.ERROR);
}
}
}
}
Expand Down Expand Up @@ -247,6 +248,14 @@ private static String getCommitSha(Run<?, ?> run) {
return shaString;
}

private static GHRepository getGHRepository(FlowExecution exec) throws IOException {
Run<?, ?> run = runFor(exec);
if (run != null) {
return getGHRepository(run, exec.getOwner().getListener());
}
return null;
}

private static GHRepository getGHRepository (Run<?, ?> run, TaskListener listener) throws IOException {
ItemGroup parent = run.getParent().getParent();
WorkflowMultiBranchProject project = null;
Expand Down
Expand Up @@ -71,7 +71,7 @@ public void testAddBuildStatus() throws IOException {
GHRepository repository = mock(GHRepository.class);

BuildStatusAction instance = new BuildStatusAction(repository, "sha", "targetUrl", new ArrayList<String>());
instance.addBuildStatus(stageName);
instance.addBuildStatus(repository, stageName);

verify(repository).createCommitStatus("sha", GHCommitState.PENDING, "targetUrl", "Building stage", stageName);
}
Expand All @@ -86,7 +86,7 @@ public void testValidGetBuildStatus() throws IOException {
GHRepository repository = mock(GHRepository.class);

BuildStatusAction instance = new BuildStatusAction(repository, "sha", "targetUrl", new ArrayList<String>());
instance.addBuildStatus(stageName);
instance.addBuildStatus(repository, stageName);

assertNotNull(instance.getBuildStatusForStage(stageName));
}
Expand All @@ -100,7 +100,7 @@ public void testInvalidGetBuildStatus() throws IOException {
GHRepository repository = mock(GHRepository.class);

BuildStatusAction instance = new BuildStatusAction(repository, "sha", "targetUrl", new ArrayList<String>());
instance.addBuildStatus(stageName);
instance.addBuildStatus(repository, stageName);

assertNull(instance.getBuildStatusForStage("Stage 2"));
}
Expand Down
8 changes: 4 additions & 4 deletions src/test/java/org/jenkinsci/plugins/BuildStatusTest.java
Expand Up @@ -65,7 +65,7 @@ public void tearDown() {
@Test
public void testGetContext() {
String expResult = "test context";
BuildStatus instance = new BuildStatus(null, "", "", expResult);
BuildStatus instance = new BuildStatus("", "", expResult);
String result = instance.getContext();
assertEquals(expResult, result);
}
Expand All @@ -75,7 +75,7 @@ public void testGetContext() {
*/
@Test
public void testGetCommitState() {
BuildStatus instance = new BuildStatus(null, "", "", "");
BuildStatus instance = new BuildStatus("", "", "");

GHCommitState result = instance.getCommitState();
assertEquals(GHCommitState.PENDING, result);
Expand All @@ -87,9 +87,9 @@ public void testGetCommitState() {
@Test
public void testSetCommitState() throws Exception {
GHRepository repository = mock(GHRepository.class);
BuildStatus instance = new BuildStatus(repository, "", "", "");
BuildStatus instance = new BuildStatus("", "", "");

instance.setCommitState(GHCommitState.SUCCESS);
instance.setCommitState(repository, GHCommitState.SUCCESS);

GHCommitState result = instance.getCommitState();
assertEquals(GHCommitState.SUCCESS, result);
Expand Down

0 comments on commit 636150c

Please sign in to comment.