Bulk Promote Plugins to Latest in Custom Update Centers

Article ID:115000434431
2 minute readKnowledge base

Issue

  • I want to promote all plugins to the latest in a managed Update Center

  • I want to promote all plugins to the latest stored version in a managed Update Center

Resolution

The promotion of plugin version in a managed update center is manual. It is therefore cumbersome to promote a large number plugins.

The solution is to use a groovy script that you can execute from Manage Jenkins > Script Console.

Example 1: Bulk promote all stored plugins to the "Latest Version"

The following groovy script promotes all plugins currently stored in a managed updated center to "Latest Version". Whenever a more recent version is pulled, it will be promoted.

Replace the value myUpdateCenter by the full name of your update center.
import com.cloudbees.plugins.updatecenter.PluginData

// Example of an update center "myUpdateCenter" at root level
def updateCenterFullName = "myUpdateCenter"

jenkins.model.Jenkins.instance.getItemByFullName("${updateCenterFullName}").getPluginsData().each { PluginData pluginData ->
    if(pluginData.getVersions() != null && !pluginData.getVersions().isEmpty()) {
        println "Promoting '${pluginData.getName()}' to latest (latestVersion: '${pluginData.getVersions().firstKey()}')"
        pluginData.setPromotedVersion(PluginData.LATEST_VERSION_STRING)
    } else {
        println "(Plugin '${pluginData.getName()}' is not pulled yet. Not promoting)"
    }
}
return

Example 2: Bulk promote all stored plugins to the current latest version

The following groovy script promotes all plugins currently stored in a managed updated center to the latest version in store:

Replace the value myUpdateCenter by the full name of your update center.
import com.cloudbees.plugins.updatecenter.PluginData

// Example of an update center "myUpdateCenter" at root level
def updateCenterFullName = "myUpdateCenter"

jenkins.model.Jenkins.instance.getItemByFullName("${updateCenterFullName}").getPluginsData().each { PluginData pluginData ->
    if(pluginData.getVersions() != null && !pluginData.getVersions().isEmpty()) {
        println "Promoting '${pluginData.getName()}' to version '${pluginData.getVersions().lastKey()}'"
        pluginData.setPromotedVersion("${pluginData.getVersions().lastKey()}")
    } else {
        println "(Plugin '${pluginData.getName()}' is not pulled yet. Not promoting)"
    }
}
This article is part of our Knowledge Base and is provided for guidance-based purposes only. The solutions or workarounds described here are not officially supported by CloudBees and may not be applicable in all environments. Use at your own discretion, and test changes in a safe environment before applying them to production systems.