The XML configuration for the publish over ssh plugin fails to load in the current (1.504) version of jenkins and the plugin (1.10). On my system, the file is located at: /var/lib/jenkins/jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin.xml.
It seems to be an issue with xstream conversion. Here's the relevant bit of the stack trace (full trace is at the bottom).
Caused by: com.thoughtworks.xstream.converters.ConversionException: object is not an instance of declaring class : object is not an instance of declaring class
---- Debugging information ----
message : object is not an instance of declaring class
cause-exception : java.lang.IllegalArgumentException
cause-message : object is not an instance of declaring class
class : jenkins.plugins.publish_over_ssh.BapSshHostConfiguration
required-type : jenkins.plugins.publish_over_ssh.BapSshHostConfiguration
converter-type : hudson.util.RobustReflectionConverter
path : /jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin$Descriptor/hostConfigurations/jenkins.plugins.publish_over_ssh.BapSshHostConfiguration
line number : 25
class[1] : hudson.util.CopyOnWriteList
converter-type[1] : hudson.util.XStream2$AssociatedConverterImpl
class[2] : jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin$Descriptor
version : null
-------------------------------
Jenkins still starts, however the configured ssh hosts do not show up. The configuration element that ends on line 25 is:
<jenkins.plugins.publish_over_ssh.BapSshHostConfiguration>
<name>[redacted]</name>
<hostname>[redacted]</hostname>
<username>[redacted]</username>
<secretPassword>[redacted]</secretPassword>
<remoteRootDir>[redacted]</remoteRootDir>
<port>22</port>
<commonConfig class="jenkins.plugins.publish_over_ssh.BapSshCommonConfiguration">
<secretPassphrase>[redacted]</secretPassphrase>
<key></key>
<keyPath>.ssh/id_rsa</keyPath>
<disableAllExec>false</disableAllExec>
</commonConfig>
<timeout>300000</timeout>
<overrideKey>false</overrideKey>
<disableExec>false</disableExec>
<keyInfo>
<secretPassphrase>[redacted]</secretPassphrase>
<key></key>
<keyPath></keyPath>
</keyInfo>
</jenkins.plugins.publish_over_ssh.BapSshHostConfiguration>
The full stack trace:
WARNING: Failed to load /var/lib/jenkins/jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin.xml
hudson.util.IOException2: Unable to read /var/lib/jenkins/jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin.xml
at hudson.XmlFile.unmarshal(XmlFile.java:164)
at hudson.model.Descriptor.load(Descriptor.java:806)
at jenkins.plugins.publish_over_ssh.descriptor.BapSshPublisherPluginDescriptor.<init>(BapSshPublisherPluginDescriptor.java:68)
at jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin$Descriptor.<init>(BapSshPublisherPlugin.java:81)
at jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin$Descriptor$$FastClassByGuice$$c0ccaf36.newInstance(<generated>)
at com.google.inject.internal.cglib.reflect.$FastConstructor.newInstance(FastConstructor.java:40)
at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:61)
at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:108)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:87)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:259)
at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1018)
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.Scopes$1$1.get(Scopes.java:59)
at hudson.ExtensionFinder$GuiceFinder$4$1.get(ExtensionFinder.java:422)
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
at com.google.inject.internal.InjectorImpl$3$1.call(InjectorImpl.java:965)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1011)
at com.google.inject.internal.InjectorImpl$3.get(InjectorImpl.java:961)
at hudson.ExtensionFinder$GuiceFinder._find(ExtensionFinder.java:391)
at hudson.ExtensionFinder$GuiceFinder.find(ExtensionFinder.java:382)
at hudson.ExtensionFinder._find(ExtensionFinder.java:151)
at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:318)
at hudson.ExtensionList.load(ExtensionList.java:295)
at hudson.ExtensionList.ensureLoaded(ExtensionList.java:248)
at hudson.ExtensionList.iterator(ExtensionList.java:138)
at jenkins.model.Jenkins.getDescriptorByType(Jenkins.java:1171)
at hudson.plugins.copyartifact.BuildSelectorParameter.initAliases(BuildSelectorParameter.java:100)
at hudson.plugins.copyartifact.CopyArtifactPlugin.postInitialize(CopyArtifactPlugin.java:35)
at hudson.PluginManager$2$1$2.run(PluginManager.java:352)
at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:146)
at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:259)
at jenkins.model.Jenkins$7.runTask(Jenkins.java:883)
at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:187)
at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:94)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:679)
Caused by: com.thoughtworks.xstream.converters.ConversionException: object is not an instance of declaring class : object is not an instance of declaring class
---- Debugging information ----
message : object is not an instance of declaring class
cause-exception : java.lang.IllegalArgumentException
cause-message : object is not an instance of declaring class
class : jenkins.plugins.publish_over_ssh.BapSshHostConfiguration
required-type : jenkins.plugins.publish_over_ssh.BapSshHostConfiguration
converter-type : hudson.util.RobustReflectionConverter
path : /jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin$Descriptor/hostConfigurations/jenkins.plugins.publish_over_ssh.BapSshHostConfiguration
line number : 25
class[1] : hudson.util.CopyOnWriteList
converter-type[1] : hudson.util.XStream2$AssociatedConverterImpl
class[2] : jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin$Descriptor
version : null
-------------------------------
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
at hudson.util.CopyOnWriteList$ConverterImpl.unmarshal(CopyOnWriteList.java:193)
at hudson.util.CopyOnWriteList$ConverterImpl.unmarshal(CopyOnWriteList.java:172)
at hudson.util.XStream2$AssociatedConverterImpl.unmarshal(XStream2.java:337)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at hudson.util.RobustReflectionConverter.unmarshalField(RobustReflectionConverter.java:333)
at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:275)
at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:222)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1061)
at hudson.util.XStream2.unmarshal(XStream2.java:109)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1045)
at hudson.XmlFile.unmarshal(XmlFile.java:160)
... 37 more
Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at com.thoughtworks.xstream.converters.reflection.SerializationMethodInvoker.callReadResolve(SerializationMethodInvoker.java:66)
at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:223)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
... 60 more