jenkinsci / azure-storage-plugin

21 stars 45 forks source link

Remove mandatory install of blue ocean plugin #285

Closed NotMyFault closed 10 months ago

NotMyFault commented 10 months ago

Fixes #278

As a user of the azure-storage plugin who doesn't use BO at all, it's frustrating that I need this dependency installed. Would you strongly object to removing the BO integration all together @timja?

It was added in 2018 when BO was alive, but 6 years later, it's declared abandoned and EOL. I see no real reason why we should keep up an integration for an end-of-life plugin.

NotMyFault commented 10 months ago

what about just making the dependency optional and marking the extension as optional instead?

Good idea, I didn't consider that :)

NotMyFault commented 10 months ago

untested, looks good to me though, thanks!

annotated classes must have a public no-argument constructor

Rip, can we add a dummy constructor like:

public AzureStorageBlueArtifact() {
        super(null);
        this.action = null;
        this.artifact = null;
    }

or sth else?

timja commented 10 months ago

untested, looks good to me though, thanks!

annotated classes must have a public no-argument constructor

Rip, can we add a dummy constructor like:

public AzureStorageBlueArtifact() {
        super(null);
        this.action = null;
        this.artifact = null;
    }

or sth else?

i think so

Minreaux commented 9 months ago

I removed the Rest API for Blue Ocean plugin after seeing this update that it was no longer required for the Azure Storage plugin to work. After removing these plugins and restarting Jenkins, I noticed the following errors in our Jenkins system logs. As far as I can tell, everything still works as expected, but seeing these errors in the logs after restart was initially startling:

Feb 14, 2024 8:36:30 PM INFO com.microsoftopentechnologies.windowsazurestorage.helper.CredentialMigration upgradeStorageConfig
/var/lib/jenkins/com.microsoftopentechnologies.windowsazurestorage.WAStoragePublisher.xml exists, upgrade will start now...
Feb 14, 2024 8:36:30 PM INFO com.microsoftopentechnologies.windowsazurestorage.helper.CredentialMigration backupFile
/var/lib/jenkins/com.microsoftopentechnologies.windowsazurestorage.WAStoragePublisher.xml.backup has been created for backup.
Feb 14, 2024 8:36:30 PM INFO com.microsoftopentechnologies.windowsazurestorage.helper.CredentialMigration upgradeStorageConfig
Migrated successfully, deleting legacy config files...
Feb 14, 2024 8:36:30 PM INFO com.microsoftopentechnologies.windowsazurestorage.helper.CredentialMigration removeFile
com.microsoftopentechnologies.windowsazurestorage.WAStoragePublisher.xml is deleted!
Feb 14, 2024 8:36:30 PM INFO com.microsoftopentechnologies.windowsazurestorage.helper.CredentialMigration removeFile
com.microsoftopentechnologies.windowsazurestorage.WAStoragePublisher.xml.backup is deleted!
Feb 14, 2024 8:36:30 PM WARNING hudson.ExtensionFinder$Sezpoz scout
Failed to scout com.microsoftopentechnologies.windowsazurestorage.AzureStorageBlueArtifact$FactoryImpl
java.lang.ClassNotFoundException: io.jenkins.blueocean.rest.factory.BlueArtifactFactory
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
    at jenkins.util.URLClassLoader2.findClass(URLClassLoader2.java:35)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:594)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
Caused: java.lang.NoClassDefFoundError: io/jenkins/blueocean/rest/factory/BlueArtifactFactory
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1022)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:555)
    at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458)
    at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451)
    at jenkins.util.URLClassLoader2.findClass(URLClassLoader2.java:35)
    at jenkins.ClassLoaderReflectionToolkit.loadClass(ClassLoaderReflectionToolkit.java:148)
    at hudson.PluginManager$UberClassLoader.computeValue(PluginManager.java:2347)
    at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
    at hudson.PluginManager$UberClassLoader.findClass(PluginManager.java:2340)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:594)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
    at net.java.sezpoz.IndexItem.element(IndexItem.java:134)
