diff --git a/jenkins_jobs/modules/builders.py b/jenkins_jobs/modules/builders.py
index 300f1e6c4..8c0ed88fd 100644
--- a/jenkins_jobs/modules/builders.py
+++ b/jenkins_jobs/modules/builders.py
@@ -973,51 +973,61 @@ def artifact_resolver(registry, xml_parent, data):
:arg bool fail-on-error: Whether to fail the build on error (default false)
:arg bool repository-logging: Enable repository logging (default false)
- :arg str target-directory: Where to resolve artifacts to
+ :arg str target-directory: Where to resolve artifacts to (required)
:arg list artifacts: list of artifacts to resolve
:Artifact:
- * **group-id** (`str`) -- Group ID of the artifact
- * **artifact-id** (`str`) -- Artifact ID of the artifact
- * **version** (`str`) -- Version of the artifact
+ * **group-id** (`str`) -- Group ID of the artifact (required)
+ * **artifact-id** (`str`) -- Artifact ID of the artifact (required)
+ * **version** (`str`) -- Version of the artifact (required)
* **classifier** (`str`) -- Classifier of the artifact (default '')
* **extension** (`str`) -- Extension of the artifact
(default 'jar')
* **target-file-name** (`str`) -- What to name the artifact
(default '')
- Example:
+ Minimal Example:
- .. literalinclude:: ../../tests/builders/fixtures/artifact-resolver.yaml
+ .. literalinclude::
+ ../../tests/builders/fixtures/artifact-resolver-minimal.yaml
+ :language: yaml
+
+ Full Example:
+
+ .. literalinclude::
+ ../../tests/builders/fixtures/artifact-resolver-full.yaml
:language: yaml
"""
- ar = XML.SubElement(xml_parent,
- 'org.jvnet.hudson.plugins.repositoryconnector.'
- 'ArtifactResolver')
- XML.SubElement(ar, 'targetDirectory').text = data['target-directory']
- artifacttop = XML.SubElement(ar, 'artifacts')
+ ar = XML.SubElement(
+ xml_parent,
+ 'org.jvnet.hudson.plugins.repositoryconnector.ArtifactResolver')
+ mapping = [
+ ('target-directory', 'targetDirectory', None),
+ ('fail-on-error', 'failOnError', False),
+ ('repository-logging', 'enableRepoLogging', False),
+ ('', 'snapshotUpdatePolicy', 'never'),
+ ('', 'releaseUpdatePolicy', 'never'),
+ ('', 'snapshotChecksumPolicy', 'warn'),
+ ('', 'releaseChecksumPolicy', 'warn'),
+ ]
+ convert_mapping_to_xml(ar, data, mapping, fail_required=True)
+
+ artifact_top = XML.SubElement(ar, 'artifacts')
artifacts = data['artifacts']
+ artifacts_mapping = [
+ ('group-id', 'groupId', None),
+ ('artifact-id', 'artifactId', None),
+ ('version', 'version', None),
+ ('classifier', 'classifier', ''),
+ ('extension', 'extension', 'jar'),
+ ('target-file-name', 'targetFileName', ''),
+ ]
for artifact in artifacts:
- rcartifact = XML.SubElement(artifacttop,
- 'org.jvnet.hudson.plugins.'
- 'repositoryconnector.Artifact')
- XML.SubElement(rcartifact, 'groupId').text = artifact['group-id']
- XML.SubElement(rcartifact, 'artifactId').text = artifact['artifact-id']
- XML.SubElement(rcartifact, 'classifier').text = artifact.get(
- 'classifier', '')
- XML.SubElement(rcartifact, 'version').text = artifact['version']
- XML.SubElement(rcartifact, 'extension').text = artifact.get(
- 'extension', 'jar')
- XML.SubElement(rcartifact, 'targetFileName').text = artifact.get(
- 'target-file-name', '')
- XML.SubElement(ar, 'failOnError').text = str(data.get(
- 'fail-on-error', False)).lower()
- XML.SubElement(ar, 'enableRepoLogging').text = str(data.get(
- 'repository-logging', False)).lower()
- XML.SubElement(ar, 'snapshotUpdatePolicy').text = 'never'
- XML.SubElement(ar, 'releaseUpdatePolicy').text = 'never'
- XML.SubElement(ar, 'snapshotChecksumPolicy').text = 'warn'
- XML.SubElement(ar, 'releaseChecksumPolicy').text = 'warn'
+ rcartifact = XML.SubElement(
+ artifact_top,
+ 'org.jvnet.hudson.plugins.repositoryconnector.Artifact')
+ convert_mapping_to_xml(
+ rcartifact, artifact, artifacts_mapping, fail_required=True)
def doxygen(registry, xml_parent, data):
diff --git a/tests/builders/fixtures/artifact-resolver.xml b/tests/builders/fixtures/artifact-resolver-full.xml
similarity index 100%
rename from tests/builders/fixtures/artifact-resolver.xml
rename to tests/builders/fixtures/artifact-resolver-full.xml
index b1900ad30..e92e62387 100644
--- a/tests/builders/fixtures/artifact-resolver.xml
+++ b/tests/builders/fixtures/artifact-resolver-full.xml
@@ -3,30 +3,30 @@
foo
-
-
- commons-logging
- commons-logging
- src
- 1.1
- jar
- comm-log.jar
-
-
- commons-lang
- commons-lang
-
- 1.2
- jar
-
-
-
true
true
never
never
warn
warn
+
+
+ commons-logging
+ commons-logging
+ 1.1
+ src
+ jar
+ comm-log.jar
+
+
+ commons-lang
+ commons-lang
+ 1.2
+
+ jar
+
+
+
diff --git a/tests/builders/fixtures/artifact-resolver.yaml b/tests/builders/fixtures/artifact-resolver-full.yaml
similarity index 100%
rename from tests/builders/fixtures/artifact-resolver.yaml
rename to tests/builders/fixtures/artifact-resolver-full.yaml
diff --git a/tests/builders/fixtures/artifact-resolver-minimal.xml b/tests/builders/fixtures/artifact-resolver-minimal.xml
new file mode 100644
index 000000000..12b04e476
--- /dev/null
+++ b/tests/builders/fixtures/artifact-resolver-minimal.xml
@@ -0,0 +1,24 @@
+
+
+
+
+ foo
+ false
+ false
+ never
+ never
+ warn
+ warn
+
+
+ commons-logging
+ commons-logging
+ 1.1
+
+ jar
+
+
+
+
+
+
diff --git a/tests/builders/fixtures/artifact-resolver-minimal.yaml b/tests/builders/fixtures/artifact-resolver-minimal.yaml
new file mode 100644
index 000000000..7a5a4a110
--- /dev/null
+++ b/tests/builders/fixtures/artifact-resolver-minimal.yaml
@@ -0,0 +1,7 @@
+builders:
+ - artifact-resolver:
+ target-directory: foo
+ artifacts:
+ - group-id: commons-logging
+ artifact-id: commons-logging
+ version: "1.1"