From e651418fe37f2cc1587a4fdaf6e4f80bcb70adf0 Mon Sep 17 00:00:00 2001 From: Tyler Camp Date: Wed, 11 Jan 2023 11:59:46 -0500 Subject: [PATCH] Add option to fail the build if the Code Dx analysis failed (#12) * Add option to fail the build if the Code Dx analysis failed * Remove unnecessary import --- .../plugins/codedx/AnalysisResultConfiguration.java | 13 +++++++++++-- .../jenkinsci/plugins/codedx/CodeDxPublisher.java | 3 +++ .../plugins/codedx/CodeDxPublisher/config.jelly | 4 ++++ src/main/webapp/help-breakIfFailed.html | 4 ++++ 4 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 src/main/webapp/help-breakIfFailed.html diff --git a/src/main/java/org/jenkinsci/plugins/codedx/AnalysisResultConfiguration.java b/src/main/java/org/jenkinsci/plugins/codedx/AnalysisResultConfiguration.java index 4279a00..3266126 100644 --- a/src/main/java/org/jenkinsci/plugins/codedx/AnalysisResultConfiguration.java +++ b/src/main/java/org/jenkinsci/plugins/codedx/AnalysisResultConfiguration.java @@ -29,17 +29,20 @@ public class AnalysisResultConfiguration { private boolean failureOnlyNew; private boolean unstableOnlyNew; private int numBuildsInGraph; - + private boolean breakIfFailed; + @DataBoundConstructor public AnalysisResultConfiguration(String failureSeverity, String unstableSeverity, boolean failureOnlyNew, - boolean unstableOnlyNew, int numBuildsInGraph) { + boolean unstableOnlyNew, int numBuildsInGraph, + boolean breakIfFailed) { this.failureSeverity = failureSeverity; this.unstableSeverity = unstableSeverity; this.failureOnlyNew = failureOnlyNew; this.unstableOnlyNew = unstableOnlyNew; this.numBuildsInGraph = numBuildsInGraph; + this.breakIfFailed = breakIfFailed; } public String getFailureSeverity() { return failureSeverity; @@ -71,4 +74,10 @@ public int getNumBuildsInGraph() { public void setNumBuildsInGraph(int numBuildsInGraph) { this.numBuildsInGraph = numBuildsInGraph; } + public boolean getBreakIfFailed() { + return breakIfFailed; + } + public void setBreakIfFailed(boolean breakIfFailed) { + this.breakIfFailed = breakIfFailed; + } } diff --git a/src/main/java/org/jenkinsci/plugins/codedx/CodeDxPublisher.java b/src/main/java/org/jenkinsci/plugins/codedx/CodeDxPublisher.java index 89eefb6..c57fcda 100644 --- a/src/main/java/org/jenkinsci/plugins/codedx/CodeDxPublisher.java +++ b/src/main/java/org/jenkinsci/plugins/codedx/CodeDxPublisher.java @@ -451,6 +451,9 @@ public void perform( } } else { buildOutput.println("Analysis status: " + status); + if (analysisResultConfiguration.getBreakIfFailed()) { + throw new AbortException("Code Dx analysis ended with status '" + status + "' instead of '" + Job.COMPLETED + "', terminating build"); + } } } finally { if(sourceAndBinaryZip != null){ diff --git a/src/main/resources/org/jenkinsci/plugins/codedx/CodeDxPublisher/config.jelly b/src/main/resources/org/jenkinsci/plugins/codedx/CodeDxPublisher/config.jelly index 3005a1b..f330a3c 100644 --- a/src/main/resources/org/jenkinsci/plugins/codedx/CodeDxPublisher/config.jelly +++ b/src/main/resources/org/jenkinsci/plugins/codedx/CodeDxPublisher/config.jelly @@ -50,6 +50,10 @@ + + + + diff --git a/src/main/webapp/help-breakIfFailed.html b/src/main/webapp/help-breakIfFailed.html new file mode 100644 index 0000000..b5aec17 --- /dev/null +++ b/src/main/webapp/help-breakIfFailed.html @@ -0,0 +1,4 @@ +
+

Whether or not to fail the build if the Code Dx analysis fails.

+

Note: connection errors such as timeouts will cause the build to fail regardless of this setting.

+
\ No newline at end of file