Caused: java.lang.InstantiationException
    at net.java.sezpoz.IndexItem.element(IndexItem.java:146)
    at hudson.ExtensionFinder.getClassFromIndex(ExtensionFinder.java:785)
    at hudson.ExtensionFinder$Sezpoz.scout(ExtensionFinder.java:770)
    at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:338)
    at hudson.ExtensionList.load(ExtensionList.java:384)
    at hudson.ExtensionList.ensureLoaded(ExtensionList.java:320)
    at hudson.ExtensionList.getComponents(ExtensionList.java:184)
    at jenkins.model.Jenkins$6.onInitMilestoneAttained(Jenkins.java:1202)
    at jenkins.InitReactorRunner$1.onAttained(InitReactorRunner.java:88)
    at org.jvnet.hudson.reactor.ReactorListener$Aggregator.lambda$onAttained$3(ReactorListener.java:108)
    at org.jvnet.hudson.reactor.ReactorListener$Aggregator.run(ReactorListener.java:116)
    at org.jvnet.hudson.reactor.ReactorListener$Aggregator.onAttained(ReactorListener.java:108)
    at org.jvnet.hudson.reactor.Reactor$1.run(Reactor.java:182)
    at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:120)
    at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)

Feb 14, 2024 8:36:31 PM WARNING hudson.ExtensionFinder$Sezpoz _find
Failed to load com.microsoftopentechnologies.windowsazurestorage.AzureStorageBlueArtifact$FactoryImpl
java.lang.ClassNotFoundException: io.jenkins.blueocean.rest.factory.BlueArtifactFactory
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
    at jenkins.util.URLClassLoader2.findClass(URLClassLoader2.java:35)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:594)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
Caused: java.lang.NoClassDefFoundError: io/jenkins/blueocean/rest/factory/BlueArtifactFactory
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1022)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:555)
    at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458)
    at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451)
    at jenkins.util.URLClassLoader2.findClass(URLClassLoader2.java:35)
    at jenkins.ClassLoaderReflectionToolkit.loadClass(ClassLoaderReflectionToolkit.java:148)
    at hudson.PluginManager$UberClassLoader.computeValue(PluginManager.java:2347)
    at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
    at hudson.PluginManager$UberClassLoader.findClass(PluginManager.java:2340)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:594)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
    at net.java.sezpoz.IndexItem.element(IndexItem.java:134)
Caused: java.lang.InstantiationException
    at net.java.sezpoz.IndexItem.element(IndexItem.java:146)
    at hudson.ExtensionFinder.getClassFromIndex(ExtensionFinder.java:785)
    at hudson.ExtensionFinder$Sezpoz._find(ExtensionFinder.java:745)
    at hudson.ExtensionFinder$Sezpoz.find(ExtensionFinder.java:734)
    at hudson.ExtensionFinder$GuiceFinder.refreshExtensionAnnotations(ExtensionFinder.java:301)
    at hudson.ExtensionFinder$GuiceFinder.<init>(ExtensionFinder.java:262)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at java.base/java.lang.Class.newInstance(Class.java:584)
    at net.java.sezpoz.IndexItem.instance(IndexItem.java:181)
    at hudson.ExtensionFinder$Sezpoz._find(ExtensionFinder.java:748)
    at hudson.ExtensionFinder$Sezpoz.find(ExtensionFinder.java:734)
    at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:344)
    at hudson.ExtensionList.load(ExtensionList.java:384)
    at hudson.ExtensionList.ensureLoaded(ExtensionList.java:320)
    at hudson.ExtensionList.getComponents(ExtensionList.java:184)
    at jenkins.model.Jenkins$6.onInitMilestoneAttained(Jenkins.java:1202)
    at jenkins.InitReactorRunner$1.onAttained(InitReactorRunner.java:88)
    at org.jvnet.hudson.reactor.ReactorListener$Aggregator.lambda$onAttained$3(ReactorListener.java:108)
    at org.jvnet.hudson.reactor.ReactorListener$Aggregator.run(ReactorListener.java:116)
    at org.jvnet.hudson.reactor.ReactorListener$Aggregator.onAttained(ReactorListener.java:108)
    at org.jvnet.hudson.reactor.Reactor$1.run(Reactor.java:182)
    at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:120)
    at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)

