Due to some maintenance issues, this service has been switched in read-only mode, you can find more information about the why

and how to migrate your plugin documentation in this blogpost

Skip to end of metadata
Go to start of metadata
Multi-configuration (matrix) project type.

Plugin Information

View Matrix Project on the plugin site for more information.

Older versions of this plugin may not be safe to use. Please review the following warnings before using an older version:

See Building a matrix project for user information.

In the New Item user interface, this plugin contributes the following one:


See all extension points here: Matrix Project Extension Points

Matrix Axis Extension

  • Page:
    DynamicAxis Plugin

    This plugin allows you to define a matrix build axis that is dynamically populated from an environment variable:

  • Page:
    Selenium Axis Plugin

    Creates an axis based on a local Selenium grid and also build against the SauceLabs Selenium capability at the same time.
    Both components rebuild before each build to take advantage of any new capabilities.

    The Selenium grid uses all capabilities available and the SauceLab one a random subset, which can be configured or disabled.

  • Page:
    Yaml Axis Plugin — Matrix project axis creation and exclusion plugin using yaml file (It's similar to .travis.yml)
  • Page:
    Sauce OnDemand Plugin — This plugin allows you to integrate Sauce Selenium Testing with Jenkins.
  • Page:
    Matrix Groovy Execution Strategy Plugin — A plugin to decide the execution order and valid combinations of matrix projects.
  • Page:
    Elastic Axis — This plugin is a power up for the multi configuration jobs allowing you to configure jobs to run on all slaves under a single label.
  • Page:
    NodeLabel Parameter Plugin — This plugin adds two new parameter types to job configuration - node and label, this allows to dynamically select the node where a job/project should be executed.

If your plug-in is not listed here, then simply add the label matrix-axis-producer to your plug-in wiki page and it will be automatically listed.


Version 1.14 (Mar 6, 2019)

Version 1.12 (Oct 3, 2017)

Version 1.11 (May 12, 2017)

Version 1.10 (Apr 19, 2017)

  • JENKINS-39739 Argument passed to createVariableResolver() must never be null
  • JENKINS-43390 Loading parameters from xml file causes that the same parameters are different objects for matrix configuration builds
  • JENKINS-34389 Fixed handling of dynamic axis

Version 1.9 (Mar 24, 2017)

  • Optimized matrix configuration label computation
  • JENKINS-34389 Improved handling of axis rebuild

  • Fixed StringIndexOutOfBoundsException if label have no values
  • Make matrix build able to survive restarts 

Version 1.8 (Jan 12, 2017)

  • Fixed handling of dynamic axis
  • Fix race condition where A NPE is thrown when an item is being processed
  • Improved German Translation

 Version 1.7.1 (Jun 24, 2016)

  •  JENKINS-32230 Disable WARNING log when folder is already existed

Version 1.7 (May 24, 2016)

  • JENKINS-34758 Parameters visibility in child builds (related to SECURITY-170)

Version 1.6 (Jun 18, 2015)

Version 1.5 (Jun 08, 2015)

Version 1.4.1 (Feb 27, 2015)

Bundled in 1.596.1 and 1.600. Do not update to this release if using an older Jenkins version. If you have already updated, use Plugin Manager » Installed to revert to your previous version.

Version 1.4 (Oct 14, 2014)

  • (info) Automatic deletion of inactive configurations from the disk
  • (info) JENKINS-24282 Use noun phrase in the New Item dialog
  • (error) JENKINS-19179 Prevent the disabling of matrix configurations (e.g. by checkout failures in Subversion plugin)

Version 1.3 (Jul 22, 2014)

  • Moved in a file which was accidentally left behind in core.
  • Preparing for possible split of test reporting functionality into a plugin.
  • Portuguese translation fix.

Version 1.2 (May 07, 2014)

  • JENKINS-22798 Fixed another class loading problem related to split.

Version 1.1 (May 06, 2014)

  • JENKINS-22863 Fixed class loading problem affecting combination filters after split.

Version 1.0 (Apr 28, 2014)

  • Depending on 1.561 final.

Version 1.0 beta 1 (Apr 14, 2014)

  • Split off from core as of 1.561.


  1. Unknown User (collumbrian)

    Jenkins 1.573

    Matrix Project Plugin 1.3

    Perforce as my SCM

    I have a matrix project that has four different variations (two columns, two rows).

    From what I can tell this means it actually makes 5 (not 4) workspaces. One that I will refer to as the "Main" workspace that actually never gets used as well as the 4 others for each element in the Matrix.

    I have to use "Always Force Sync" because otherwise it only synchronizes my "Main" workspace and not any of the other 4 that are where the builds actually happen. Is there a reason it does this?

    I'm not sure if this is really an incompatibility between the Matrix Plugin and the Perforce Plugin. Not sure at this point.

    It is just annoying and time consuming that I have to do a complete download of the entire workspace (5 times!) before building every time.

    1. Unknown User (oleg_nenashev)

      Please submit issues to Jenkins JIRA if you expect to get a response

      > From what I can tell this means it actually makes 5 (not 4) workspaces. One that I will refer to as the "Main" workspace that actually never gets used as well as the 4 others for each element in the Matrix.

      As designed.You can use/develop http://javadoc.jenkins-ci.org/jenkins/scm/SCMCheckoutStrategy.html extension to alter the behavior

      > I have to use "Always Force Sync" because otherwise it only synchronizes my "Main" workspace and not any of the other 4 that are where the builds actually happen. Is there a reason it does this?

      I don't see such behavior on my installations. Force sync works on configurations as well

  2. Unknown User (solstice333)

    In my matrix project, my SCM section is set to git and I configured it the same way as I have it in a non-matrix project (which works fine in the non-matrix project), but when I run the matrix project, the spawned child jobs consistently output the following to the logs:

    Fetching upstream changes from git://carson/SRC/SRC.git
     > git.exe --version # timeout=10
     > git.exe -c core.askpass=true fetch --tags --progress git://foo/src/src.git +refs/heads/*:refs/remotes/origin/*
    ERROR: Timeout after 10 minutes
    ERROR: Error cloning remote repo 'origin'

    In the parent job or master executor, it seems to get passed the mapping of remote branches to local branches just fine. I have git://foo/src/src.git set as repo url, and origin as name. I'm running on Windows 7. Any ideas? Thanks in advance.

    1. Unknown User (solstice333)

      Found a solution - increase the timeout in SCM -> Additional Behaviors -> Advanced Clone Behaviors. Increased it to 30 minutes. Makes sense that it'd take longer too since 4 configurations are running in parallel.

  3. Unknown User (dgm171)

    Using the Matrix Project plugin and it seems that the job execution order is random.  Is this by design?

    Looking at the source code I found the NoopMatrixConfigurationSorter, which appears to do exactly what I want, sort the execution by job display name.

    Is there a way to enable the NoopMatrixConfigurationSorter? Or is it supposed to be enabled by default?

    Any help would be appreciated.

  4. Unknown User (xtaylor21x)

    For some reason when I choose to restrict where the project can be run it does not spin up the node like I want it too for the master "flyweight" node.

    It just sits there and never triggers or brings up the master node? why is this?

  5. Unknown User (xtaylor21x)

    Also when it checks out SVN why does it check it out on the flyweight node? isn't that just a task to start the others?

  6. Unknown User (bahdad)

    Where can I check the changelog for versions from 1.7.1 to 1.10 ?

    1. Unknown User (bahdad)

      Unknown User (raul_arabaolaza), thanks a lot for an update with changelogs! (thumbs up)