Skip to content

Commit

Permalink
Merge pull request #259 from martinda/extensive-build-info
Browse files Browse the repository at this point in the history
Extensive build info
  • Loading branch information
martinda authored Sep 29, 2022
2 parents 29c983f + 3a4fd84 commit 0c3fb6c
Show file tree
Hide file tree
Showing 7 changed files with 78 additions and 5 deletions.
2 changes: 1 addition & 1 deletion src/main/docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
ARG jenkins_tag=2.277.4-jdk11
ARG jenkins_tag=2.303.3-lts-jdk11

FROM jenkins/jenkins:$jenkins_tag

Expand Down
1 change: 1 addition & 0 deletions src/main/docker/plugins.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ plugins:
- artifactId: cloudbees-folder
- artifactId: configuration-as-code
- artifactId: workflow-aggregator
- artifactId: badge
17 changes: 14 additions & 3 deletions src/main/java/com/cdancy/jenkins/rest/domain/job/Action.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.json.SerializedNames;

import java.util.List;
Expand All @@ -30,14 +31,24 @@ public abstract class Action {

public abstract List<Parameter> parameters();

@Nullable
public abstract String text();

@Nullable
public abstract String iconPath();

@Nullable
public abstract String _class();
Action() {
}

@SerializedNames({"causes", "parameters"})
public static Action create(final List<Cause> causes, final List<Parameter> parameters) {
@SerializedNames({"causes", "parameters", "text", "iconPath", "_class"})
public static Action create(final List<Cause> causes, final List<Parameter> parameters, final String text, final String iconPath, final String _class) {
return new AutoValue_Action(
causes != null ? ImmutableList.copyOf(causes) : ImmutableList.<Cause>of(),
parameters != null ? ImmutableList.copyOf(parameters) : ImmutableList.<Parameter>of());
parameters != null ? ImmutableList.copyOf(parameters) : ImmutableList.<Parameter>of(),
text, iconPath, _class
);
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ public class JobsApiLiveTest extends BaseJenkinsApiLiveTest {

private static final String FREESTYLE_JOB_NAME = "FreeStyleSleep";
private static final String PIPELINE_JOB_NAME = "PipelineSleep";
private static final String PIPELINE_WITH_ACTION_JOB_NAME = "PipelineAction";

@Test
public void testCreateJob() {
Expand Down Expand Up @@ -249,6 +250,39 @@ public void testGetBuildParametersOfLastJob() {
assertEquals(parameters.size(), 0);
}

@Test
public void testBuildInfoActions() throws InterruptedException {
String config = payloadFromResource("/pipeline-with-action.xml");
RequestStatus createStatus = api().create(null, PIPELINE_WITH_ACTION_JOB_NAME, config);
assertTrue(createStatus.value());
IntegerResponse qId = api().build(null, PIPELINE_WITH_ACTION_JOB_NAME);
assertNotNull(qId);
assertTrue(qId.value() > 0);
QueueItem queueItem = getRunningQueueItem(qId.value());
assertNotNull(queueItem);
assertNotNull(queueItem.executable());
assertNotNull(queueItem.executable().number());
BuildInfo buildInfo = getCompletedBuild(PIPELINE_WITH_ACTION_JOB_NAME, queueItem);
assertEquals(buildInfo.result(), "SUCCESS");
System.out.println(buildInfo);
boolean found = false;
for (int idx = 0; idx < buildInfo.actions().size(); idx++) {
if (buildInfo.actions().get(idx).text() != null) {
if (buildInfo.actions().get(idx).text().equals("Hudson, we have a problem.") &&
buildInfo.actions().get(idx).iconPath().equals("error.svg") &&
buildInfo.actions().get(idx)._class().equals("com.jenkinsci.plugins.badge.action.BadgeSummaryAction")) {
found = true;
}
}
}
assertTrue(found);

// The Job is no longer needed, delete it.
RequestStatus success = api().delete(null, PIPELINE_WITH_ACTION_JOB_NAME);
assertNotNull(success);
assertTrue(success.value());
}

@Test(dependsOnMethods = "testGetBuildParametersOfLastJob")
public void testCreateJobThatAlreadyExists() {
String config = payloadFromResource("/freestyle-project.xml");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,12 @@ public void testGetBuildInfo() throws Exception {
assertNotNull(output);
assertEquals(output.fullDisplayName(), "fish #10");
assertEquals(output.artifacts().size(), 1);
assertEquals(output.actions().size(), 5);
assertEquals(output.actions().get(2).text(), "<strong>There could be HTML text here</strong>");
assertEquals(output.actions().get(2).iconPath(), "clipboard.png");
assertEquals(output.actions().get(2)._class(), "com.jenkinsci.plugins.badge.action.BadgeSummaryAction");
assertEquals(output.actions().get(3).text(), null);
assertEquals(output.actions().get(4)._class(), "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction");
assertSent(server, "GET", "/job/fish/10/api/json");
} finally {
jenkinsApi.close();
Expand Down
11 changes: 10 additions & 1 deletion src/test/resources/build-info.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,15 @@
"userName" : "anonymous"
}
]
},
{
"text" : "<strong>There could be HTML text here</strong>",
"iconPath" : "clipboard.png",
"_class" : "com.jenkinsci.plugins.badge.action.BadgeSummaryAction"
},
{},
{
"_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
}
],
"artifacts" : [
Expand Down Expand Up @@ -56,4 +65,4 @@
"fullName": "username"
}
]
}
}
12 changes: 12 additions & 0 deletions src/test/resources/pipeline-with-action.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<flow-definition plugin="workflow-job@1145.v7f2433caa07f">
<actions/>
<description/>
<keepDependencies>false</keepDependencies>
<properties/>
<definition class="org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition" plugin="workflow-cps@2648.va9433432b33c">
<script>node { createSummary("error.svg").appendText("Hudson, we have a problem.", false, false, false, "red"); }</script>
<sandbox>true</sandbox>
</definition>
<triggers/>
<disabled>false</disabled>
</flow-definition>

0 comments on commit 0c3fb6c

Please sign in to comment.