Feb 14, 2024 8:36:31 PM WARNING hudson.ExtensionFinder$Sezpoz _find
Failed to load com.microsoftopentechnologies.windowsazurestorage.AzureStorageBlueArtifact$FactoryImpl
java.lang.ClassNotFoundException: io.jenkins.blueocean.rest.factory.BlueArtifactFactory
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
    at jenkins.util.URLClassLoader2.findClass(URLClassLoader2.java:35)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:594)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
Caused: java.lang.NoClassDefFoundError: io/jenkins/blueocean/rest/factory/BlueArtifactFactory
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1022)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:555)
    at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458)
    at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451)
    at jenkins.util.URLClassLoader2.findClass(URLClassLoader2.java:35)
    at jenkins.ClassLoaderReflectionToolkit.loadClass(ClassLoaderReflectionToolkit.java:148)
    at hudson.PluginManager$UberClassLoader.computeValue(PluginManager.java:2347)
    at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
    at hudson.PluginManager$UberClassLoader.findClass(PluginManager.java:2340)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:594)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
    at net.java.sezpoz.IndexItem.element(IndexItem.java:134)
Caused: java.lang.InstantiationException
    at net.java.sezpoz.IndexItem.element(IndexItem.java:146)
    at hudson.ExtensionFinder.getClassFromIndex(ExtensionFinder.java:785)
    at hudson.ExtensionFinder$Sezpoz._find(ExtensionFinder.java:745)
    at hudson.ExtensionFinder$Sezpoz.find(ExtensionFinder.java:734)
    at hudson.ExtensionFinder$GuiceFinder.<init>(ExtensionFinder.java:277)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at java.base/java.lang.Class.newInstance(Class.java:584)
    at net.java.sezpoz.IndexItem.instance(IndexItem.java:181)
    at hudson.ExtensionFinder$Sezpoz._find(ExtensionFinder.java:748)
    at hudson.ExtensionFinder$Sezpoz.find(ExtensionFinder.java:734)
    at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:344)
    at hudson.ExtensionList.load(ExtensionList.java:384)
    at hudson.ExtensionList.ensureLoaded(ExtensionList.java:320)
    at hudson.ExtensionList.getComponents(ExtensionList.java:184)
    at jenkins.model.Jenkins$6.onInitMilestoneAttained(Jenkins.java:1202)
    at jenkins.InitReactorRunner$1.onAttained(InitReactorRunner.java:88)
    at org.jvnet.hudson.reactor.ReactorListener$Aggregator.lambda$onAttained$3(ReactorListener.java:108)
    at org.jvnet.hudson.reactor.ReactorListener$Aggregator.run(ReactorListener.java:116)
    at org.jvnet.hudson.reactor.ReactorListener$Aggregator.onAttained(ReactorListener.java:108)
    at org.jvnet.hudson.reactor.Reactor$1.run(Reactor.java:182)
    at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:120)
    at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)

Feb 14, 2024 8:36:32 PM WARNING hudson.ExtensionFinder$GuiceFinder$SezpozModule configure
Failed to load com.microsoftopentechnologies.windowsazurestorage.AzureStorageBlueArtifact$FactoryImpl
java.lang.ClassNotFoundException: io.jenkins.blueocean.rest.factory.BlueArtifactFactory
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
    at jenkins.util.URLClassLoader2.findClass(URLClassLoader2.java:35)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:594)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
Caused: java.lang.NoClassDefFoundError: io/jenkins/blueocean/rest/factory/BlueArtifactFactory
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1022)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:555)
    at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458)
    at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451)
    at jenkins.util.URLClassLoader2.findClass(URLClassLoader2.java:35)
    at jenkins.ClassLoaderReflectionToolkit.loadClass(ClassLoaderReflectionToolkit.java:148)
    at hudson.PluginManager$UberClassLoader.computeValue(PluginManager.java:2347)
    at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
    at hudson.PluginManager$UberClassLoader.findClass(PluginManager.java:2340)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:594)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
    at net.java.sezpoz.IndexItem.element(IndexItem.java:134)
