【问题标题】:When building Jenkins in Docker plugins fail to install在 Docker 插件中构建 Jenkins 时无法安装
【发布时间】:2016-09-30 02:55:56
【问题描述】:

我有一个自定义 Jenkins master 的 Dockerfile,如下所示:

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 有问题?

【问题讨论】:

    标签: jenkins docker jenkins-plugins


    【解决方案1】:

    对于那些从 dockerHub 拉取 jenkins 镜像的人,不要拉:

    docker pull jenkins
    

    docker pull jenkinsci/jenkins
    

    宁可使用以下方式拉取最新版本:

    docker pull jenkins/jenkins

    这是https://jenkins.io/blog/2018/12/10/the-official-Docker-image/最新的一个

    【讨论】:

    • 截至 04282020 docker pull jenkins 永远不会起作用,因为它已被弃用。我会在 docker 官网删除这个命令,为像我这样的开发者节省一天的时间。
    • 谢谢,您使用最新的 jenkins docker 版本的提示帮助了我。
    【解决方案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,以防图像缓存中的某个层出现问题,或者设置automated build on Docker Hub 并在 Docker 的服务器上构建它。

    【讨论】:

    • 它在 Docker Hub 上工作,谢谢。我不会想到尝试这个。一定与我当地的环境有关。我正在使用 docker for mac。
    【解决方案3】:

    我记得我自己在安装该脚本时遇到了问题。相反,我使用了以下内容:

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

    希望它不会对此产生影响,但我将插件安装在 Dockerfile 的根部分中,然后以USER jenkins 的身份返回运行命令。

    【讨论】:

    • 谢谢,但不幸的是,这似乎不是:-(
    【解决方案4】:

    Dockerfile

    FROM jenkins/jenkins:latest
    
    ENV CURL_OPTIONS -sSfLk
    ENV JENKINS_OPTS --httpPort=-1
    

    【讨论】:

    • 如果您分享一些上下文来回答您的问题会很好。添加ENV JENKINS_OPTS --httpPort=-1 使Web 界面完全无法使用。也许您有理由包含此选项,但在没有上下文的情况下添加该行会破坏 Web 界面。
    【解决方案5】:

    在某些情况下,下载插件的 curl 超时不足,刚刚为图像 2.19.1 修复,现在也可以使用 CURL_CONNECTION_TIMEOUT 和其他选项进行配置

    【讨论】:

      【解决方案6】:

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

      在我的情况下,问题是由错误的 DNS 配置(由 DHCP 获得)引起的。当我将 DNS 更改为 Google 的 DNS 8.8.8.8 时,一切正常。

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

      【讨论】:

        【解决方案7】:

        我有一个非常相似的问题,我的解决方案是在插件安装之前在 Docker 文件中指定代理。下面是我的 Dockerfile 的 sn-p

        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
        【解决方案8】:

        这可能是 DNS 问题。请重新启动 docker daemon 并尝试。 (sudo service docker restart)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-10-28
          • 1970-01-01
          • 2015-06-02
          • 1970-01-01
          • 2018-09-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多