This plugin allows to filter features available on a Jenkins instance by disabling some Extensions/Descriptors.
Jenkins has a large set of plugin to contribute extensions. Sometime such plugin comes with some extra feature you don't want to use / have issue with your particular installation, or you consider too "advanced" for users to let them configure.
This plugin let you filter Extension and Descriptors enabled on your instance. It can be used for example as a workaround for JENKINS-15440 to disable an extension that has bad performance impact on your Jenkins master. It can also be used to hide global configuration for some feature that you don't want users, even with the "administer" privilege, to edit.
Plugin let you define Extensions to be excluded from Jenkins. You just have to configure the extension class to be excluded. Please note this won't prevent the extension to load, just won't contribute Jenkins at runtime. For JENKINS-15440 you would exclude
hudson.scm.SubversionMailAddressResolverImpl so that this extension is disabled on your instance and won't impact performances.
Descriptors can be excluded with some fine-grained contextual filtering from the UI. A context class can be set and will define when descriptor should be excluded and then won't render the related web UI. Let's say for example you like Maven job type so much that you want to deprecate Maven build step for freestyle jobs (hey, this is just a sample). Then exclude
hudson.tasks.Maven$DescriptorImpl with context
hudson.model.FreeStyleProject. This will filter Maven from availabel build step on Freestyle projects.
Let's say you don't want users to manage Maven installations because there is no reason to use anything but latest maven 3.0.4, isn't it ? Then exclude
hudson.tasks.Maven$MavenInstallation$DescriptorImpl with context
jenkins.model.Jenkins. This will disable the global configuration UI for MavenInstallations.
- initial implementation