Fix Multiple SCMs Plugin child XML format

Current implementation of Multiple SCMs Plugin seems to be broken.  Test
with following combination of Jenkins and Multiple SCMs Plugin

* Jenkins 2.2 (latest) + multiple-scms 0.6 (latest)
* Jenkins 1.651.1 (latest LTS) + multiple-scms 0.6 (latest)
* Jenkins 1.409.1 (oldest LTS) + multiple-scms 0.1 (oldest)
* Jenkins 1.396 (oldest) + multiple-scms 0.1 (oldest)

all emitted XML with following format (apart from `plugin=` here and
there):

```
  <scm class="org.jenkinsci.plugins.multiplescms.MultiSCM">
    <scms>
      <hudson.scm.SubversionSCM>
        :
      </hudson.scm.SubversionSCM>
      <hudson.scm.CVSSCM>
        :
      </hudson.scm.CVSSCM>
    </scms>
  </scm>
```

whereas current Jenkins Job Builder implementation emits XML with
following format:

```
  <scm class="org.jenkinsci.plugins.multiplescms.MultiSCM">
    <scms>
      <scm class="hudson.scm.SubversionSCM">
        :
      </scm>
      <scm class="hudson.scm.CVSSCM">
        :
      </scm>
    </scms>
  </scm>
```

This commit will fix this problem by modifying child `scm` node to a
correct format before adding to the parent `scm` node.

Change-Id: I0b9115c156a06a7fbdf529341dfc6100edf225aa
Signed-off-by: Ryo Tagami <rtagami@airstrip.jp>
This commit is contained in:
Ryo Tagami 2016-05-10 23:53:16 +09:00
parent ed733a9056
commit c28ac736be
4 changed files with 18 additions and 10 deletions

View File

@ -1240,4 +1240,12 @@ class SCM(jenkins_jobs.modules.base.Base):
class_name = 'org.jenkinsci.plugins.multiplescms.MultiSCM'
xml_attribs = {'class': class_name}
xml_parent = XML.SubElement(xml_parent, 'scm', xml_attribs)
for scms_child in scms_parent:
try:
scms_child.tag = scms_child.attrib['class']
del(scms_child.attrib['class'])
except KeyError:
pass
xml_parent.append(scms_parent)

View File

@ -10,7 +10,7 @@
<properties/>
<scm class="org.jenkinsci.plugins.multiplescms.MultiSCM">
<scms>
<scm class="hudson.plugins.git.GitSCM">
<hudson.plugins.git.GitSCM>
<configVersion>2</configVersion>
<userRemoteConfigs>
<hudson.plugins.git.UserRemoteConfig>
@ -46,8 +46,8 @@
<extensions>
<hudson.plugins.git.extensions.impl.WipeWorkspace/>
</extensions>
</scm>
<scm class="hudson.plugins.git.GitSCM">
</hudson.plugins.git.GitSCM>
<hudson.plugins.git.GitSCM>
<configVersion>2</configVersion>
<userRemoteConfigs>
<hudson.plugins.git.UserRemoteConfig>
@ -83,7 +83,7 @@
<extensions>
<hudson.plugins.git.extensions.impl.WipeWorkspace/>
</extensions>
</scm>
</hudson.plugins.git.GitSCM>
</scms>
</scm>
<builders/>

View File

@ -10,7 +10,7 @@
<properties/>
<scm class="org.jenkinsci.plugins.multiplescms.MultiSCM">
<scms>
<scm class="hudson.plugins.repo.RepoScm">
<hudson.plugins.repo.RepoScm>
<manifestRepositoryUrl>https://example.com/project/</manifestRepositoryUrl>
<manifestBranch>stable</manifestBranch>
<manifestFile>repo.xml</manifestFile>
@ -27,8 +27,8 @@
<noTags>false</noTags>
<trace>false</trace>
<showAllChanges>false</showAllChanges>
</scm>
<scm class="hudson.plugins.git.GitSCM">
</hudson.plugins.repo.RepoScm>
<hudson.plugins.git.GitSCM>
<configVersion>2</configVersion>
<userRemoteConfigs>
<hudson.plugins.git.UserRemoteConfig>
@ -64,7 +64,7 @@
<extensions>
<hudson.plugins.git.extensions.impl.WipeWorkspace/>
</extensions>
</scm>
</hudson.plugins.git.GitSCM>
</scms>
</scm>
<builders/>

View File

@ -2,7 +2,7 @@
<project>
<scm class="org.jenkinsci.plugins.multiplescms.MultiSCM">
<scms>
<scm class="hudson.plugins.git.GitSCM">
<hudson.plugins.git.GitSCM>
<configVersion>2</configVersion>
<userRemoteConfigs>
<hudson.plugins.git.UserRemoteConfig>
@ -38,7 +38,7 @@
<extensions>
<hudson.plugins.git.extensions.impl.WipeWorkspace/>
</extensions>
</scm>
</hudson.plugins.git.GitSCM>
<scm>
<scmraw/>
</scm>