Is there any option to install jenkins plugins from command line ?
I found a command for this after a bit google search :
java -jar /var/lib/jenkins/jenkins.war -s http://127.0.0.1:8080/ install-plugin ${Plugin_Name}
But it's not working.
Is there any option to install jenkins plugins from command line ?
I found a command for this after a bit google search :
java -jar /var/lib/jenkins/jenkins.war -s http://127.0.0.1:8080/ install-plugin ${Plugin_Name}
But it's not working.
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()
}
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
.
You will need jenkins-cli.jar file. It can be downloaded from ${JENKINSURL}/jnlpJars/jenkins-cli.jar
wget http://localhost:8080/jnlpJars/jenkins-cli.jar
To install a plugin :
java -jar jenkins-cli.jar -auth ${USER}:${PASSWORD} -s ${JENKINSURL} install-plugin ${PLUGIN_NAME}
If you dont provide auth you will get error:
ERROR: anonymous is missing the Overall/Read permission
My command:
jenkins-plugin-cli --plugins "snyk-security-scanner:2.12.1 file-operations:1.11 branch-api:2.5.6 pipeline-build-step:2.13 workflow-support:3.8 aws-credentials:1.28 subversion:2.13.1 github-branch-source:2.7.1 publish-over-ftp:1.15 cloudbees-folder:6.740.ve4f4ffa_dea_54"
And the one I used in dockerfile
FROM jenkins/jenkins:lts
USER root
# Install custom plugins
RUN jenkins-plugin-cli --plugins "snyk-security-scanner:2.12.1 file-operations:1.11 branch-api:2.5.6 pipeline-build-step:2.13 workflow-support:3.8 aws-credentials:1.28 subversion:2.13.1 github-branch-source:2.7.1 publish-over-ftp:1.15 cloudbees-folder:6.740.ve4f4ffa_dea_54"
# Set environment variables
# ENV <ENV_VARIABLE_1> <VALUE>
# ENV <ENV_VARIABLE_2> <VALUE>
USER jenkins
If you don't find some straight forward command for installing plugins. Please take a look at this link: How to install a plugin in Jenkins manually?
But it needs to download the plugin first(*.hpi file) and run it manually.
This is my soluction!
version: '3'
services:
jenkins:
image: jenkins/jenkins:latest
restart: always
ports:
- "8080:8080"
- "50000:50000"
environment:
JAVA_OPTS: "-Djenkins.install.runSetupWizard=false"
volumes:
- ${PWD}/plugins.txt:/usr/share/jenkins/ref/plugins.txt
command: >
bash -c "jenkins-plugin-cli -f /usr/share/jenkins/ref/plugins.txt
&& ./usr/local/bin/jenkins.sh"
Contents of plugins.txt:
ant:latest
antisamy-markup-formatter:latest
build-timeout:latest
cloudbees-folder:latest
configuration-as-code:latest
credentials-binding:latest
email-ext:latest
git:latest
github-branch-source:latest
gradle:latest
ldap:latest
mailer:latest
matrix-auth:latest
pam-auth:latest
pipeline-github-lib:latest
pipeline-stage-view:latest
ssh-slaves:latest
timestamper:latest
workflow-aggregator:latest
ws-cleanup:latest
job-dsl:latest
blueocean:latest
authorize-project:latest