Skip to content

Conversation

@jglick
Copy link
Member

@jglick jglick commented Oct 4, 2018

Split the generic parts of this plugin into https://github.com/jglick/artifact-manager-jclouds-plugin. While JenkinsRule-based tests pass, it does not work in an actual Jenkins server due to class loading conflicts. artifact-manager-jclouds must use Mask-Classes so it can load its own copy of Guava compatible with jclouds, rather than the ancient copy bundled in Jenkins core. But then artifact-manager-s3 is stuck: if it also masks the same classes, it will not agree on Guava types being used to communicate between the two (identical bytecode would be loaded twice); if it does not, then it picks up the old copy from core, which does not work. Plugin-First-ClassLoader would not help here. Global-Mask-Classes probably would—this would allow artifact-manager-jclouds to ignore core’s version, and artifact-manager-s3 to also ignore core’s version but inherit from artifact-manager-jclouds—but this would be extremely risky, as it would mean that any plugin in Jenkins attempting to refer to Guava would fail. The Jenkins plugin metadata simply offers no way to express that some classes should be masked only from core but not from plugin dependencies. So the only apparent ways forward would be:

@jglick
Copy link
Member Author

jglick commented Mar 27, 2019

No immediate plans to resume work on this. The one other known ArtifactManagerFactory implementation, for Azure, does not use jclouds anyway.

@jglick jglick closed this Mar 27, 2019
@jglick jglick deleted the split branch March 27, 2019 16:28
@jglick
Copy link
Member Author

jglick commented Mar 28, 2019

See JENKINS-56795 for the GUI.

@jglick
Copy link
Member Author

jglick commented Jul 10, 2019

the ancient copy bundled in Jenkins core

See JENKINS-36779.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant