From 860f6ffec5a4ae6609b3c33a100c68a7f760d1f4 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Tue, 13 Oct 2015 18:47:31 +0100 Subject: Implement bzr SCM module. Change-Id: Iee9c42a742b4062cb4756d16e5978905e115f13f --- jenkins_jobs/modules/scm.py | 60 ++++++++++++++++++++++++++++++++++++++++++ tests/scm/fixtures/bzr001.xml | 8 ++++++ tests/scm/fixtures/bzr001.yaml | 3 +++ tests/scm/fixtures/bzr002.xml | 8 ++++++ tests/scm/fixtures/bzr002.yaml | 5 ++++ tests/scm/fixtures/bzr003.xml | 11 ++++++++ tests/scm/fixtures/bzr003.yaml | 5 ++++ tests/scm/fixtures/bzr004.xml | 12 +++++++++ tests/scm/fixtures/bzr004.yaml | 6 +++++ 9 files changed, 118 insertions(+) create mode 100644 tests/scm/fixtures/bzr001.xml create mode 100644 tests/scm/fixtures/bzr001.yaml create mode 100644 tests/scm/fixtures/bzr002.xml create mode 100644 tests/scm/fixtures/bzr002.yaml create mode 100644 tests/scm/fixtures/bzr003.xml create mode 100644 tests/scm/fixtures/bzr003.yaml create mode 100644 tests/scm/fixtures/bzr004.xml create mode 100644 tests/scm/fixtures/bzr004.yaml diff --git a/jenkins_jobs/modules/scm.py b/jenkins_jobs/modules/scm.py index 299dce5d..fc5ecc24 100644 --- a/jenkins_jobs/modules/scm.py +++ b/jenkins_jobs/modules/scm.py @@ -1102,6 +1102,66 @@ def openshift_img_streams(parser, xml_parent, data): convert_mapping_to_xml(scm, data, mapping) +def bzr(parser, xml_parent, data): + """yaml: bzr + Specifies the bzr SCM repository for this job. + Requires the Jenkins :jenkins-wiki:`Bazaar Plugin `. + + :arg str url: URL of the bzr branch + :arg bool clean-tree: Clean up the workspace (using bzr) before pulling + the branch (default: false) + :arg bool lightweight-checkout: Use a lightweight checkout instead of a + full branch (default: false) + :arg str browser: The repository browser to use. + + :browsers supported: + * **auto** - (default) + * **loggerhead** - as used by Launchpad + * **opengrok** - https://opengrok.github.io/OpenGrok/ + + :arg str browser-url: + URL for the repository browser (required if browser is set). + + :arg str opengrok-root-module: + Root module for OpenGrok (required if browser is opengrok). + + Example: + + .. literalinclude:: /../../tests/scm/fixtures/bzr001.yaml + """ + if 'url' not in data: + raise JenkinsJobsException('Must specify a url for bzr scm') + mapping = [ + # option, xml name, default value (text), attributes (hard coded) + ('url', 'source', ''), + ('clean-tree', 'cleantree', False), + ('lightweight-checkout', 'checkout', False), + ] + scm_element = XML.SubElement( + xml_parent, 'scm', {'class': 'hudson.plugins.bazaar.BazaarSCM'}) + convert_mapping_to_xml(scm_element, data, mapping) + + browser_name_to_class = { + 'loggerhead': 'Loggerhead', + 'opengrok': 'OpenGrok', + } + browser = data.get('browser', 'auto') + if browser == 'auto': + return + if browser not in browser_name_to_class: + raise InvalidAttributeError('browser', browser, + browser_name_to_class.keys()) + browser_element = XML.SubElement( + scm_element, + 'browser', + {'class': 'hudson.plugins.bazaar.browsers.{0}'.format( + browser_name_to_class[browser])}) + XML.SubElement(browser_element, 'url').text = data['browser-url'] + if browser == 'opengrok': + XML.SubElement(browser_element, 'rootModule').text = ( + data['opengrok-root-module']) + + class SCM(jenkins_jobs.modules.base.Base): sequence = 30 diff --git a/tests/scm/fixtures/bzr001.xml b/tests/scm/fixtures/bzr001.xml new file mode 100644 index 00000000..1ae40823 --- /dev/null +++ b/tests/scm/fixtures/bzr001.xml @@ -0,0 +1,8 @@ + + + + lp:test_project + false + false + + diff --git a/tests/scm/fixtures/bzr001.yaml b/tests/scm/fixtures/bzr001.yaml new file mode 100644 index 00000000..cf1714e0 --- /dev/null +++ b/tests/scm/fixtures/bzr001.yaml @@ -0,0 +1,3 @@ +scm: + - bzr: + url: lp:test_project diff --git a/tests/scm/fixtures/bzr002.xml b/tests/scm/fixtures/bzr002.xml new file mode 100644 index 00000000..7500a3e3 --- /dev/null +++ b/tests/scm/fixtures/bzr002.xml @@ -0,0 +1,8 @@ + + + + lp:test_project + true + true + + diff --git a/tests/scm/fixtures/bzr002.yaml b/tests/scm/fixtures/bzr002.yaml new file mode 100644 index 00000000..13a27c9b --- /dev/null +++ b/tests/scm/fixtures/bzr002.yaml @@ -0,0 +1,5 @@ +scm: + - bzr: + url: lp:test_project + lightweight-checkout: True + clean-tree: True diff --git a/tests/scm/fixtures/bzr003.xml b/tests/scm/fixtures/bzr003.xml new file mode 100644 index 00000000..a4c2448c --- /dev/null +++ b/tests/scm/fixtures/bzr003.xml @@ -0,0 +1,11 @@ + + + + lp:test_project + false + false + + http://browser.example.com + + + diff --git a/tests/scm/fixtures/bzr003.yaml b/tests/scm/fixtures/bzr003.yaml new file mode 100644 index 00000000..8e4f8dbf --- /dev/null +++ b/tests/scm/fixtures/bzr003.yaml @@ -0,0 +1,5 @@ +scm: + - bzr: + url: lp:test_project + browser: loggerhead + browser-url: http://browser.example.com diff --git a/tests/scm/fixtures/bzr004.xml b/tests/scm/fixtures/bzr004.xml new file mode 100644 index 00000000..59d7273c --- /dev/null +++ b/tests/scm/fixtures/bzr004.xml @@ -0,0 +1,12 @@ + + + + lp:test_project + false + false + + http://browser.example.com + root/module + + + diff --git a/tests/scm/fixtures/bzr004.yaml b/tests/scm/fixtures/bzr004.yaml new file mode 100644 index 00000000..75fdb764 --- /dev/null +++ b/tests/scm/fixtures/bzr004.yaml @@ -0,0 +1,6 @@ +scm: + - bzr: + url: lp:test_project + browser: opengrok + browser-url: http://browser.example.com + opengrok-root-module: root/module -- cgit