-
Notifications
You must be signed in to change notification settings - Fork 179
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[JENKINS-27120] Adding Workflow support for JaCoCo publisher #66
Changes from all commits
c81f231
a41a986
0810660
4e4fb1b
28a7f26
ebdd68d
7ff656f
b64da06
08bdee6
249bd6d
adc858d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,6 +9,9 @@ | |
import java.util.LinkedHashMap; | ||
import java.util.Map; | ||
|
||
import hudson.model.Run; | ||
import hudson.model.TaskListener; | ||
import jenkins.model.RunAction2; | ||
import org.jacoco.core.analysis.IBundleCoverage; | ||
import org.jvnet.localizer.Localizable; | ||
import org.kohsuke.stapler.StaplerProxy; | ||
|
@@ -33,9 +36,9 @@ | |
* @author Jonathan Fuerth | ||
* @author Ognjen Bubalo | ||
*/ | ||
public final class JacocoBuildAction extends CoverageObject<JacocoBuildAction> implements HealthReportingAction, StaplerProxy, Serializable { | ||
public final class JacocoBuildAction extends CoverageObject<JacocoBuildAction> implements HealthReportingAction, StaplerProxy, Serializable, RunAction2 { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good, the non- There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We are using 1.609.3 so is there any problem or it is ok as I have coded? |
||
|
||
public final AbstractBuild<?,?> owner; | ||
public transient Run<?,?> owner; | ||
|
||
@Deprecated public transient AbstractBuild<?,?> build; | ||
|
||
|
@@ -45,11 +48,6 @@ public final class JacocoBuildAction extends CoverageObject<JacocoBuildAction> i | |
private final String[] inclusions; | ||
private final String[] exclusions; | ||
|
||
/** | ||
* Non-null if the coverage has pass/fail rules. | ||
*/ | ||
private final Rule rule; | ||
|
||
/** | ||
* The thresholds that applied when this build was built. | ||
* TODO: add ability to trend thresholds on the graph | ||
|
@@ -58,24 +56,20 @@ public final class JacocoBuildAction extends CoverageObject<JacocoBuildAction> i | |
|
||
/** | ||
* | ||
* @param owner | ||
* @param rule | ||
* @param ratios | ||
* The available coverage ratios in the report. Null is treated | ||
* the same as an empty map. | ||
* @param thresholds | ||
*/ | ||
public JacocoBuildAction(AbstractBuild<?,?> owner, Rule rule, | ||
public JacocoBuildAction( | ||
Map<CoverageElement.Type, Coverage> ratios, | ||
JacocoHealthReportThresholds thresholds, BuildListener listener, String[] inclusions, String[] exclusions) { | ||
JacocoHealthReportThresholds thresholds, TaskListener listener, String[] inclusions, String[] exclusions) { | ||
logger = listener.getLogger(); | ||
if (ratios == null) { | ||
ratios = Collections.emptyMap(); | ||
} | ||
this.inclusions = inclusions; | ||
this.exclusions = exclusions; | ||
this.owner = owner; | ||
this.rule = rule; | ||
this.clazz = getOrCreateRatio(ratios, CoverageElement.Type.CLASS); | ||
this.method = getOrCreateRatio(ratios, CoverageElement.Type.METHOD); | ||
this.line = getOrCreateRatio(ratios, CoverageElement.Type.LINE); | ||
|
@@ -202,12 +196,12 @@ public Object getTarget() { | |
} | ||
|
||
@Override | ||
public AbstractBuild<?,?> getBuild() { | ||
public Run<?,?> getBuild() { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This and similar changes are not binary compatible, but I could not find anything in @jenkinsci referring to code in this plugin so probably it is fine. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Exactly I think it is ok in this way. |
||
return owner; | ||
} | ||
|
||
public JacocoReportDir getJacocoReport() { | ||
return new JacocoReportDir(owner); | ||
return new JacocoReportDir(owner.getRootDir()); | ||
} | ||
|
||
/** | ||
|
@@ -275,8 +269,8 @@ public Map<Coverage,Boolean> getCoverageRatios(){ | |
/** | ||
* Gets the previous {@link JacocoBuildAction} of the given build. | ||
*/ | ||
/*package*/ static JacocoBuildAction getPreviousResult(AbstractBuild<?,?> start) { | ||
AbstractBuild<?,?> b = start; | ||
/*package*/ static JacocoBuildAction getPreviousResult(Run<?,?> start) { | ||
Run<?,?> b = start; | ||
while(true) { | ||
b = b.getPreviousBuild(); | ||
if(b==null) { | ||
|
@@ -298,12 +292,12 @@ public Map<Coverage,Boolean> getCoverageRatios(){ | |
* @throws IOException | ||
* if failed to parse the file. | ||
*/ | ||
public static JacocoBuildAction load(AbstractBuild<?,?> owner, Rule rule, JacocoHealthReportThresholds thresholds, BuildListener listener, JacocoReportDir layout, String[] includes, String[] excludes) throws IOException { | ||
public static JacocoBuildAction load(Run<?,?> owner, JacocoHealthReportThresholds thresholds, TaskListener listener, JacocoReportDir layout, String[] includes, String[] excludes) throws IOException { | ||
//PrintStream logger = listener.getLogger(); | ||
Map<CoverageElement.Type,Coverage> ratios = null; | ||
|
||
ratios = loadRatios(layout, ratios, includes, excludes); | ||
return new JacocoBuildAction(owner, rule, ratios, thresholds, listener, includes, excludes); | ||
return new JacocoBuildAction(ratios, thresholds, listener, includes, excludes); | ||
} | ||
|
||
|
||
|
@@ -360,4 +354,14 @@ public final PrintStream getLogger() { | |
// does not run the construct and thus leaves the transient variables empty | ||
return System.out; | ||
} | ||
|
||
@Override | ||
public void onAttached(Run<?, ?> run) { | ||
this.owner = run; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Note that this means you could delete the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @jglick so I can remove the first parameter of this constructor: There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Right. Note that the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done |
||
} | ||
|
||
@Override | ||
public void onLoad(Run<?, ?> run) { | ||
this.owner = run; | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BTW consider using the 2.x parent POM at some point. A lot more pleasant to work with. (The baseline would in that case be defined using the
jenkins.version
property.)There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For now I will leave as is and if in the future we need to move forward, let's open an issue. Changing parent pom could generate any incompatibility? For what I see is that it is only going to work in Jenkins 2?