diff --git a/jenkins_jobs/modules/view_list.py b/jenkins_jobs/modules/view_list.py index 7b85de3a3..3d08becac 100644 --- a/jenkins_jobs/modules/view_list.py +++ b/jenkins_jobs/modules/view_list.py @@ -27,6 +27,11 @@ 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. + :most-recent: * **max-to-include** (`int`): Maximum number of jobs + to include. (default 0) + * **check-start-time** (`bool`): Check job start time + (default false) * **columns** (`list`): List of columns to be shown in view. * **regex** (`str`): . Regular expression for selecting jobs (optional) @@ -88,7 +93,23 @@ class List(jenkins_jobs.modules.base.Base): if jobnames is not None: for jobname in jobnames: XML.SubElement(jn_xml, 'string').text = str(jobname) - XML.SubElement(root, 'jobFilters') + + 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: + mr_xml = XML.SubElement(job_filter_xml, + 'hudson.views.MostRecentJobsFilter') + mr_xml.set('plugin', 'view-job-filters') + mr_data = jobfilter.get('most-recent') + convert_mapping_to_xml(mr_xml, mr_data, mapping, + fail_required=True) c_xml = XML.SubElement(root, 'columns') columns = data.get('columns', DEFAULT_COLUMNS) diff --git a/tests/views/fixtures/view_most_recent_full.xml b/tests/views/fixtures/view_most_recent_full.xml new file mode 100644 index 000000000..df87dd754 --- /dev/null +++ b/tests/views/fixtures/view_most_recent_full.xml @@ -0,0 +1,28 @@ + + + list-view-name01 + Sample description + true + true + + + + + + + 25 + true + + + + + + + + + + + + true + false + diff --git a/tests/views/fixtures/view_most_recent_full.yaml b/tests/views/fixtures/view_most_recent_full.yaml new file mode 100644 index 000000000..3027ba1b1 --- /dev/null +++ b/tests/views/fixtures/view_most_recent_full.yaml @@ -0,0 +1,11 @@ +name: list-view-name01 +view-type: list +description: 'Sample description' +filter-executors: true +filter-queue: true +job-filters: + - most-recent: + max-to-include: 25 + check-start-time: true +recurse: true +status-filter: false