How to install jenkins plugins from command line?
Since Sept 2019, you can also use the Plugin Installation Manager Tool. It takes a yaml file listing the plugins, and downloads plugins to a folder of your choice. There is no need to have a running Jenkins instance. You can specify the plugin versions in the yaml file, but be aware of JENKINS-60205.
Get the plugin manager:
version=1.0.1
curl \
-L \
-X GET "https://github.com/jenkinsci/plugin-installation-manager-tool/releases/download/plugin-management-parent-pom-$version/jenkins-plugin-manager-$version.jar" \
-o jenkins-plugin-manager-$version.jar
Download the plugins:
java -jar jenkins-plugin-manager-$version.jar \
--plugin-download-directory pluginsFolder \
--plugin-file plugins.yml \
--war jenkins.war
The plugins are in the pluginsFolder
.
As per the Jenkins command line interface documentation, you need to use the client JAR file (not the server WAR file you're using), which you can obtain directly from Jenkins, e.g. via the links on http://localhost:8080/cli
Then you can run the command using this JAR:
java -jar jenkins-cli.jar -s http://127.0.0.1:8080/ install-plugin <name>
This will download install the plugin you want, along with any of its dependencies.
import jenkins.model.*
import java.util.logging.Logger
def logger = Logger.getLogger("")
def installed = false
def initialized = false
def pluginParameter="gitlab-plugin hipchat swarm"
def plugins =pluginParameter.split()
logger.info("" + plugins)
def instance =Jenkins.getInstance()
def pm = instance.getPluginManager()
def uc =instance.getUpdateCenter()
uc.updateAllSites()
plugins.each { logger.info("Checking " + it) if
(!pm.getPlugin(it)) {
logger.info("Looking UpdateCenter for " + it)
if (!initialized) {
uc.updateAllSites()
initialized = true
}
def plugin = uc.getPlugin(it)
if (plugin) {
logger.info("Installing " + it)
plugin.deploy()
installed = true
} } }
if (installed)
{
logger.info("Plugins installed, initializing a restart!")
instance.save()
instance.doSafeRestart()
}