0

Im writing the script which downloads jenkins war, skip setup, then install plugins for it. i downloaded batch-install-jenkins-plugins.sh using some link, and also created the plugins.txt file as mentioned. when i run the script using docker it is giving me error that you must specify plugins.txt. Here is my script:

FROM ubuntu:14.04
# Install Java.
RUN \
  echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
  apt-get update && \
  apt-get upgrade -y && \
  apt-get install -y  software-properties-common && \
  add-apt-repository ppa:webupd8team/java -y && \
  apt-get update && \
  apt-get install -y oracle-java8-installer && \
  rm -rf /var/lib/apt/lists/* && \
  rm -rf /var/cache/oracle-jdk8-installer

# Define commonly used JAVA_HOME variable
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle

# get maven 3.2.2 and verify its checksum
RUN wget --no-verbose -O /tmp/apache-maven-3.2.2.tar.gz http://archive.apache.org/dist/maven/maven-3/3.2.2/binaries/apache-maven-3.2.2-bin.tar.gz; \
echo "87e5cc81bc4ab9b83986b3e77e6b3095 /tmp/apache-maven-3.2.2.tar.gz" | md5sum -c   
ARG BASE_URL=https://apache.osuosl.org/maven/ven-3/${MAVEN_VERSION}/binaries

# install maven
RUN tar xzf /tmp/apache-maven-3.2.2.tar.gz -C /opt/; \
  ln -s /opt/apache-maven-3.2.2 /opt/maven; \
  ln -s /opt/maven/bin/mvn /usr/local/bin; \
  rm -f /tmp/apache-maven-3.2.2.tar.gz
ENV MAVEN_HOME /opt/maven


# Install dependencies
RUN apt-get -y update  && \
    apt-get -yqq --no-install-recommends install bash git bzip2 curl unzip && \
    apt-get update

# copy jenkins war file to the container
#ADD http://mirrors.jenkins.io/war-stable/2.107.1/jenkins.war /opt/jenkins.war
COPY jenkins.war /opt/jenkins.war
ENV JENKINS_HOME /jenkins

# configure the container to run jenkins, mapping container port 8080 to that host port
RUN mkdir /jenkins/
COPY proxy.xml /jenkins/proxy.xml
COPY config_updated.xml opt/config_updated.xml

COPY settings.xml /usr/share/maven/conf/settings.xml
ENTRYPOINT ["java","-jar","/opt/jenkins.war"]
ENV JAVA_OPTS="-Djenkins.install.runSetupWizard=false"

#Install plugins
RUN cd /usr/local/bin && curl -L https://raw.githubusercontent.com/hgomez/devops-incubator/master/forge-tricks/batch-install-jenkins-plugins.sh -o batch-install-jenkins-plugins.sh
RUN chmod +x /usr/local/bin/batch-install-jenkins-plugins.sh 
COPY /plugins.txt /usr/share/jenkins/ref/plugins.txt
RUN xargs /usr/local/bin/batch-install-jenkins-plugins.sh < /usr/share/jenkins/ref/plugins.txt
RUN echo 2.0 > /usr/share/jenkins/ref/jenkins.install.UpgradeWizard.state

when i build the image of above script it is giving this error:

Step 21/23 : RUN xargs /usr/local/bin/batch-install-jenkins-plugins.sh < /usr/share/jenkins/ref/plugins.txt ---> Running in 72d198deef6b You must provide plugin file usage: batch-install-jenkins-plugins.sh options

Install or update Jenkins Plugins.

OPTIONS: -p --plugins file containing plugins list -x --xplugins file containing excluded plugins list -d --plugindir directory where to deploy plugins (.jpi)

Examples:

Run:batch-install-jenkins-plugins.sh --plugins okplugins --excludedplugins nokplugins --plugindir /var/lib/myjenkins/plugins The command '/bin/sh -c xargs /usr/local/bin/batch-install-jenkins-plugins.sh < /usr/share/jenkins/ref/plugins.txt' returned a non-zero code: 123

FOR checking if i comment that line and changed ENTRYPOINT to bash and checked, and found plugins.txt is present in that location only BASH OUTPUT

I need to take arguments from plugins.txt and install those plugins to jenkins, when i launch it in browser.

i refered to the link

Thank you in advance, sorry if there wrong english.

0

xargs works by creating a new command line an running it. The way it creates the command line is by starting the new command line it is creating with the arguments given as the xargs command line and then appending the biggest chunk of stdin that it can (remember that if stdin is bigger than the maximum command line length will make it impossible to simply use all of stdin, it must be chopped up to fit inside of valid maximum command line length.)

The script, batch-install-jenkins-plugins.sh, (I got mine from here, you should have provided the link to where you got yours from because there could be many variants of that script) does nothing to provide the -p option so it dies with missing -p pluginfile.txt.

RUN xargs /usr/local/bin/batch-install-jenkins-plugins.sh < /usr/share/jenkins/ref/plugins.txt

Are you sure you should even be using xargs here at all? I think this is what you are really trying to do:

RUN /usr/local/bin/batch-install-jenkins-plugins.sh -p /usr/share/jenkins/ref/plugins.txt

But then you will probably crash because of missing -z plugindir option which you should also add to your Dockerfile.

  • and about batch-install-jenkins-plugin.sh, i got it from the same link u have used – Hithesh Veer May 24 '18 at 11:09
  • i referd to the eg which was in the error i.e batch-install-jenkins-plugins.sh --plugins okplugins --excludedplugins nokplugins --plugindir /var/lib/myjenkins/plugins im not getting of what path should i mention in --jenkindir , and what shold be the content of it – Hithesh Veer May 24 '18 at 11:18
0

Go to below link, which I found similar what you have asked

You can refer this

0

I am not exactly sure what is wrong with your build, but your Jenkins Dockerfile looks unnecessarily complicated. Here is a simple Dockerfile that does what you want:

FROM jenkins/jenkins:lts
COPY plugins.txt /usr/share/jenkins/ref/plugins.txt
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt

That installs the plugins defined in plugins.txt.

This should be enough to install your plugins automatically. However if you want to configure a complete Jenkins instance from a configuration file, check out this Jenkins plugin that allows Jenkins to be completely configured from YAML.

  • do we have to write the install-plugins.sh or it comes with jenkins – Tara Prasad Gurung Jun 10 at 11:38
  • It comes with Jenkins, but you will have to write the 'plugins.txt' file that lists the plugins you want to be installed. – tdensmore Jun 11 at 12:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.