diff --git a/jenkins_jobs/modules/wrappers.py b/jenkins_jobs/modules/wrappers.py index 6c660f98c..9078fdde2 100644 --- a/jenkins_jobs/modules/wrappers.py +++ b/jenkins_jobs/modules/wrappers.py @@ -57,6 +57,48 @@ def ci_skip(parser, xml_parent, data): }) +def config_file_provider(parser, xml_parent, data): + """yaml: config-file-provider + Provide configuration files (i.e., settings.xml for maven etc.) + which will be copied to the job's workspace. + Requires the Jenkins `Config File Provider Plugin. + `_ + + :arg list files: List of managed config files made up of three\ + parameters + + :Parameter: * **file-id** (`str`)\ + The identifier for the managed config file + :Parameter: * **target** (`str`)\ + Define where the file should be created (optional) + :Parameter: * **variable** (`str`)\ + Define an environment variable to be used (optional) + + Example: + + .. literalinclude:: \ + /../../tests/wrappers/fixtures/config-file-provider003.yaml + :language: yaml + """ + top = XML.SubElement(xml_parent, 'org.jenkinsci.plugins.configfiles.' + 'buildwrapper.ConfigFileBuildWrapper') + xml_files = XML.SubElement(top, 'managedFiles') + + files = data.get('files', []) + for file in files: + xml_file = XML.SubElement(xml_files, 'org.jenkinsci.plugins.' + 'configfiles.buildwrapper.ManagedFile') + file_id = file.get('file-id') + if file_id is None: + raise JenkinsJobsException("file-id is required for each " + "managed configuration file") + XML.SubElement(xml_file, 'fileId').text = str(file_id) + XML.SubElement(xml_file, 'targetLocation').text = \ + file.get('target', '') + XML.SubElement(xml_file, 'variable').text = \ + file.get('variable', '') + + def logfilesize(parser, xml_parent, data): """yaml: logfilesize Abort the build if its logfile becomes too big. diff --git a/setup.cfg b/setup.cfg index 1f2cdda83..83ec30451 100644 --- a/setup.cfg +++ b/setup.cfg @@ -188,6 +188,7 @@ jenkins_jobs.wrappers = build-name=jenkins_jobs.modules.wrappers:build_name build-user-vars=jenkins_jobs.modules.wrappers:build_user_vars ci-skip=jenkins_jobs.modules.wrappers:ci_skip + config-file-provider=jenkins_jobs.modules.wrappers:config_file_provider copy-to-slave=jenkins_jobs.modules.wrappers:copy_to_slave delivery-pipeline=jenkins_jobs.modules.wrappers:delivery_pipeline env-file=jenkins_jobs.modules.wrappers:env_file diff --git a/tests/wrappers/fixtures/config-file-provider001.xml b/tests/wrappers/fixtures/config-file-provider001.xml new file mode 100644 index 000000000..14f6e7646 --- /dev/null +++ b/tests/wrappers/fixtures/config-file-provider001.xml @@ -0,0 +1,14 @@ + + + + + + + org.jenkinsci.plugins.configfiles.custom.CustomConfig1409250932722 + tmp/bar.txt + varname + + + + + diff --git a/tests/wrappers/fixtures/config-file-provider001.yaml b/tests/wrappers/fixtures/config-file-provider001.yaml new file mode 100644 index 000000000..d8da6bf34 --- /dev/null +++ b/tests/wrappers/fixtures/config-file-provider001.yaml @@ -0,0 +1,6 @@ +wrappers: + - config-file-provider: + files: + - file-id: org.jenkinsci.plugins.configfiles.custom.CustomConfig1409250932722 + target: tmp/bar.txt + variable: varname diff --git a/tests/wrappers/fixtures/config-file-provider002.xml b/tests/wrappers/fixtures/config-file-provider002.xml new file mode 100644 index 000000000..cede51e85 --- /dev/null +++ b/tests/wrappers/fixtures/config-file-provider002.xml @@ -0,0 +1,14 @@ + + + + + + + org.jenkinsci.plugins.configfiles.custom.CustomConfig1234 + + + + + + + diff --git a/tests/wrappers/fixtures/config-file-provider002.yaml b/tests/wrappers/fixtures/config-file-provider002.yaml new file mode 100644 index 000000000..8d53df824 --- /dev/null +++ b/tests/wrappers/fixtures/config-file-provider002.yaml @@ -0,0 +1,4 @@ +wrappers: + - config-file-provider: + files: + - file-id: org.jenkinsci.plugins.configfiles.custom.CustomConfig1234 \ No newline at end of file diff --git a/tests/wrappers/fixtures/config-file-provider003.xml b/tests/wrappers/fixtures/config-file-provider003.xml new file mode 100644 index 000000000..cbc9aedf5 --- /dev/null +++ b/tests/wrappers/fixtures/config-file-provider003.xml @@ -0,0 +1,19 @@ + + + + + + + org.jenkinsci.plugins.configfiles.custom.CustomConfig1234 + + + + + org.jenkinsci.plugins.configfiles.custom.CustomConfig5678 + /foo.txt + varName + + + + + diff --git a/tests/wrappers/fixtures/config-file-provider003.yaml b/tests/wrappers/fixtures/config-file-provider003.yaml new file mode 100644 index 000000000..dba4d333a --- /dev/null +++ b/tests/wrappers/fixtures/config-file-provider003.yaml @@ -0,0 +1,7 @@ +wrappers: + - config-file-provider: + files: + - file-id: org.jenkinsci.plugins.configfiles.custom.CustomConfig1234 + - file-id: org.jenkinsci.plugins.configfiles.custom.CustomConfig5678 + target: /foo.txt + variable: varName