From 0361d56fdf6adfdc27249c1ba698e0bf3bdb9096 Mon Sep 17 00:00:00 2001 From: Anil Belur Date: Sun, 11 Mar 2018 21:12:35 +1000 Subject: [PATCH] Add support for regex job filters Add support for regex job filters for views. Change-Id: Ic442aaf7f374800f1cd4d0d8a1229ee1e0557891 Signed-off-by: Anil Belur --- jenkins_jobs/modules/view_list.py | 22 ++++++++++++++ .../view_list_regexjobs_filter_full.xml | 29 +++++++++++++++++++ .../view_list_regexjobs_filter_full.yaml | 12 ++++++++ .../view_list_regexjobs_filter_min.xml | 29 +++++++++++++++++++ .../view_list_regexjobs_filter_min.yaml | 11 +++++++ 5 files changed, 103 insertions(+) create mode 100644 tests/views/fixtures/view_list_regexjobs_filter_full.xml create mode 100644 tests/views/fixtures/view_list_regexjobs_filter_full.yaml create mode 100644 tests/views/fixtures/view_list_regexjobs_filter_min.xml create mode 100644 tests/views/fixtures/view_list_regexjobs_filter_min.yaml diff --git a/jenkins_jobs/modules/view_list.py b/jenkins_jobs/modules/view_list.py index ca642e85f..ea97b7624 100644 --- a/jenkins_jobs/modules/view_list.py +++ b/jenkins_jobs/modules/view_list.py @@ -124,6 +124,14 @@ to the :ref:`view_list` definition. * **match-scm-changes** ('bool'): Jobs matching scm changes. (default False) + * **regex-job** (`dict`) + :regex-job: + * **match-type** ('str'): Jobs that match a filter + to include. (default includeMatched) + * **regex-name** ('str'): Regular expression name. + (default '') + * **regex** ('str'): Regular expression. (default '') + * **columns** (`list`): List of columns to be shown in view. * **regex** (`str`): . Regular expression for selecting jobs (optional) @@ -315,6 +323,20 @@ class List(jenkins_jobs.modules.base.Base): convert_mapping_to_xml(ur_xml, ur_data, mapping, fail_required=True) + if jobfilter == 'regex-job': + rj_xml = XML.SubElement(job_filter_xml, + 'hudson.views.RegExJobFilter') + rj_xml.set('plugin', 'view-job-filters') + rj_data = jobfilters.get('regex-job') + mapping = [ + ('match-type', 'includeExcludeTypeString', + 'includeMatched'), + ('regex-name', 'valueTypeString', ''), + ('regex', 'regex', ''), + ] + convert_mapping_to_xml(rj_xml, rj_data, mapping, + fail_required=True) + c_xml = XML.SubElement(root, 'columns') columns = data.get('columns', DEFAULT_COLUMNS) diff --git a/tests/views/fixtures/view_list_regexjobs_filter_full.xml b/tests/views/fixtures/view_list_regexjobs_filter_full.xml new file mode 100644 index 000000000..7242ea0ed --- /dev/null +++ b/tests/views/fixtures/view_list_regexjobs_filter_full.xml @@ -0,0 +1,29 @@ + + + list-view-name01 + Sample description + true + true + + + + + + + includeMatched + NAME + .* + + + + + + + + + + + + true + false + diff --git a/tests/views/fixtures/view_list_regexjobs_filter_full.yaml b/tests/views/fixtures/view_list_regexjobs_filter_full.yaml new file mode 100644 index 000000000..18edb79dc --- /dev/null +++ b/tests/views/fixtures/view_list_regexjobs_filter_full.yaml @@ -0,0 +1,12 @@ +name: list-view-name01 +view-type: list +description: 'Sample description' +filter-executors: true +filter-queue: true +job-filters: + regex-job: + match-type: includeMatched + regex-name: NAME + regex: '.*' +recurse: true +status-filter: false diff --git a/tests/views/fixtures/view_list_regexjobs_filter_min.xml b/tests/views/fixtures/view_list_regexjobs_filter_min.xml new file mode 100644 index 000000000..461edc334 --- /dev/null +++ b/tests/views/fixtures/view_list_regexjobs_filter_min.xml @@ -0,0 +1,29 @@ + + + list-view-name01 + Sample description + true + true + + + + + + + includeMatched + NAME + + + + + + + + + + + + + true + false + diff --git a/tests/views/fixtures/view_list_regexjobs_filter_min.yaml b/tests/views/fixtures/view_list_regexjobs_filter_min.yaml new file mode 100644 index 000000000..359296861 --- /dev/null +++ b/tests/views/fixtures/view_list_regexjobs_filter_min.yaml @@ -0,0 +1,11 @@ +name: list-view-name01 +view-type: list +description: 'Sample description' +filter-executors: true +filter-queue: true +job-filters: + regex-job: + match-type: includeMatched + regex-name: NAME +recurse: true +status-filter: false