Imagine that you want to publish a check with some details of a Jenkins build.
You need to first construct a ChecksDetails
object:
ChecksDetails details = new ChecksDetailsBuilder()
.withName("Jenkins CI")
.withStatus(ChecksStatus.COMPLETED)
.withConclusion(ChecksConclusion.SUCCESS)
.withDetailsURL(DisplayURLProvider.get().getRunURL(run))
.withCompletedAt(LocalDateTime.now(ZoneOffset.UTC))
.build();
Then you can create a publisher based on a Jenkins Run
to publish the check you just constructed:
ChecksPublisher publisher = ChecksPublisherFactory.fromRun(run);
publisher.publish(details);
The publisher returned is based on the implementations you installed on your Jenkins instance.
The checks are highly customized by consumers due to a number of optional parameters provided.
Consumers can set these parameters through the checks models:
ChecksDetails
: the top-level model of a check, including all other models and some basic parameters like status and conclusionChecksOutput
: the output of a check, providing some displayed details like title, summary, URL, and code annotationsChecksAnnotation
: a code annotation of a check, providing a specific comment for one or multiple lines of code;ChecksImage
: an image of a check, providing an intuitive graph for the build like issues trend, coverage chart, must be a public URL that SCM platforms can fetch fromChecksAction
: an action of a check, providing further actions to be performed by users, like rerun a Jenkins build
The publishers are created through the static factory method (fromRun
or fromJob
) of ChecksPublisherFactory
.
The factory will iterate all available implementations of the ChecksPublisher
in order to find the suitable publisher for the Jenkins Run
or Job
.
The withChecks
step injects a ChecksInfo
object into its closure by users:
withChecks('MyCheck') {
junit '*.xml'
}
The injected object can be resolved by other plugin developers in their Step implementation:
getContext().get(ChecksInfo.class)
Currently, the ChecksInfo
object only includes a name
specified by users,
it is recommended that you look for this name and set it over your default checks name
An implementation of ChecksPublisher
that captures all published ChecksDetails
is provided
in the test
classifier, as io.jenkins.plugins.checks.util.CapturingChecksPublisher
.
Adding the factory for this publisher as a TestExtension
will allow inspection of published checks after running a job
on a JenkinsRule
.
An example of this can be found in PublishChecksStepITest.