【问题标题】:Why does Jenkins say "This Jenkins instance appears to be offline"为什么詹金斯说“这个詹金斯实例似乎离线”
【发布时间】:2017-07-13 12:26:33
【问题描述】:

我在 Ubuntu 上全新安装了 Jenkins 2.32.2。 在实例上打开浏览器并进入标题为 Offline 的页面,并显示消息 “此 Jenkins 实例似乎处于脱机状态”,并提供“配置代理”或“跳过插件安装”

机器显然没有离线,因为我只是使用互联网连接进行安装。 我也有一个以前的安装,以完全相同的方式完成,它正在工作。 我删除了之前的安装,因为 Pipelines 无法工作,Google 告诉我这是因为 JDK 9。所以我删除了所有 JDK/JRE 安装以及 jenkins,仅全新安装的 JDK 8,安装了 Jenkins,然后到了这里。

Jenkins 过去曾在这个盒子上工作过,那么是什么让它认为它处于离线状态?

更新:找到一个日志文件/var/lib/jenkins/logs/tasks/下载metadata.log 它以消息 FATAL: Connection denied (Connection denied) 开头 我认为这表明互联网连接正常,但有其他原因阻止它获取数据?

更新:根据其他研究,我检查了插件管理器中的更新站点。这被列为http://updates.jenkins-ci.org/update-center.json 并且,从命令行,此文件的 wget 成功。所以绝对不是连接问题。使用 http 和 https,jenkins 两者都不使用。

【问题讨论】:

  • 我遇到了同样的问题,我尝试了代理配置,它有效!在同一台机器上一个纯 http 代理。还是不知道为什么。

标签: jenkins offline


【解决方案1】:

我的步骤有点脱节,但希望对某人有所帮助:

  1. 记下 Jenkins 首次在浏览器上打开 http://localhost:8080/ 时显示的秘密管理员密码路径。

  2. 路径是:C:\Users{username}\AppData\Local\Jenkins.jenkins\secrets。 因此 hudson.model.UpdateCenter 文件位于 C:\Users{username}\AppData\Local\Jenkins.jenkins\

  3. 将记事本中的 hudson.model.UpdateCenter 文件更新为包含文本 http 而不是 https,如下所示: http://updates.jenkins.io/update-center.json

  4. 重新加载了 http://localhost:8080/ 页面,但仍显示文本“此 Jenkins 实例似乎已离线。”

  5. 然后导航到 Windows 中的服务应用程序(单击 Windows 并键入“服务应用程序”,它应该会在搜索列表中显示该应用程序)

  6. 在服务应用程序中右键单击Jenkins服务并选择重新启动。

  7. Windows 重启后,Jenkins 服务导航到 http://localhost:8080/ 詹金斯页面甚至不会加载。导航到 Jenkins 登录页面:http://localhost:8080/login?from=%2F

  8. 然后得到一个加载页面,上面有文字:'Jenkins正在准备工作,请稍候...... 当 Jenkins 准备就绪时,您的浏览器将自动重新加载。 假设 Jenkins 仍在重启。

  9. 加载 Jenkins 登录页面后,再次输入该密码/密码并单击继续。

  10. 这次页面显示“此 Jenkins 实例似乎已离线”。没有显示。 Jenkins 显示了一个 Getting Started -> Customize Jenkins 页面,其中包含安装插件的按钮。

