jenkinsci/jenkins · warning · Failure

No such update center: {0}

Error message

No such update center: {0}

What it means

Failure thrown by getPlugin(pluginName, siteName) when the specified update site ID does not match any UpdateSite registered in the UpdateCenter. The siteName is extracted from the plugin identifier's dot-split.

Source

Thrown at core/src/main/java/hudson/PluginManager.java:1811

                    break;
                }
                updateCenter.persistInstallStatus();
                if (!failures) {
                    try (ACLContext acl = ACL.as2(currentAuth)) {
                        InstallUtil.proceedToNextStateFrom(InstallState.INITIAL_PLUGINS_INSTALLING);
                    }
                }
            }).start();
        }

        return installJobs;
    }

    @CheckForNull
    private UpdateSite.Plugin getPlugin(String pluginName, String siteName) {
        UpdateSite updateSite = Jenkins.get().getUpdateCenter().getById(siteName);
        if (updateSite == null) {
            throw new Failure("No such update center: " + siteName);
        }
        return updateSite.getPlugin(pluginName);
    }

    /**
     * Bare-minimum configuration mechanism to change the update center.
     */
    @RequirePOST
    public HttpResponse doSiteConfigure(@QueryParameter String site) throws IOException {
        Jenkins hudson = Jenkins.get();
        hudson.checkPermission(Jenkins.ADMINISTER);
        UpdateCenter uc = hudson.getUpdateCenter();
        PersistedList<UpdateSite> sites = uc.getSites();
        sites.removeIf(s -> s.getId().equals(UpdateCenter.ID_DEFAULT));
        sites.add(new UpdateSite(UpdateCenter.ID_DEFAULT, site));

        return new HttpRedirect("advanced");
    }

View on GitHub (pinned to 2e228ff40b)

Solutions

  1. List configured update sites: Jenkins.get().getUpdateCenter().getSiteNames() and verify the ID.
  2. Add the missing update site in Manage Jenkins > Plugins > Advanced > Update Site.
  3. Correct the plugin identifier to use a valid update site name.

Example fix

// before — references unknown site
// 'plugin.bad-site-id'

// after — use a registered site
List<String> sites = jenkins.getUpdateCenter().getSiteNames();
// verify 'default' exists
UpdateSite.Plugin p = jenkins.getUpdateCenter()
    .getById("default").getPlugin("plugin");
Defensive patterns

Strategy: validation

Validate before calling

List<String> siteNames = jenkins.getUpdateCenter().getSiteNames();
if (!siteNames.contains(siteName)) {
    throw new IllegalArgumentException("No such update center: " + siteName + ". Available: " + siteNames);
}

Try / catch

try {
    // plugin install with site reference
} catch (Failure f) {
    if (f.getMessage().startsWith("No such update center")) {
        listener.error("Update site not configured: " + f.getMessage());
        listener.error("Available sites: " + jenkins.getUpdateCenter().getSiteNames());
    } else {
        throw f;
    }
}

Prevention

When it happens

Trigger: A plugin install request references an update site by ID that has not been configured or is misspelled, e.g., 'plugin@nonexistent-site' or a dot-split producing an unknown site name.

Common situations: Update site was removed or renamed, the site ID is mistyped, or a custom update center was not properly registered via Manage Jenkins > Plugins > Advanced.

Related errors


AI-assisted analysis of jenkinsci/jenkins@2e228ff40b (2026-08-14). Data as JSON: /api/errors/413811e9e24d7f04. Report an issue: GitHub.