Commit Graph
253 Commits
Author SHA1 Message Date
M Ramon Leon 1aa7dbb818 [JENKINS-27177] Minor fixes 2018-10-15 11:56:27 +02:00
M Ramon Leon fe8d0d5e7c [JENKINS-27177] Add strategies to disable plugins. Move process to core
Move the process to core to be reusable, not only for the cli command.
Add optionalDependants list to PluginWrapper to process them easily.

Replace (depreacate) the disable method without checks by this one with
strategies.

Improve messages and tests
2018-10-15 10:06:21 +02:00
Daniel Beck 87c61f527d Merge branch 'security-stable-2.121' into security-master 2018-08-02 02:28:34 +02:00
Daniel Beck 7ac1c48ea6 Merge branch 'security-stable-2.107' into security-stable-2.121 2018-08-02 02:27:38 +02:00
Daniel Beck 909781ca14 Merge branch 'security-stable-2.89' into security-stable-2.107 2018-08-02 02:26:18 +02:00
Daniel Beck e56103203c Merge branch 'security-stable-2.73' into security-stable-2.89 2018-08-02 02:24:55 +02:00
Wadeck Follonier 6867e44695 [SECURITY-1071] 2018-08-02 01:34:28 +02:00
Vincent Latombe 8c1b8b8e14 [JENKINS-50336] Fix loading optional extensions after installing a missing dependency (#3370)
* [JENKINS-50336] Only keep extensions that could be loaded in memory

So that delta computations will re-attempt to load any extension that
previously failed or was skipped after a new plugin is installed.

After installing a plugin, need to refresh extensions in order to pick
up extensions that can be loaded thanks to this new plugin.

* [JENKINS-50336] @OptionalExtension annotated classes were not being picked up after dynamic load of variant

Recompute GuiceExtensionAnnotation list when refreshing extensions
2018-06-08 19:30:11 +02:00
Jesse Glick 7bd6d1e80c [JENKINS-51205] Improve performance of /pluginManager/available service.
(cherry picked from commit 3b61b96119)
2018-05-24 13:32:27 +02:00
Jesse Glick 3b61b96119 [JENKINS-51205] Improve performance of /pluginManager/available service. 2018-05-08 12:04:18 -04:00
Devin Nusbaum 7b6c86dc58 [JENKINS-48899] Do not downgrade detached plugins when upgrading Jenkins (#3229)
* Reproduce JENKINS-48899

* Do not downgrade installed detached plugins

(cherry picked from commit d629897958)
2018-01-31 11:41:51 +01:00
Devin Nusbaum d629897958 [JENKINS-48899] Do not downgrade detached plugins when upgrading Jenkins (#3229)
* Reproduce JENKINS-48899

* Do not downgrade installed detached plugins
2018-01-21 15:33:03 +01:00
Daniel Beck e9ecbb326c Merge pull request #3201 from dwnusbaum/JENKINS-48604
[JENKINS-48604] Do not downgrade plugins that are dependencies of detached plugins when upgrading Jenkins

(cherry picked from commit 1dc2c6d5ff)
2018-01-03 15:01:35 +01:00
Oleg Nenashev 0319362666 Merge pull request #3193 from dwnusbaum/JENKINS-48365
[JENKINS-48365] Install detached plugins when upgrading Jenkins past the version the plugins were detached

(cherry picked from commit 968b6adf00)
2018-01-03 15:01:11 +01:00
Jesse Glick dfc1940eee Merge branch 'master' into whitelist-JENKINS-47736 2017-12-19 14:34:57 -05:00
Devin Nusbaum 6632aef948 Revert "Upgrade installed optional dependencies if necessary"
This reverts commit eb77e5f20d.
2017-12-18 16:35:23 -05:00
Devin Nusbaum eb77e5f20d Upgrade installed optional dependencies if necessary 2017-12-18 13:16:20 -05:00
Devin Nusbaum 01f70d4290 Don't copy the bundled dependency if the current version is already installed 2017-12-18 13:14:24 -05:00
Devin Nusbaum 7fc4815e11 Do not downgrade installed plugins when loading detached plugins 2017-12-18 12:40:20 -05:00
Oleg Nenashev 968b6adf00 Merge pull request #3193 from dwnusbaum/JENKINS-48365
[JENKINS-48365] Install detached plugins when upgrading Jenkins past the version the plugins were detached
2017-12-17 14:26:51 +01:00
Devin Nusbaum 6bf700827a Do not use InstallState in PluginManager when loading detached plugins 2017-12-12 10:38:20 -05:00
Jesse Glick b6088dc456 Deprecating Service in favor of ServiceLoader. 2017-12-11 17:44:55 -05:00
Jesse Glick 5c749cfac3 Support dynamically-loaded plugins in CustomClassFilter.Contributed. 2017-12-04 23:11:31 -05:00
Daniel Beck 671a0ad4d0 Add ExtensionList#lookupFirst convenience method (#3021)
* Add ExtensionList#lookupFirst convenience method

* Fix Javadoc

* Convert to lookupSingleton, which throws unless there's only 1

* Address review comments
2017-10-28 12:58:48 +02:00
Akbashev Alexander 6e75f7349c [FIXED JENKINS-47713] - Do not copy list of plugins on every call (#3109)
[FIXED JENKINS-47713] - Do not copy list of plugins on every call
2017-10-28 12:52:44 +02:00
Jesse Glick d13b1361e1 Adding some interface default method implementations (#2879)
* Adding some interface default method implementations rather than catching AbstractMethodError or providing partial implementation classes.

* Show Javadoc warnings and errors, but not ‘Generating …/core/target/site/apidocs/jenkins/model/lazy/class-use/AbstractLazyLoadRunMap.html...’ and the like.

* Javadoc fixes.

* Review comments from @oleg-nenashev.

* Test fixes.

* Remove the unused import
2017-05-20 12:32:52 +02:00
Jesse Glick 8edf4a349d Update detached plugins to reflect security releases (#2817)
* [SECURITY-372] Update bundled mailer to 1.20.

* Updated to pick up other detached plugins mentioned in https://jenkins.io/security/advisory/2016-04-11/ or https://jenkins.io/security/advisory/2017-03-20/ while we are here.

* I18nTest.test_baseName_plugin caught that the detached version of credentials was too old to serve as a dependency.
Probably there should be some test case verifying that all detached plugins could be loaded at once,
though it would need to do a topological sort in dependency order.

* Must also include display-url-api as a detached plugin as it is a dependency, even though it was never actually detached from core.

* @oleg-nenashev insists on bundling display-url-api 2.0.
2017-05-13 13:01:10 +03:00
Jesse Glick 0993b7099b Do not load detached plugins during tests (#2829)
* Do not load detached plugins during tests.
Also warn about plugins which force us to create classes.jar.

* Porting POM fix from #2795: we must allow snapshots from repo.jenkins-ci.org so as to be able to test upstream component PRs.

* Fixed failures in tests which assumed detached plugins were being loaded.

* jenkins-test-harness 2.20

* Unreproducible test failure on CI, probably due to timing.
2017-05-01 16:44:55 +03:00
Jesse Glick f3304cb5cd Merge branch 'security-stable-2.46' into security-master 2017-04-13 14:15:04 -04:00
Jesse Glick c0c6a9798c Merge branch 'security-stable-2.32' into security-stable-2.46 2017-04-13 14:05:53 -04:00
Jesse Glick 4509ca7fa8 Merge branch 'security-stable-2.19' into security-stable-2.32 2017-04-13 14:03:59 -04:00
Jesse Glick 44c4c1cc0c Merge branch 'security-stable-2.7' into security-stable-2.19 2017-04-13 13:58:44 -04:00
Jesse Glick 06eb14efe6 Merge branch 'security-stable-1.651' into security-stable-2.7 2017-04-13 13:50:58 -04:00
Jesse Glick 189f101dcb Merge branch 'security-stable-1.642' into security-stable-1.651 2017-04-13 13:40:56 -04:00
Jesse Glick a18f7432fe Merge branch 'security-stable-1.625' into security-stable-1.642 2017-04-13 13:37:06 -04:00
Daniel Beck 3e1f02b5c3 [SECURITY-413][SECURITY-414] RequirePOST in plugin manager 2017-04-13 13:32:35 -04:00
Akbashev Alexander 22e729cc0b [JENKINS-42585] - Replace Hashtable by more efficient ConcurrentHashMap (#2769) 2017-03-10 11:52:49 +01:00
Josh Soref 496703d0fe Spelling fixes in changelogs, Javadoc, logs and UI (#2718)
* spelling: abstract

* spelling: about

* spelling: absolute

* spelling: across

* spelling: activity

* spelling: actually

* spelling: addition

* spelling: allocating

* spelling: ambiguous

* spelling: analyzes

* spelling: analysis

* spelling: another

* spelling: appear

* spelling: arbitrary

* spelling: artifact

* spelling: assignment

* spelling: associated

* spelling: augment

* spelling: authentication

* spelling: automatically

* spelling: available

* spelling: availability

* spelling: because

* spelling: background

* spelling: beginning

* spelling: boolean

* spelling: browsers

* spelling: building

* spelling: calculation

* spelling: channel

* spelling: column

* spelling: concatenation

* spelling: connect

* spelling: contribute

* spelling: convert

* spelling: copied

* spelling: couldn't

* spelling: scrambled

* spelling: creates-a

* spelling: curr-entry

* spelling: customize

* spelling: diagnostic

* spelling: contain

* spelling: default

* spelling: delimiter

* spelling: descriptor

* spelling: disambiguates

* spelling: different

* spelling: diligently

* spelling: disabled

* spelling: discovered

* spelling: display

* spelling: doesn't

* spelling: dollar

* spelling: downstream

* spelling: dynamically

* spelling: preemptively

* spelling: encrypt

* spelling: erroneous

* spelling: examine

* spelling: existence

* spelling: value

* spelling: february

* spelling: handling

* spelling: hostname

* spelling: convenient

* spelling: identify

* spelling: implementation

* spelling: incorrect

* spelling: individual

* spelling: initialization

* spelling: initialized

* spelling: inputstream

* spelling: instantiated

* spelling: instantiation

* spelling: intended

* spelling: interpreted

* spelling: interrupted

* spelling: invocations

* spelling: kern

* spelling: localization

* spelling: logger

* spelling: malfunctioning

* spelling: methods

* spelling: monitor

* spelling: mutator

* spelling: multiple

* spelling: object

* spelling: configured

* spelling: optionally

* spelling: option

* spelling: overridden

* spelling: parameterized

* spelling: parent

* spelling: permissions

* spelling: plugin

* spelling: potentially

* spelling: preferable

* spelling: problems like

* spelling: programmatically

* spelling: property

* spelling: reallocate

* spelling: recommended

* spelling: redirected

* spelling: registered

* spelling: reliable

* spelling: remember

* spelling: recurrence

* spelling: repeatable

* spelling: repeated

* spelling: resource

* spelling: retrieve

* spelling: returned

* spelling: revision

* spelling: sandwich

* spelling: separator

* spelling: serialization

* spelling: settings

* spelling: shadow

* spelling: should

* spelling: someone

* spelling: source

* spelling: specified

* spelling: style

* spelling: subversion

* spelling: sufficient

* spelling: supplementary

* spelling: suppressing

* spelling: synchronization

* spelling: synchronized

* spelling: this

* spelling: transitioning

* spelling: termination

* spelling: trying

* spelling: truncatable

* spelling: unknown

* spelling: undeployed

* spelling: unnecessary

* spelling: unparseable

* spelling: update

* spelling: upper

* spelling: verify

* spelling: visible

* spelling: warning

* spelling: we're

* spelling: whitespace

* spelling: wide

* spelling: with

* spelling: workspace

* spelling: yielding

* spelling: to

* spelling: by

* spelling: the

* spelling: hours
2017-02-12 13:38:30 +03:00
Jesse Glick 6fb9e91b63 [JENKINS-41684] Ensure that PluginManager.dynamicLoad runs as SYSTEM (#2732)
* [FIXED JENKINS-41684] Ensure that PluginManager.dynamicLoad runs as SYSTEM.
Test plugin source:
package test;
import hudson.Plugin;
import jenkins.model.Jenkins;
public class ThePlugin extends Plugin {
    @Override
    public void postInitialize() throws Exception {
        Jenkins.getInstance().checkPermission(Jenkins.ADMINISTER);
    }
}

* @daniel-beck wants this all reindented.
2017-02-12 13:36:48 +03:00
Oleg Nenashev 5b370be087 Clarify PluginManager#getPlugin() and Jenkins#getPlugin() methods 2017-01-16 12:55:05 +01:00
Oliver Gondža b52a57cc0b Refactor PluginManager advanced page handling a bit 2017-01-04 19:01:44 +01:00
Daniel Beck 0fc375e9e4 Add configuration for disabling admin monitors
Add display name for all admin monitors in core.
2016-09-16 18:06:16 -07:00
Oleg Nenashev 37edc1a3b0 [FIXED JENKINS-37332] - Prevent File descriptor leaks when reading manifests from JARs (#2516)
* [JENKINS-37332] - Improve diagnostics of non-closed streams during reading of the manifests in PluginManager

* [JENKINS-37332] - Leakless processing of JarUrlConnection during Manifest parsing

* [JENKINS-37332] - Also implement leak-safe method for retrieving file modification date

* [JENKINS-37332] - Add spotcheck methods for manifest file access + Javadoc

* [JENKINS-37332] - Also test multi-line and empty attributes in the test

(cherry picked from commit 96c97860b0)
2016-09-06 08:31:48 +02:00
Oleg Nenashev 96c97860b0 [FIXED JENKINS-37332] - Prevent File descriptor leaks when reading manifests from JARs (#2516)
* [JENKINS-37332] - Improve diagnostics of non-closed streams during reading of the manifests in PluginManager

* [JENKINS-37332] - Leakless processing of JarUrlConnection during Manifest parsing

* [JENKINS-37332] - Also implement leak-safe method for retrieving file modification date

* [JENKINS-37332] - Add spotcheck methods for manifest file access + Javadoc

* [JENKINS-37332] - Also test multi-line and empty attributes in the test
2016-08-21 00:00:41 +02:00
Stephen Connolly 28ee03724d [JENKINS-37041] Address Code review comments
(cherry picked from commit d92fd4cc63)
2016-08-17 20:00:05 +02:00
Stephen Connolly 6ea7883fed [FIXED JENKINS-37041] Ensure that detached plugins are always at least their minimum version
(cherry picked from commit 2a450e5ac2)
2016-08-17 20:00:05 +02:00
Oleg Nenashev 92a7385f1e Merge commit 'd8cae8221e5b5ef3b5276fb53879547169a02504' into findbugs/JENKINS-36717-cleanup 2016-08-01 18:30:04 +03:00
Vincent Latombe 8e3c9dadc1 [JENKINS-21486] Mention both long name, short name and version in console 2016-07-29 14:33:56 +02:00
Vincent Latombe d8f3bfc8ed [JENKINS-21486] Cycle monitor should display plugin long name and
version
2016-07-29 14:33:56 +02:00
Vincent Latombe 43ddbdfc1c [JENKINS-21486] Fix plugin dependencies resolution
* Check that dependencies are enabled. A disabled optional dependency
  will not prevent a plugin from loading.
* Check versions of dependencies declared by a plugin before loading it.
  If any dependency (even optional) is older than what is required,
  then the plugin isn't loaded.

This should prevent use cases where a plugin is loaded but one of its
dependencies is too old so that :
* its @Extension annotated classes cannot be loaded, causing the full
  Jenkins to blow up with crapload of exceptions which are tedious to
  investigate to understand the root cause.
* NoSuchMethodError and the likes at runtime even though boot has
  completed.

Version check (for setups where version list is manually crafted but yet
works) can be disabled by starting Jenkins with

-Dhudson.PluginWrapper.dependenciesVersionCheck.enabled=true

Minor fixes done while implementing this change :
* Fix version parsing in PluginWrapper.Dependency
* Dynamic plugin load didn't check for disabled flag
2016-07-29 14:31:41 +02:00