【讨论】:

    【解决方案2】:

    正如其他人指出的那样,在 Windows 中,这可能是由于公司基础设施设置的防火墙限制。 就我而言,我需要推荐的插件(例如文件夹插件)

    我的解决方法是:

    A.将相同版本的 Jenkins 安装到我的个人笔记本电脑/VM 中,并确保在您第一次浏览 Jenkins 网页时安装推荐的插件。

    B.将我个人笔记本电脑的 JENKINS HOME 文件夹(即 ProgramData\Jenkins...)中的插件文件夹复制到公司笔记本电脑的 Jenkins 插件文件夹中。 插件文件夹的总大小约为 150MB(压缩后)。

    【讨论】:

      【解决方案3】:

      就我而言,我使用的是 WINDOWS 操作系统。所以,jenkins 安装在了我的 C 盘中。

      路径:C:\Users\Username\.jenkins

      在“hudson.model.UpdateCenter”文件下,将“https”更改为“http”

      <?xml version='1.1' encoding='UTF-8'?>
      <sites>
      <site>
      <id>default</id>
      <url>http://updates.jenkins.io/update-center.json</url>
      </site>
      </sites>
      

      【讨论】:

        【解决方案4】:

        即使我遇到了类似的问题,然后发现我使用的 JDK 是 8 而不是 11。 查看jenkins官网下的jenkins jdk组合

        我使用 JDK11 和 Jenkins 2.3031 版本,它运行良好 - 所有插件都已下载

        【讨论】:

        • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。
        【解决方案5】:

        另一种可能性 - 确保 Jenkins 的 DNS 功能正常。

        就我而言,我按照 Kubernetes 设置说明 here 安装 Jenkins,结果导致了这个问题。

        enabled logging on CoreDNS 看到了这个:

        │ [INFO] 10.70.116.14:45888 - 50490 "AAAA IN updates.jenkins.io.svc.cluster.local. udp 54 false 512" NXDOMAIN qr,aa,rd 147 0.0001896s                          │
        │ [INFO] 10.70.116.14:45888 - 32566 "A IN updates.jenkins.io.svc.cluster.local. udp 54 false 512" NXDOMAIN qr,aa,rd 147 0.000169468s                           │
        │ [INFO] 10.70.116.14:57907 - 22912 "A IN updates.jenkins.io.localdomain. udp 48 false 512" NOERROR qr,aa 110 0.000907476s                                     │
        │ [INFO] 10.70.116.14:57907 - 52100 "AAAA IN updates.jenkins.io.localdomain. udp 48 false 512" NOERROR qr,aa 110 0.001709031s 
        

        查找都是集群本地的。

        如果我编辑了 URL(如此处其他答案中所建议的那样)以在 updates.jenkins.io. 之后包含一个点,则主机名查找工作并且 URL 已解析。尽管出于同样的原因 Jenkins 的下一步错误。

        最后我发现问题是 pod 的 DNS 的ClusterFirst 模式。我将 dnsPolicy: Default 添加到部署的 pod 模板规范(上面的说明链接),现在它可以工作了。

        【讨论】:

          【解决方案6】:

          我也遇到过这个问题,即在 Windows 10 上“此 Jenkins 实例似乎处于脱机状态”。

          以下是我解决它的步骤。

          第 1 步。 导航到 Jenkins 主目录。 对我来说,默认的主目录是:C:\Windows\System32\config\systemprofile\AppData\Local\Jenkins.jenkins

          Step2. 将文件 hudson.model.UpdateCenter.xml 中的协议从 HTTPS 更改为 HTTP

          Step3.重启Jenkins(进入C:\Program Files\Jenkins然后执行jenkins.exe stop,jenkins.exe start)

          Step4. 再次登录 Jenkins (http://localhost:8080/)。 离线错误已解决。

          【讨论】:

            【解决方案7】:

            重新安装 JAVA JDK8 对我有用。

            【讨论】:

              【解决方案8】:

              它可能并不总是一个选项,但如果您可以选择使用不同的图像。我使用了Debian GNU/Linux 10,它就像一个魅力。

              【讨论】:

                【解决方案9】:

                如果您在容器中运行 jenkins 并且未安装 vi 以交互模式访问您的容器

                docker exec -it jenkins-ci /bin/bash
                

                使用此 sed 命令将 https 替换为 http

                sed -i 's/https/http/g' /var/jenkins_home/hudson.model.UpdateCenter.xml 
                

                【讨论】:

                  【解决方案10】:

                  对于 Windows 操作系统, 请按照以下步骤操作

                  1. 转到 C:\Users\您的用户名\.jenkins
                  2. 打开文件:hudson.model.UpdateCenter.xml
                  3. 将“url”的值从“https://xxx”更新为“http://xxx”

                  【讨论】:

                  • 初始管理员密码路径也有.jenkins文件夹的路径
                  【解决方案11】:

                  我在 Mac 上工作,就我而言,结果发现使用的 Java Jenkins 版本 (1.8.0u66) 不够最新。我安装了 Java 11 和 Java 14,但是 jenkins-lts 脚本被编码为强制使用 Java 8。我没有安装更新的 JDK 8 安装,而是修改了脚本以运行 ${JAVA_HOME}/bin/ java 并将 JAVA_HOME 设置为 JDK 11 安装。

                  【讨论】:

                    【解决方案12】:

                    就我而言,我已在 /var/lib/jenkins/hudson.model.UpdateCenter.xml 文件的 URL 行中将 https 更改为 http 并重新启动詹金斯,它开始运作。

                    【讨论】:

                      【解决方案13】:

                      这主要发生在您使用 公司发行的 PC Windows 操作系统时。

                      修复:-

                      点击“配置代理”向您的 IT 团队询问具体的 serverport 值,这些值可以绕过防火墙并为您的 Windows 用户名密码。这样就可以解决windows防火墙离线Jenkins问题。

                      我在 Internet 上进行了很多研究,但没有可用的修复程序。

                      谢谢!

                      【讨论】:

                      • 同意!当我尝试将 Jenkins 安装到我的个人笔记本电脑中时,不会出现此问题。它会直接提示您安装推荐的插件。对于我的场景,我需要安装插件才能从另一个结构分层的系统中导入作业。如果没有文件夹插件,我无法做到这一点。至于我的解决方法,我将插件文件夹的内容(在 JENKINS HOME 或 ProgramData\Jenkins\...内)从我的个人笔记本电脑复制到我公司笔记本电脑的 Jenkins 插件文件夹中。幸运的是,公司笔记本电脑的 Jenkins 从我的个人笔记本电脑上认出了这些插件。
                      【解决方案14】:

                      更新中心的网络连接有问题。我在macOS上安装了Jenkins也遇到了同样的情况。

                      您可以尝试修改hudson.model.UpdateCenter.xml文件。

                      Jenkins在macOS上安装.pkg包,文件路径为:
                      /Users/Shared/Jenkins/Home/hudson.model.UpdateCenter.xml

                      ma​​cOS上Homebrew安装的Jenkins,文件路径为:
                      /Users/{username}/.jenkins/hudson.model.UpdateCenter.xml

                      打开文件:

                      <?xml version='1.1' encoding='UTF-8'?>
                      <sites>
                        <site>
                          <id>default</id>
                          <url>https://updates.jenkins.io/update-center.json</url>
                        </site>
                      </sites>
                      

                      你可以试试把https://updates.jenkins.io/update-center.json改成:

                      http://updates.jenkins.io/update-center.json
                      

                      // If you are in China or near China area,https and http are both OK.
                      https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/current/update-center.json
                      

                      然后你可以通过以下方式重启 Jenkins:

                      //loading the URL to restart Jenkins.
                      http://localhost:8080/restart
                      

                      // Use Homebrew command to restart Jenkins if you installed Jenkins LTS version by Homebrew.  
                      brew services restart jenkins-lts
                      

                      【讨论】:

                        【解决方案15】:

                        我对此没有任何声明,尤其是与 Java 相关的(我个人无法忍受这种语言),但在我的 Ubuntu 18.04 L/T 上,我需要建立一个独立的 Jenkins 实例;所以我安装了 Jenkins 似乎依赖的 Java 和 Jenkins 本身

                        sudo apt install openjdk-8-jdk jenkins
                        

                        然后我更新了 Jenkins 默认设置

                        sudo gvim /etc/default/jenkins
                        

                        ...在文件顶部插入以下内容 - 只是因为编辑 /etc/init.d/jenkins 似乎没有任何作用,因为它没有任何效果...

                        JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/
                        PATH=$JAVA_HOME:$PATH
                        

                        最后,保存并退出...然后尝试 Jenkins 重启

                        sudo service jenkins restart
                        

                        HTH - 它确实对我有用 :-)

                        【讨论】:

                          【解决方案16】:
                          jenkins_enable="YES"
                          jenkins_home="/usr/local/jenkins"
                          jenkins_user="jenkins"
                          jenkins_args="--webroot=${jenkins_home}/war --httpListenAddress=*.*.*.*  --httpPort=8180"
                          
                          #jenkins_java_opts="-Djavax.net.ssl.trustStore=/usr/local/jenkins/cacerts -Djava.net.preferIPv6Addresses=true"
                          
                          #jenkins_java_opts="-Djavax.net.ssl.trustStore=/usr/local/jenkins/cacerts -Djava.net.preferIPv4Addresses=true"
                          

                          【讨论】:

                          • 解释一下怎么样!
                          【解决方案17】:

                          在 MacOS 上:10.11.6

                          第 1 步:转到 /Users//.jenkins

                          第二步:打开文件:hudson.model.UpdateCenter.xml

                          步骤 3:将“default”的值从“https://xxx”更改为“http://xxx

                          【讨论】:

                            【解决方案18】:

                            问题在于,出于某种原因,Jenkins 无法访问 Jenkins 更新服务的证书链。 在 Ubuntu 18.04 上,我遇到了这个问题,接下来的链接和说明帮助我正确启动 Jenkins,而无需修改默认 url 或使用某种代理。

                            使用 JAVA_HOME 安装新的 JDK 8(u101+) 应该可以达到以下效果:

                            确保 Lets Encrypt 证书已安装并在 OS/SYSTEM 上可用。 要对其进行测试,您可以使用以下说明:

                            如果需要手动安装让我们使用下一个脚本加密根链:

                            【讨论】:

                            • 我强烈建议您在回复中总结此处的关键点,因为出于多种原因(包括但不限于外部链接经常消失和变得不可用,使曾经有用的答案变成无用的噪音)。
                            • @ray 确实你是对的,但这篇文章不适合“傻瓜”。 JDK 或 JRE 需要 JAVA_HOME 才能正常工作。在仍处于“测试”阶段的 Ubuntu 18.04 上,问题是安装没有全局设置 JAVA_HOME 变量。我不是在写教程,而只是指出正确的方向,顺便说一下 alex 解决方案甚至都不会触及...在整个线程中,我只看到了猜测,与实际问题没有任何关系所以我添加了一个“重定向”到一个更富有成效的方向。
                            【解决方案19】:

                            在运行 Jenkins 之前输入。

                            # iptalbes -F
                            

                            可能是防火墙的原因。

                            【讨论】:

                              【解决方案20】:

                              在我的情况下(macOS),将 jdk 更新到 8 并重新安装 jenkins 解决了这个问题。

                              【讨论】:

                              • 你不需要重新安装Jenkins;您可以升级 JDK,然后 kill Jenkins 进程。它会自动重启。
                              • 对我来说“1.8.0_40”不好,“1.8.0_181”很好。显然,我被愚弄/忘记了 MacOSX 上的“Java”是 JDK,显然是 JRE。参考:stackoverflow.com/questions/15624667/…
                              【解决方案21】:

                              ma​​cOS 用户:

                              步骤 -1:编辑 /Users/Shared/Jenkins/Home/hudson.model.UpdateCenter.xml 并更改 url 以使用 http 而不是 https

                              步骤-2:重新启动 jenkins(例如通过转到http:localhost:8080)并重新加载网站

                              步骤-3(可选):如果它要求输入用户名和密码并且您不记得创建了一个;默认 useradmin 并从

                              复制 密码
                              sudo cat /Users/Shared/Jenkins/Home/secrets/initialAdminPassword
                              

                              学分 - @Alex in this post 和 @Tuan Pham here 和 @Joe Walsh 对 macOS 目录路径的评论

                              【讨论】:

                                【解决方案22】:

                                就我而言,它与 SSL 有关。我设法通过编辑/var/lib/jenkins/hudson.model.UpdateCenter.xml 来修复它,并将网址更改为使用http 而不是https

                                重启jenkins并重新加载网站,它不再显示离线。

                                【讨论】:

                                • 为我工作。 os x 文件位于 /Users/Shared/Jenkins/Home/hudson.model.UpdateCenter.xml
                                • 对于 macOS 上的我来说,文件是 /Users/you/.jenkins/hudson.model.UpdateCenter.xml
                                • 如果它不起作用。尝试安装 CNTLM,它为您提供外部代理的本地代理,Jenkins 可以使用 CNTLM 作为代理服务器。不是我的博客,但有更多解释:alakbarv.azurewebsites.net/2017/09/12/…
                                • @jsosnowski 你的链接失效了。
                                • 这很危险,因为它会让您暴露于未加密/未经身份验证的 HTTP 的所有漏洞。 @elico 的回答是正确的,Java 没有认证链。您可以通过安装 Oracle JDK 或以某种方式为默认的 openjdk 提供所需的证书来解决此问题。
                                猜你喜欢
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 2018-06-19
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                相关资源
                                最近更新 更多