summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jenkins_jobs/modules/project_matrix.py13
-rw-r--r--tests/general/fixtures/matrix-axis004.xml22
-rw-r--r--tests/general/fixtures/matrix-axis004.yaml8
3 files changed, 40 insertions, 3 deletions
diff --git a/jenkins_jobs/modules/project_matrix.py b/jenkins_jobs/modules/project_matrix.py
index f3b6eb16..9db1aa98 100644
--- a/jenkins_jobs/modules/project_matrix.py
+++ b/jenkins_jobs/modules/project_matrix.py
@@ -17,12 +17,16 @@
The matrix project module handles creating Jenkins matrix
projects. To create a matrix project specify ``matrix`` in the
``project-type`` attribute to the :ref:`Job` definition.
-Currently it only supports three axes which share the same
+Currently it supports four axes which share the same
internal YAML structure:
* label expressions (``label-expression``)
* user-defined values (``user-defined``)
* slave name or label (``slave``)
+* JDK name (``jdk``)
+
+Requires the Jenkins `Matrix Project Plugin.
+<https://wiki.jenkins-ci.org/display/JENKINS/Matrix+Project+Plugin>`_
The module supports also dynamic axis:
@@ -46,7 +50,7 @@ jobs, you can define a single value ``slave`` axis.
* **axes** (`list`):
* **axis**:
* **type** (`str`) -- axis type, must be either
- 'label-expression', 'user-defined' or 'slave'.
+ 'label-expression', 'user-defined', 'slave' or 'jdk'.
* **name** (`str`) -- name of the axis
* **values** (`list`) -- values of the axis
@@ -129,6 +133,7 @@ class Matrix(jenkins_jobs.modules.base.Base):
'label-expression': 'hudson.matrix.LabelExpAxis',
'user-defined': 'hudson.matrix.TextAxis',
'slave': 'hudson.matrix.LabelAxis',
+ 'jdk': 'hudson.matrix.JDKAxis',
'dynamic': 'ca.silvermaplesolutions.jenkins.plugins.daxis.DynamicAxis',
'python': 'jenkins.plugins.shiningpanda.matrix.PythonAxis',
'tox': 'jenkins.plugins.shiningpanda.matrix.ToxAxis',
@@ -171,7 +176,9 @@ class Matrix(jenkins_jobs.modules.base.Base):
axis_name = self.supported_axis.get(axis_type)
lbl_root = XML.SubElement(ax_root, axis_name)
name, values = axis.get('name', ''), axis.get('values', [''])
- if axis_type == 'python':
+ if axis_type == 'jdk':
+ XML.SubElement(lbl_root, 'name').text = 'JDK'
+ elif axis_type == 'python':
XML.SubElement(lbl_root, 'name').text = 'PYTHON'
elif axis_type == 'tox':
XML.SubElement(lbl_root, 'name').text = 'TOXENV'
diff --git a/tests/general/fixtures/matrix-axis004.xml b/tests/general/fixtures/matrix-axis004.xml
new file mode 100644
index 00000000..0f71bdab
--- /dev/null
+++ b/tests/general/fixtures/matrix-axis004.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<matrix-project>
+ <executionStrategy class="hudson.matrix.DefaultMatrixExecutionStrategyImpl">
+ <runSequentially>false</runSequentially>
+ </executionStrategy>
+ <combinationFilter/>
+ <axes>
+ <hudson.matrix.JDKAxis>
+ <name>JDK</name>
+ <values>
+ <string>openjdk-6-jdk</string>
+ <string>openjdk-7-jdk</string>
+ </values>
+ </hudson.matrix.JDKAxis>
+ </axes>
+ <actions/>
+ <keepDependencies>false</keepDependencies>
+ <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
+ <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
+ <concurrentBuild>false</concurrentBuild>
+ <canRoam>true</canRoam>
+</matrix-project>
diff --git a/tests/general/fixtures/matrix-axis004.yaml b/tests/general/fixtures/matrix-axis004.yaml
new file mode 100644
index 00000000..674b21bf
--- /dev/null
+++ b/tests/general/fixtures/matrix-axis004.yaml
@@ -0,0 +1,8 @@
+name: matrix-test004
+project-type: matrix
+axes:
+ - axis:
+ type: jdk
+ values:
+ - openjdk-6-jdk
+ - openjdk-7-jdk