summaryrefslogtreecommitdiffstats
path: root/jenkins_jobs/modules/view_list.py
diff options
context:
space:
mode:
authorAnil Belur <askb23@gmail.com>2018-02-15 00:14:48 +1000
committerSorin Sbarnea <ssbarnea@redhat.com>2018-02-23 17:49:40 +0000
commit726e50aa228a0b411ce160efa670bf802b4d0de8 (patch)
tree7099fd4cb4bf0838e0a41e61eacebdca196c4564 /jenkins_jobs/modules/view_list.py
parentbc80e5e2f3d2eb8e871d38d1943a9ae555744dc3 (diff)
downloadpython-jenkins-job-builder-726e50aa228a0b411ce160efa670bf802b4d0de8.tar.gz
python-jenkins-job-builder-726e50aa228a0b411ce160efa670bf802b4d0de8.tar.xz
python-jenkins-job-builder-726e50aa228a0b411ce160efa670bf802b4d0de8.zip
Add support for build duration Job Filter plugin
Add support for build duration job filter plugin for views. Change-Id: Ib19775e02f3f7359e69c82b986bc4f89aa51e9df Signed-off-by: Anil Belur <askb23@gmail.com> Signed-off-by: Sorin Sbarnea <ssbarnea@redhat.com>
Diffstat (limited to 'jenkins_jobs/modules/view_list.py')
-rw-r--r--jenkins_jobs/modules/view_list.py58
1 files changed, 46 insertions, 12 deletions
diff --git a/jenkins_jobs/modules/view_list.py b/jenkins_jobs/modules/view_list.py
index be61f5e3..8a32eadb 100644
--- a/jenkins_jobs/modules/view_list.py
+++ b/jenkins_jobs/modules/view_list.py
@@ -27,11 +27,29 @@ to the :ref:`view_list` definition.
* **filter-queue** (`bool`): Show only included jobs in builder
queue. (default false)
* **job-name** (`list`): List of jobs to be included.
- * **job-filters** (`dict`): Job filters to be included.
+ * **job-filters** (`dict`): Job filters to be included. Requires
+ :jenkins-wiki:`View Job Filters <View+Job+Filters>`
+
+ * **most-recent** (`dict`)
:most-recent: * **max-to-include** (`int`): Maximum number of jobs
to include. (default 0)
- * **check-start-time** (`bool`): Check job start time
- (default false)
+ * **check-start-time** (`bool`): Check job start
+ time. (default false)
+
+ * **build-duration** (`dict`)
+ :build-duration: * **match-type** ('str'): Jobs that match a filter
+ to include. (default includeMatched)
+ * **build-duration-type** ('str'): Duration of the
+ build. (default Latest)
+ * **amount-type**: ('str'): Duration in hours,
+ days or builds. (default Hours)
+ * **amount**: ('int'): How far back to check.
+ (default 0)
+ * **less-than**: ('bool'): Check build duration
+ less than or more than. (default True)
+ * **build-duration-minutes**: ('int'): Build
+ duration minutes. (default 0)
+
* **columns** (`list`): List of columns to be shown in view.
* **regex** (`str`): . Regular expression for selecting jobs
(optional)
@@ -106,19 +124,35 @@ class List(jenkins_jobs.modules.base.Base):
job_filter_xml = XML.SubElement(root, 'jobFilters')
jobfilters = data.get('job-filters', [])
- mapping = [
- ('max-to-include', 'maxToInclude', '0'),
- ('check-start-time', 'checkStartTime', False),
- ]
-
for jobfilter in jobfilters:
- if 'most-recent' in jobfilter:
+ if jobfilter == 'most-recent':
mr_xml = XML.SubElement(job_filter_xml,
- 'hudson.views.MostRecentJobsFilter')
+ 'hudson.views.MostRecentJobsFilter')
mr_xml.set('plugin', 'view-job-filters')
- mr_data = jobfilter.get('most-recent')
+ mr_data = jobfilters.get('most-recent')
+ mapping = [
+ ('max-to-include', 'maxToInclude', '0'),
+ ('check-start-time', 'checkStartTime', False),
+ ]
convert_mapping_to_xml(mr_xml, mr_data, mapping,
- fail_required=True)
+ fail_required=True)
+
+ if jobfilter == 'build-duration':
+ bd_xml = XML.SubElement(job_filter_xml,
+ 'hudson.views.BuildDurationFilter')
+ bd_xml.set('plugin', 'view-job-filters')
+ bd_data = jobfilters.get('build-duration')
+ mapping = [
+ ('match-type', 'includeExcludeTypeString',
+ 'includeMatched'),
+ ('build-duration-type', 'buildCountTypeString', 'Latest'),
+ ('amount-type', 'amountTypeString', 'Hours'),
+ ('amount', 'amount', '0'),
+ ('less-than', 'lessThan', True),
+ ('build-duration-minutes', 'buildDurationMinutes', '0'),
+ ]
+ convert_mapping_to_xml(bd_xml, bd_data, mapping,
+ fail_required=True)
c_xml = XML.SubElement(root, 'columns')
columns = data.get('columns', DEFAULT_COLUMNS)