在Docker中构建Jenkins时,插件无法安装。

11

我有一个Dockerfile用于自定义Jenkins主节点,内容如下:

FROM jenkins
MAINTAINER me

USER root

RUN echo 2.0 > /usr/share/jenkins/ref/jenkins.install.UpgradeWizard.state

RUN apt-get update \
      && apt-get install -y sudo \
      && apt-get install -y vim \
      && rm -rf /var/lib/apt/lists/*
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers

USER jenkins

# COPY plugins.txt /usr/share/jenkins/plugins.txt
# RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt
ENV JAVA_OPTS="-Xmx8192m"
ENV JENKINS_OPTS="--handlerCountStartup=100 --handlerCountMax=300"


RUN /usr/local/bin/install-plugins.sh git:2.6.0

一切都可以正常运行,直到出现RUN /usr/local/bin/install-plugins.sh git:2.6.0这一行。我在安装插件时遇到了错误:

Creating initial locks...

Analyzing war...

Downloading plugins...
Downloading plugin: git from https://updates.jenkins.io/download/plugins/git/2.6.0/git.hpi
Downloading plugin: git-plugin from https://updates.jenkins.io/download/plugins/git-plugin/2.6.0/git-plugin.hpi
Failed to download plugin: git or git-plugin

WAR bundled plugins:


Installed plugins:
*:

Some plugins failed to download!
Not downloaded: git
The command '/bin/sh -c /usr/local/bin/install-plugins.sh git:2.6.0' returned a non-zero code: 1

我是做错了什么,还是Jenkins/Docker有问题?

8个回答

24

1
截至2020年4月28日,docker pull jenkins已被弃用,无法使用。我希望Docker官方网站能够删除这个命令,为像我这样的开发人员节省时间。 - Ariful Haque
谢谢,你的建议让我使用最新的Jenkins版本来处理Docker问题非常有帮助。 - Honsa Stunna

2
您的Dockerfile对我来说可行,安装了所有插件并成功构建了镜像:
Analyzing war... 
Downloading plugins...
Downloading plugin: git from https://updates.jenkins.io/download/plugins/git/2.6.0/git.hpi
 > git depends on workflow-scm-step:1.14.2,mailer:1.17,matrix-project:1.7.1,ssh-credentials:1.12,parameterized-trigger:2.4;resolution:=optional,scm-api:1.2,token-macro:1.11;resolution:=optional,promoted-builds:2.27;resolution:=optional,credentials:2.1.4,git-client:1.21.0

Downloading plugin: workflow-scm-step from https://updates.jenkins.io/download/plugins/workflow-scm-step/latest/workflow-scm-step.hpi
...
Removing intermediate container 4f895c203944
Successfully built 31d58d1f586f  

如果您的镜像缓存中有任何一层存在问题,可以尝试使用docker build --no-cache命令进行构建,或者在Docker Hub上设置一个自动化构建并在Docker的服务器上进行构建。


好的,它在Docker Hub上工作了,谢谢。我没想到试试这个。可能是我的本地环境有问题。我正在使用Mac上的Docker。 - rainkinz

1

我记得我自己使用那个脚本安装时遇到了问题。相反,我使用了以下方法:

RUN install-plugins.sh  \
  disable-failed-job \
  disk-usage \
  greenballs \
  ...

希望这不会对此造成影响,但我将插件安装在Dockerfile的根部,然后切换回以USER jenkins身份运行命令。

谢谢,但不幸的是那似乎不是它 :-( - rainkinz

0

我在 OS X 上遇到了同样的问题。

在我的情况下,问题是由于错误的 DNS 配置(通过 DHCP 获取)引起的。当我将 DNS 更改为 Google 的 DNS 8.8.8.8 时,一切都完美地解决了。

我遇到了如下错误消息: 无法解析主机名“ftp.icm.edu.pl”。也许您需要配置 HTTP 代理


0

在某些情况下,用于下载插件的curl超时时间不足。现在这个问题已经在image 2.19.1中得到了修复,并且使用CURL_CONNECTION_TIMEOUT和其他选项进行配置。


0

我遇到了非常类似的问题,我的解决方案是在插件安装之前在 Docker 文件中指定代理。以下是我的 Dockerfile 片段:

FROM jenkins:latest
MAINTAINER Jose Estrada
USER root
ENV JAVA_OPTS="--handlerCountStartup=100 --handlerCountMax=300 --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war -Dhttps.proxyHost=proxy-wsa.esl.cisco.com -Dhttps.proxyPort=80"
ENV http_proxy <PROXY Settings>
ENV https_proxy <PROXY Settings>
RUN /usr/local/bin/install-plugins.sh cisco-spark-notifier:latest

jenkins:latest已经被弃用,请使用jenkins/jenkins:latest - Cameron Hudson

0

Dockerfile

FROM jenkins/jenkins:latest

ENV CURL_OPTIONS -sSfLk
ENV JENKINS_OPTS --httpPort=-1

2
如果您分享一些上下文信息的话,那就太好了。添加“ENV JENKINS_OPTS --httpPort=-1”会使Web界面完全无法使用。也许您有包含此选项的原因,但是没有上下文信息,这条命令导致了Web界面的崩溃。 - Dave

-3
这可能是一个DNS问题。请重新启动Docker守护进程并尝试。(sudo service docker restart)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接