Skip to content

Commit

Permalink
JENKINS-33296 - plugin dependency issues during install
Browse files Browse the repository at this point in the history
  • Loading branch information
kzantow committed Mar 14, 2016
1 parent 25ac68e commit 3edb9fd
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 30 deletions.
6 changes: 2 additions & 4 deletions core/src/main/java/hudson/model/UpdateSite.java
Expand Up @@ -634,10 +634,8 @@ public Plugin(String sourceId, JSONObject o) {
this.categories = o.has("labels") ? (String[])o.getJSONArray("labels").toArray(new String[0]) : null;
for(Object jo : o.getJSONArray("dependencies")) {
JSONObject depObj = (JSONObject) jo;
// Make sure there's a name attribute, that that name isn't maven-plugin - we ignore that one -
// and that the optional value isn't true.
if (get(depObj,"name")!=null
&& !get(depObj,"name").equals("maven-plugin")) {
// Make sure there's a name attribute and that the optional value isn't true.
if (get(depObj,"name")!=null) {
if (get(depObj, "optional").equals("false")) {
dependencies.put(get(depObj, "name"), get(depObj, "version"));
} else {
Expand Down
32 changes: 22 additions & 10 deletions core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java
Expand Up @@ -358,7 +358,7 @@ private User createAccount(StaplerRequest req, StaplerResponse rsp, boolean self
if(si.fullname==null || si.fullname.length()==0)
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();

if (! User.isIdOrFullnameAllowed(si.username)) {
Expand All @@ -379,19 +379,31 @@ private User createAccount(StaplerRequest req, StaplerResponse rsp, boolean self
// register the user
User user = createAccount(si.username,si.password1);
user.setFullName(si.fullname);
try {
// legacy hack. mail support has moved out to a separate plugin
Class<?> up = Jenkins.getInstance().pluginManager.uberClassLoader.loadClass("hudson.tasks.Mailer$UserProperty");
Constructor<?> c = up.getDeclaredConstructor(String.class);
user.addProperty((UserProperty)c.newInstance(si.email));
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
LOGGER.log(Level.WARNING, "Failed to set the e-mail address",e);
if(isMailerPluginPresent()) {
try {
// legacy hack. mail support has moved out to a separate plugin
Class<?> up = Jenkins.getInstance().pluginManager.uberClassLoader.loadClass("hudson.tasks.Mailer$UserProperty");
Constructor<?> c = up.getDeclaredConstructor(String.class);
user.addProperty((UserProperty)c.newInstance(si.email));
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
user.save();
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.
Expand Down
Expand Up @@ -22,7 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
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'?>
<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>
Expand All @@ -49,10 +49,12 @@ THE SOFTWARE.
<td>${%Full name}:</td>
<td><input type="text" name="fullname" value="${data.fullname}" /></td>
</tr>
<j:if test="${it.mailerPluginPresent}">
<tr>
<td>${%E-mail address}:</td>
<td><input type="text" name="email" value="${data.email}" /></td>
</tr>
</j:if>
<j:if test="${captcha}">
<tr>
<td>${%Enter text as shown}:</td>
Expand Down
28 changes: 14 additions & 14 deletions war/src/main/js/api/plugins.js
Expand Up @@ -19,7 +19,7 @@ exports.recommendedPlugins = [
"gradle",
"ldap",
"mailer",
// "matrix-auth",
"matrix-auth",
"pam-auth",
"pipeline-stage-view",
"ssh-slaves",
Expand All @@ -38,7 +38,7 @@ exports.availablePlugins = [
{
"category":"Organization and Administration",
"plugins": [
// { "name": "dashboard-view" },
{ "name": "dashboard-view" },
{ "name": "build-monitor-plugin" },
{ "name": "cloudbees-folder" },
{ "name": "antisamy-markup-formatter" }
Expand All @@ -49,15 +49,15 @@ exports.availablePlugins = [
"description":"Add general purpose features to your jobs",
"plugins": [
{ "name": "ansicolor" },
// { "name": "build-name-setter" },
{ "name": "build-name-setter" },
{ "name": "build-timeout" },
{ "name": "config-file-provider" },
{ "name": "credentials-binding" },
{ "name": "rebuild" },
{ "name": "ssh-agent" },
// { "name": "throttle-concurrents" },
{ "name": "timestamper" }
// { "name": "ws-cleanup" }
{ "name": "throttle-concurrents" },
{ "name": "timestamper" },
{ "name": "ws-cleanup" }
]
},
{
Expand All @@ -72,12 +72,12 @@ exports.availablePlugins = [
{
"category":"Build Analysis and Reporting",
"plugins": [
// { "name": "checkstyle" },
// { "name": "cobertura" },
{ "name": "checkstyle" },
{ "name": "cobertura" },
{ "name": "htmlpublisher" },
{ "name": "junit" },
// { "name": "sonar" },
// { "name": "warnings" },
{ "name": "sonar" },
{ "name": "warnings" },
{ "name": "xunit" }
]
},
Expand All @@ -88,8 +88,8 @@ exports.availablePlugins = [
{ "name": "github-organization-folder" },
{ "name": "pipeline-stage-view" },
{ "name": "build-pipeline-plugin" },
// { "name": "conditional-buildstep" },
// { "name": "jenkins-multijob-plugin" },
{ "name": "conditional-buildstep" },
{ "name": "jenkins-multijob-plugin" },
{ "name": "parameterized-trigger" },
{ "name": "copyartifact" }
]
Expand Down Expand Up @@ -122,10 +122,10 @@ exports.availablePlugins = [
{
"category":"User Management and Security",
"plugins": [
// { "name": "matrix-auth" },
{ "name": "matrix-auth" },
{ "name": "pam-auth" },
{ "name": "ldap" },
// { "name": "role-strategy" },
{ "name": "role-strategy" },
{ "name": "active-directory" }
]
},
Expand Down
8 changes: 7 additions & 1 deletion war/src/main/js/pluginSetupWizardGui.js
Expand Up @@ -599,7 +599,13 @@ var createPluginSetupWizard = function(appendTarget) {
$('.plugin-list .selected').addClass('match');
}
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');
if(lastSearch !== text && scroll) {
scrollPlugin($pl, matches, text);
Expand Down

0 comments on commit 3edb9fd

Please sign in to comment.