提交 3edb9fdc 编写于 作者: K kzantow

JENKINS-33296 - plugin dependency issues during install

上级 25ac68ec
...@@ -634,10 +634,8 @@ public class UpdateSite { ...@@ -634,10 +634,8 @@ public class UpdateSite {
this.categories = o.has("labels") ? (String[])o.getJSONArray("labels").toArray(new String[0]) : null; this.categories = o.has("labels") ? (String[])o.getJSONArray("labels").toArray(new String[0]) : null;
for(Object jo : o.getJSONArray("dependencies")) { for(Object jo : o.getJSONArray("dependencies")) {
JSONObject depObj = (JSONObject) jo; JSONObject depObj = (JSONObject) jo;
// Make sure there's a name attribute, that that name isn't maven-plugin - we ignore that one - // Make sure there's a name attribute and that the optional value isn't true.
// and that the optional value isn't true. if (get(depObj,"name")!=null) {
if (get(depObj,"name")!=null
&& !get(depObj,"name").equals("maven-plugin")) {
if (get(depObj, "optional").equals("false")) { if (get(depObj, "optional").equals("false")) {
dependencies.put(get(depObj, "name"), get(depObj, "version")); dependencies.put(get(depObj, "name"), get(depObj, "version"));
} else { } else {
......
...@@ -358,7 +358,7 @@ public class HudsonPrivateSecurityRealm extends AbstractPasswordBasedSecurityRea ...@@ -358,7 +358,7 @@ public class HudsonPrivateSecurityRealm extends AbstractPasswordBasedSecurityRea
if(si.fullname==null || si.fullname.length()==0) if(si.fullname==null || si.fullname.length()==0)
si.fullname = si.username; si.fullname = si.username;
if(si.email==null || !si.email.contains("@")) if(isMailerPluginPresent() && (si.email==null || !si.email.contains("@")))
si.errorMessage = Messages.HudsonPrivateSecurityRealm_CreateAccount_InvalidEmailAddress(); si.errorMessage = Messages.HudsonPrivateSecurityRealm_CreateAccount_InvalidEmailAddress();
if (! User.isIdOrFullnameAllowed(si.username)) { if (! User.isIdOrFullnameAllowed(si.username)) {
...@@ -379,19 +379,31 @@ public class HudsonPrivateSecurityRealm extends AbstractPasswordBasedSecurityRea ...@@ -379,19 +379,31 @@ public class HudsonPrivateSecurityRealm extends AbstractPasswordBasedSecurityRea
// register the user // register the user
User user = createAccount(si.username,si.password1); User user = createAccount(si.username,si.password1);
user.setFullName(si.fullname); user.setFullName(si.fullname);
try { if(isMailerPluginPresent()) {
// legacy hack. mail support has moved out to a separate plugin try {
Class<?> up = Jenkins.getInstance().pluginManager.uberClassLoader.loadClass("hudson.tasks.Mailer$UserProperty"); // legacy hack. mail support has moved out to a separate plugin
Constructor<?> c = up.getDeclaredConstructor(String.class); Class<?> up = Jenkins.getInstance().pluginManager.uberClassLoader.loadClass("hudson.tasks.Mailer$UserProperty");
user.addProperty((UserProperty)c.newInstance(si.email)); Constructor<?> c = up.getDeclaredConstructor(String.class);
} catch (RuntimeException e) { user.addProperty((UserProperty)c.newInstance(si.email));
throw e; } catch (RuntimeException e) {
} catch (Exception e) { throw e;
LOGGER.log(Level.WARNING, "Failed to set the e-mail address",e); } catch (Exception e) {
throw new RuntimeException(e);
}
} }
user.save(); user.save();
return user; return user;
} }
public boolean isMailerPluginPresent() {
try {
// mail support has moved to a separate plugin
return null != Jenkins.getInstance().pluginManager.uberClassLoader.loadClass("hudson.tasks.Mailer$UserProperty");
} catch (ClassNotFoundException e) {
LOGGER.finer("Mailer plugin not present");
}
return false;
}
/** /**
* Creates a new user account by registering a password to the user. * Creates a new user account by registering a password to the user.
......
...@@ -22,7 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN ...@@ -22,7 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE. THE SOFTWARE.
--> -->
<!-- tag file sed by both signup.jelly and addUser.jelly --> <!-- tag file used by both signup.jelly and addUser.jelly -->
<?jelly escape-by-default='true'?> <?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form"> <j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<h1>${title}</h1> <h1>${title}</h1>
...@@ -49,10 +49,12 @@ THE SOFTWARE. ...@@ -49,10 +49,12 @@ THE SOFTWARE.
<td>${%Full name}:</td> <td>${%Full name}:</td>
<td><input type="text" name="fullname" value="${data.fullname}" /></td> <td><input type="text" name="fullname" value="${data.fullname}" /></td>
</tr> </tr>
<j:if test="${it.mailerPluginPresent}">
<tr> <tr>
<td>${%E-mail address}:</td> <td>${%E-mail address}:</td>
<td><input type="text" name="email" value="${data.email}" /></td> <td><input type="text" name="email" value="${data.email}" /></td>
</tr> </tr>
</j:if>
<j:if test="${captcha}"> <j:if test="${captcha}">
<tr> <tr>
<td>${%Enter text as shown}:</td> <td>${%Enter text as shown}:</td>
......
...@@ -19,7 +19,7 @@ exports.recommendedPlugins = [ ...@@ -19,7 +19,7 @@ exports.recommendedPlugins = [
"gradle", "gradle",
"ldap", "ldap",
"mailer", "mailer",
// "matrix-auth", "matrix-auth",
"pam-auth", "pam-auth",
"pipeline-stage-view", "pipeline-stage-view",
"ssh-slaves", "ssh-slaves",
...@@ -38,7 +38,7 @@ exports.availablePlugins = [ ...@@ -38,7 +38,7 @@ exports.availablePlugins = [
{ {
"category":"Organization and Administration", "category":"Organization and Administration",
"plugins": [ "plugins": [
// { "name": "dashboard-view" }, { "name": "dashboard-view" },
{ "name": "build-monitor-plugin" }, { "name": "build-monitor-plugin" },
{ "name": "cloudbees-folder" }, { "name": "cloudbees-folder" },
{ "name": "antisamy-markup-formatter" } { "name": "antisamy-markup-formatter" }
...@@ -49,15 +49,15 @@ exports.availablePlugins = [ ...@@ -49,15 +49,15 @@ exports.availablePlugins = [
"description":"Add general purpose features to your jobs", "description":"Add general purpose features to your jobs",
"plugins": [ "plugins": [
{ "name": "ansicolor" }, { "name": "ansicolor" },
// { "name": "build-name-setter" }, { "name": "build-name-setter" },
{ "name": "build-timeout" }, { "name": "build-timeout" },
{ "name": "config-file-provider" }, { "name": "config-file-provider" },
{ "name": "credentials-binding" }, { "name": "credentials-binding" },
{ "name": "rebuild" }, { "name": "rebuild" },
{ "name": "ssh-agent" }, { "name": "ssh-agent" },
// { "name": "throttle-concurrents" }, { "name": "throttle-concurrents" },
{ "name": "timestamper" } { "name": "timestamper" },
// { "name": "ws-cleanup" } { "name": "ws-cleanup" }
] ]
}, },
{ {
...@@ -72,12 +72,12 @@ exports.availablePlugins = [ ...@@ -72,12 +72,12 @@ exports.availablePlugins = [
{ {
"category":"Build Analysis and Reporting", "category":"Build Analysis and Reporting",
"plugins": [ "plugins": [
// { "name": "checkstyle" }, { "name": "checkstyle" },
// { "name": "cobertura" }, { "name": "cobertura" },
{ "name": "htmlpublisher" }, { "name": "htmlpublisher" },
{ "name": "junit" }, { "name": "junit" },
// { "name": "sonar" }, { "name": "sonar" },
// { "name": "warnings" }, { "name": "warnings" },
{ "name": "xunit" } { "name": "xunit" }
] ]
}, },
...@@ -88,8 +88,8 @@ exports.availablePlugins = [ ...@@ -88,8 +88,8 @@ exports.availablePlugins = [
{ "name": "github-organization-folder" }, { "name": "github-organization-folder" },
{ "name": "pipeline-stage-view" }, { "name": "pipeline-stage-view" },
{ "name": "build-pipeline-plugin" }, { "name": "build-pipeline-plugin" },
// { "name": "conditional-buildstep" }, { "name": "conditional-buildstep" },
// { "name": "jenkins-multijob-plugin" }, { "name": "jenkins-multijob-plugin" },
{ "name": "parameterized-trigger" }, { "name": "parameterized-trigger" },
{ "name": "copyartifact" } { "name": "copyartifact" }
] ]
...@@ -122,10 +122,10 @@ exports.availablePlugins = [ ...@@ -122,10 +122,10 @@ exports.availablePlugins = [
{ {
"category":"User Management and Security", "category":"User Management and Security",
"plugins": [ "plugins": [
// { "name": "matrix-auth" }, { "name": "matrix-auth" },
{ "name": "pam-auth" }, { "name": "pam-auth" },
{ "name": "ldap" }, { "name": "ldap" },
// { "name": "role-strategy" }, { "name": "role-strategy" },
{ "name": "active-directory" } { "name": "active-directory" }
] ]
}, },
......
...@@ -599,7 +599,13 @@ var createPluginSetupWizard = function(appendTarget) { ...@@ -599,7 +599,13 @@ var createPluginSetupWizard = function(appendTarget) {
$('.plugin-list .selected').addClass('match'); $('.plugin-list .selected').addClass('match');
} }
else { else {
var matches = findElementsWithText($pl[0], text.toLowerCase(), function(d) { return d.toLowerCase(); }); var matches = [];
$containers.find('.title,.description').each(function() {
var localMatches = findElementsWithText(this, text.toLowerCase(), function(d) { return d.toLowerCase(); });
if(localMatches.length > 0) {
matches = matches.concat(localMatches);
}
});
$(matches).parents('.plugin').addClass('match'); $(matches).parents('.plugin').addClass('match');
if(lastSearch !== text && scroll) { if(lastSearch !== text && scroll) {
scrollPlugin($pl, matches, text); scrollPlugin($pl, matches, text);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册