Pipeline: API 2.34 added a new API called WarningAction 
<https://github.com/jenkinsci/workflow-api-plugin/blob/c84dbab8cd35c90f70d84390dc711901fa73b7ad/src/main/java/org/jenkinsci/plugins/workflow/actions/WarningAction.java>
 that 
allows steps to report irregular but non-fatal events that occurred during 
their execution while allowing Pipeline execution to continue normally. 
This allows long-standing and highly-voted issues such as JENKINS-39203 
<https://issues.jenkins-ci.org/browse/JENKINS-39203> to be fixed by 
modifying Pipeline steps that change the build result directly to also use 
the new API so that visualizations such as Blue Ocean use the new API 
(through Pipeline: Graph Analysis 1.10) to display more specific statuses. 
For any maintainers of plugins setting the build result directly today, 
here is some information to help you understand how to use the new API if 
you would like to do so.

First, if you have a step that throws an exception today to indicate 
failure, that's totally fine, keep doing that! The new API only applies to 
steps that want to indicate some kind of problem but continue normal 
Pipeline execution.

For regular Steps, if you have code in a StepExecution that does something 
like this and want to use the new API:

  getContext().get(Run.class).setResult(...);

Keep setting the build result the same way and add code to add a 
WarningAction to the current FlowNode like this:

  getContext().get(Run.class).setResult(...);
  getContext().get(FlowNode.class).addOrReplaceAction(new 
WarningAction(...).withMessage(...));

The result you pass to the WarningAction constructor will determine how 
Blue Ocean displays your step and the stage or parallel branch enclosing 
your step. The message is optional and may be visualized directly in Blue 
Ocean in some prominent way in the future, but for now it is not shown 
anywhere.

See this pull request <https://github.com/jenkinsci/junit-plugin/pull/118> 
to JUnit plugin for an example of how to integrate a plugin with the new 
API (in particular the changes to JUnitResultsStepExecution.java). 

If your plugin currently uses SimpleBuildStep or SimpleBuildWrapper to 
implement a step that can be used in Freestyle and Pipeline jobs, there is 
no way to use the new API directly, and you need to create a new Pipeline 
Step to be able to use the new API. You should be able to call the 
SimpleBuildStep from your new Step to avoid duplicating logic, but 
unfortunately you will need to duplicate getters and setters to make 
data-binding work correctly for the step. Here is an in-progress PR 
<https://github.com/jenkinsci/warnings-ng-plugin/pull/58> to Warnings Next 
Generation Plugin that shows what this kind of change might look like.

See UnstableStep.java 
<https://github.com/jenkinsci/workflow-basic-steps-plugin/blob/06075283ed70063937a7175da4852f9ddb087130/src/main/java/org/jenkinsci/plugins/workflow/steps/UnstableStep.java>
 
for an example of a new step that uses the new API.

Thanks, and let me know if you have any questions!

Devin

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-dev/4cd76eee-f788-40b2-98a1-51c1172113ec%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to