Caused: java.lang.InstantiationException
    at net.java.sezpoz.IndexItem.element(IndexItem.java:146)
    at hudson.ExtensionFinder$GuiceFinder$SezpozModule.configure(ExtensionFinder.java:566)
    at com.google.inject.AbstractModule.configure(AbstractModule.java:64)
    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:426)
    at com.google.inject.spi.Elements.getElements(Elements.java:113)
    at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:160)
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107)
    at com.google.inject.Guice.createInjector(Guice.java:87)
    at com.google.inject.Guice.createInjector(Guice.java:69)
    at hudson.ExtensionFinder$GuiceFinder.<init>(ExtensionFinder.java:282)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at java.base/java.lang.Class.newInstance(Class.java:584)
    at net.java.sezpoz.IndexItem.instance(IndexItem.java:181)
    at hudson.ExtensionFinder$Sezpoz._find(ExtensionFinder.java:748)
    at hudson.ExtensionFinder$Sezpoz.find(ExtensionFinder.java:734)
    at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:344)
    at hudson.ExtensionList.load(ExtensionList.java:384)
    at hudson.ExtensionList.ensureLoaded(ExtensionList.java:320)
    at hudson.ExtensionList.getComponents(ExtensionList.java:184)
    at jenkins.model.Jenkins$6.onInitMilestoneAttained(Jenkins.java:1202)
    at jenkins.InitReactorRunner$1.onAttained(InitReactorRunner.java:88)
    at org.jvnet.hudson.reactor.ReactorListener$Aggregator.lambda$onAttained$3(ReactorListener.java:108)
    at org.jvnet.hudson.reactor.ReactorListener$Aggregator.run(ReactorListener.java:116)
    at org.jvnet.hudson.reactor.ReactorListener$Aggregator.onAttained(ReactorListener.java:108)
    at org.jvnet.hudson.reactor.Reactor$1.run(Reactor.java:182)
    at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:120)
    at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)

Feb 14, 2024 8:36:33 PM WARNING hudson.ExtensionFinder$Sezpoz _find
Failed to load com.microsoftopentechnologies.windowsazurestorage.AzureStorageBlueArtifact$FactoryImpl
java.lang.ClassNotFoundException: io.jenkins.blueocean.rest.factory.BlueArtifactFactory
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
    at jenkins.util.URLClassLoader2.findClass(URLClassLoader2.java:35)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:594)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
Caused: java.lang.NoClassDefFoundError: io/jenkins/blueocean/rest/factory/BlueArtifactFactory
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1022)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:555)
    at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458)
    at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451)
    at jenkins.util.URLClassLoader2.findClass(URLClassLoader2.java:35)
    at jenkins.ClassLoaderReflectionToolkit.loadClass(ClassLoaderReflectionToolkit.java:148)
    at hudson.PluginManager$UberClassLoader.computeValue(PluginManager.java:2347)
    at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
    at hudson.PluginManager$UberClassLoader.findClass(PluginManager.java:2340)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:594)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
    at net.java.sezpoz.IndexItem.element(IndexItem.java:134)
Caused: java.lang.InstantiationException
    at net.java.sezpoz.IndexItem.element(IndexItem.java:146)
    at hudson.ExtensionFinder.getClassFromIndex(ExtensionFinder.java:785)
    at hudson.ExtensionFinder$Sezpoz._find(ExtensionFinder.java:745)
    at hudson.ExtensionFinder$Sezpoz.find(ExtensionFinder.java:734)
    at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:344)
    at hudson.ExtensionList.load(ExtensionList.java:384)
    at hudson.ExtensionList.ensureLoaded(ExtensionList.java:320)
    at hudson.ExtensionList.getComponents(ExtensionList.java:184)
    at jenkins.model.Jenkins$6.onInitMilestoneAttained(Jenkins.java:1202)
    at jenkins.InitReactorRunner$1.onAttained(InitReactorRunner.java:88)
    at org.jvnet.hudson.reactor.ReactorListener$Aggregator.lambda$onAttained$3(ReactorListener.java:108)
    at org.jvnet.hudson.reactor.ReactorListener$Aggregator.run(ReactorListener.java:116)
    at org.jvnet.hudson.reactor.ReactorListener$Aggregator.onAttained(ReactorListener.java:108)
    at org.jvnet.hudson.reactor.Reactor$1.run(Reactor.java:182)
    at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:120)
    at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)