Package hudson.tasks

Class Publisher

  • All Implemented Interfaces:
    Describable<Publisher>, BuildStep
    Direct Known Subclasses:
    Notifier, Recorder

    public abstract class Publisher
    extends BuildStepCompatibilityLayer
    implements Describable<Publisher>
    BuildSteps that run after the build is completed.

    To register a custom Publisher from a plugin, put Extension on your descriptor implementation.

    Starting 1.178, publishers are exposed to all kinds of different project type, not just the freestyle project type (in particular, the native maven2 job type.) This is convenient default for Publishers in particular initially, but we encourage advanced plugins to consider writing MavenReporter, as it offers the potential of reducing the amount of configuration needed to run the plugin. For those plugins that don't want Publisher to show up in different job type, use BuildStepDescriptor for the base type of your descriptor to control which job type it supports.

    Kohsuke Kawaguchi
    • Method Detail

      • needsToRunAfterFinalized

        public boolean needsToRunAfterFinalized()
        Return true if this Publisher needs to run after the build result is fully finalized.

        The execution of normal Publishers are considered within a part of the build. This allows publishers to mark the build as a failure, or to include their execution time in the total build time.

        So normally, that is the preferable behavior, but in a few cases this is problematic. One of such cases is when a publisher needs to trigger other builds, which in turn need to see this build as a completed build. Those plugins that need to do this can return true from this method, so that the BuildStepCompatibilityLayer.perform(AbstractBuild, Launcher, BuildListener) method is called after the build is marked as completed.

        When Publisher behaves this way, note that they can no longer change the build status anymore.

      • getDescriptor

        public Descriptor<Publisher> getDescriptor()
        Description copied from interface: Describable
        Gets the descriptor for this instance.

        Descriptor is a singleton for every concrete Describable implementation, so if a.getClass() == b.getClass() then by default a.getDescriptor() == b.getDescriptor() as well. (In rare cases a single implementation class may be used for instances with distinct descriptors.)

        Specified by:
        getDescriptor in interface Describable<Publisher>