From 5c05925d00c8735501cc8a63432054adcf910d92 Mon Sep 17 00:00:00 2001 From: vbotay Date: Mon, 23 Oct 2017 17:01:23 +0300 Subject: [PATCH] Add NodeJS executor build step Currently there is no possibility to setup options for 'NodeJS Plugin' https://wiki.jenkins.io/display/JENKINS/NodeJS+Plugin But 'NodeJS Plugin' is widely used to get ability of executing JS in build step So this patch introduces configuration options for 'Execute NodeJS script' build step. Change-Id: Ie0a9863f235d4199a6de350036394b8d054eb1e9 --- jenkins_jobs/modules/builders.py | 28 +++++++++++++++++++++ tests/builders/fixtures/nodejs-full.xml | 10 ++++++++ tests/builders/fixtures/nodejs-full.yaml | 5 ++++ tests/builders/fixtures/nodejs-minimal.xml | 8 ++++++ tests/builders/fixtures/nodejs-minimal.yaml | 3 +++ 5 files changed, 54 insertions(+) create mode 100644 tests/builders/fixtures/nodejs-full.xml create mode 100644 tests/builders/fixtures/nodejs-full.yaml create mode 100644 tests/builders/fixtures/nodejs-minimal.xml create mode 100644 tests/builders/fixtures/nodejs-minimal.yaml diff --git a/jenkins_jobs/modules/builders.py b/jenkins_jobs/modules/builders.py index d893627f8..12e72e670 100644 --- a/jenkins_jobs/modules/builders.py +++ b/jenkins_jobs/modules/builders.py @@ -4090,3 +4090,31 @@ def ansible_playbook(parser, xml_parent, data): XML.SubElement(value_elm, 'value').text = values.get('value', '') XML.SubElement(value_elm, 'hidden').text = str( values.get('hidden', False)).lower() + + +def nodejs(parser, xml_parent, data): + """yaml: nodejs + This plugin allows to execute NodeJS scripts as a job build step. + Requires the Jenkins :jenkins-wiki:`NodeJS Plugin `. + + :arg str name: NodeJS installation name + :arg str script: NodeJS script (required) + :arg str config-id: ID of npmrc config file, which is the + last field (a 32-digit hexadecimal code) of the path of URL visible + after you clicked the file under Jenkins Managed Files. + + Example: + + .. literalinclude:: + /../../tests/builders/fixtures/nodejs-executor001.yaml + + """ + nodejs = XML.SubElement(xml_parent, + 'jenkins.plugins.nodejs.NodeJSCommandInterpreter') + mapping = [('script', 'command', None)] + + mapping_opt = [('name', 'nodeJSInstallationName', None), + ('config-id', 'configId', None)] + + convert_mapping_to_xml(nodejs, data, mapping, fail_required=True) + convert_mapping_to_xml(nodejs, data, mapping_opt, fail_required=False) diff --git a/tests/builders/fixtures/nodejs-full.xml b/tests/builders/fixtures/nodejs-full.xml new file mode 100644 index 000000000..47a9c8b8e --- /dev/null +++ b/tests/builders/fixtures/nodejs-full.xml @@ -0,0 +1,10 @@ + + + + + console.log('Some output'); + NodeJS_8.1 + e3757442-7c21-4a65-a1ff-6c70f5c6df34 + + + diff --git a/tests/builders/fixtures/nodejs-full.yaml b/tests/builders/fixtures/nodejs-full.yaml new file mode 100644 index 000000000..a519614cb --- /dev/null +++ b/tests/builders/fixtures/nodejs-full.yaml @@ -0,0 +1,5 @@ +builders: + - nodejs: + name: "NodeJS_8.1" + script: "console.log('Some output');" + config-id: "e3757442-7c21-4a65-a1ff-6c70f5c6df34" diff --git a/tests/builders/fixtures/nodejs-minimal.xml b/tests/builders/fixtures/nodejs-minimal.xml new file mode 100644 index 000000000..df8bfa80b --- /dev/null +++ b/tests/builders/fixtures/nodejs-minimal.xml @@ -0,0 +1,8 @@ + + + + + console.log('Some output'); + + + diff --git a/tests/builders/fixtures/nodejs-minimal.yaml b/tests/builders/fixtures/nodejs-minimal.yaml new file mode 100644 index 000000000..e64bfc6eb --- /dev/null +++ b/tests/builders/fixtures/nodejs-minimal.yaml @@ -0,0 +1,3 @@ +builders: + - nodejs: + script: "console.log('Some output');"