Use a publisher more than once. Select the execution order of the publishers. Use run conditions to decide whether a publisher should be run.

{jenkins-plugin-info:pluginId=flexible-publish}

Features

If you always add your Post-build Actions to Flexible publish, then not only will you be able to change the execution order afterwards, but you will have the ability to temporarily disable a publisher without losing the publishers' configuration.
You can just switch between the Always and the Never run conditions.

Install

This plugin can be installed from the Update Center (Manage Jenkins > Manage Plugins) under "Other Post-Build Actions".

To install manually, download the latest plugin from http://mirrors.jenkins-ci.org/plugins/flexible-publish/ and use the Upload Plugin option in the Advanced tab of the Plugin Manager.
If you do install manually, you will need to also install the Run Condition Plugin from http://mirrors.jenkins-ci.org/plugins/run-condition/ and the Token Macro Plugin from http://mirrors.jenkins-ci.org/plugins/token-macro/.

Import existing publishers

In Manage Jenkins/ Script console, copy the following to see which publishers can be moved (for a job named 'My Job')

import static org.jenkins_ci.plugins.flexible_publish.JobUpdater.*

def job = hudson.model.Hudson.instance.getItem('My Job')
list job

Or, if you like doing it the hard way ...

org.jenkins_ci.plugins.flexible_publish.JobUpdater.list(hudson.model.Hudson.instance.getItem('My Job'))

You should see a list something like this

Result: Enabled publishers that can be moved:
	[Publish Checkstyle analysis results]
	[Publish FindBugs analysis results]
	[Publish PMD analysis results]
	[Publish duplicate code analysis results]
	[Scan for compiler warnings]
	[Scan workspace for open tasks]
	[Publish combined analysis results]
	[Archive the artifacts]
	[Publish JUnit test result report]
	[Publish Javadoc]
	[Record fingerprints of files to track usage]
	[Git Publisher]
	[Send build artifacts over FTP]
	[Send build artifacts over SSH]
	[Send build artifacts to a windows share]

Enabled publishers that cannot be moved:
	[Aggregate downstream test results]
	[Build other projects]
	[Record Emma coverage report]
	[Report Violations]
	[E-mail Notification]

You can move a publisher into Flexible publish

import static org.jenkins_ci.plugins.flexible_publish.JobUpdater.*

def job = hudson.model.Hudson.instance.getItem('My Job')
movePublisher job, 'Publish JUnit test result report'

After moving one or more publishers, go to the configure page, check everything looks ok, then save the configuration.

If you like to live on the edge, and would like to move all of the publishers in one go, then ...

import static org.jenkins_ci.plugins.flexible_publish.JobUpdater.*

def job = hudson.model.Hudson.instance.getItem('My Job')
moveAllPublishers job

Used with multi-configuration projects

When you use Flexible Publish Plugin with multi-configuration projects (aka. matrix projects), you should know followings:

Generally, publishers run in two phase for multi-configuration projects.

  1. Run for each combination of axes. It works just like in Free Style Projects.
  2. Run for whole the multi-configuration project. This is what is called aggregation.

For example, "Publish JUnit test result report" works:

  1. see test results in each combination of axes
  2. sum up the results of all of the combinations.

You can specify conditions both for each combination and the aggregation.
If you want to separate condition for them, check "Condition for Matrix Aggregation" (This appears only in multi-configuration projects).

This is especially useful for the case you want control the execution of the publisher depends on combination of axes.
Be careful to specify the condition, for inconsistent execution causes the build fails.

How flexible publish works when a publisher fails

Limitations

Some publishers may not work with Flexible Publish.

Known plugins that doesn't work with Flexible Publish

Plugin

Details

Issue

Coverity Plugin

Causes NPE on execution

JENKINS-20632

Post build task

Tasks will be duplicated if a project contains multiple Post build task

JENKINS-23952

Join Plugin

Ignores dependencies wrapped with Flexible publish

JENKINS-28709

Build Pipeline Plugin

"Manually Execute Downstream Project" always triggers downstream projects automatically

JENKINS-30272

Clone Workspace SCM Plugin

Doesn't show up the configured project in the list of options for selection on a consuming project

JENKINS-30567

Slack Plugin

Silently does nothing

GitHub #41

Side links are duplicated

Known plugins that duplicates site links in project pages with Flexible Publish

Known plugins that duplicates site links in build pages with Flexible Publish

Why named "Flexible Publish" ?

Issues

To report a bug or request an enhancement to this plugin please create a ticket in JIRA (you need to login or to sign up for an account). Also have a look on How to report an issue

Change log

0.15.2 (Jun 06, 2015)

0.15.1 (Mar 29, 2015)

0.15 (Mar 28, 2015)

0.14.1 (Jan 17, 2015)

This is a bug fix for 0.13.
This should be released as 0.13.1, but I mistook. Sorry.

0.13 (Nov 09, 2014)

0.12 (14/09/2013)

0.11 (07/09/2013)

0.10 (03/07/2012)

0.9 (14/02/2012)

0.8 (17/01/2012)

0.7 (14/11/2011)

0.6 (12/11/2011)

0.5 (11/11/2011)

0.4 (11/11/2011)

0.3 (10/11/2011)

0.2 (09/11/2011)

0.1 (07/11/2011)