首页 > 解决方案 > 从快照恢复磁盘后 Jenkins 无法启动

问题描述

自 2020 年初以来,此 Jenkins 安装在 GCE 上运行,管道、插件和其他配置正常运行。

经过一天的试验以引入一些本应花费 5 分钟并最终花费一整天的新操作系统级附加功能后,我意识到我正在碰壁并决定通过删除 VM 并创建一个新的使用 11 月拍摄的快照,上次虚拟机无需修改即可正常工作。这个特定的 Jenkins 安装用于构建我们内部应用程序的暂存版本,所以我不太关心停机时间等。

创建一个新的虚拟机后,与前一个相同的规格,运行 Debian 10,并将快照分配为磁盘的源,然后重新加载仪表板并对此感到惊讶:

在此处输入图像描述

登录 vm 本身,我发现所有目录/文件都在那里,但运行sudo systemctl status jenkins返回:

● jenkins.service - LSB: Start Jenkins at boot time
   Loaded: loaded (/etc/init.d/jenkins; generated; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2021-01-05 17:54:55 UTC; 5s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 653 ExecStart=/etc/init.d/jenkins start (code=exited, status=7)
    Tasks: 0 (limit: 4915)
   CGroup: /system.slice/jenkins.service

Jan 05 17:52:34 jenkins-1-vm systemd[1]: Starting LSB: Start Jenkins at boot time...
Jan 05 17:52:40 jenkins-1-vm jenkins[653]: Correct java version found
Jan 05 17:52:41 jenkins-1-vm su[767]: Successful su for jenkins by root
Jan 05 17:52:41 jenkins-1-vm su[767]: + ??? root:jenkins
Jan 05 17:52:41 jenkins-1-vm su[767]: pam_unix(su:session): session opened for user jenkins by (uid=0)
Jan 05 17:54:55 jenkins-1-vm jenkins[653]: Starting Jenkins Automation Server: jenkins failed!
Jan 05 17:54:55 jenkins-1-vm systemd[1]: jenkins.service: Control process exited, code=exited status=7
Jan 05 17:54:55 jenkins-1-vm systemd[1]: Failed to start LSB: Start Jenkins at boot time.
Jan 05 17:54:55 jenkins-1-vm systemd[1]: jenkins.service: Unit entered failed state.
Jan 05 17:54:55 jenkins-1-vm systemd[1]: jenkins.service: Failed with result 'exit-code'.

我开始在谷歌上搜索,基本上花了最后 2 个小时,除了很多文章提到使用 Java8 之外,没有发现任何相关的东西,因为 Java 在那里并且日志本身说,它不能应用于这种情况Correct java version found

作为最后一次尝试,我尝试apt purge jenkins重新安装它,之后一切正常,但当然,一切也都被消灭了。所以我创建了另一个虚拟机,在尝试其他任何事情之前,决定在这里寻求帮助。

Jenkins 中是否有一些东西无法在磁盘快照中被带入并导致这个可怕的Failed to start LSB: Start Jenkins at boot time.消息?我可以尝试解决这个问题并恢复它吗?

添加更多信息:尝试通过.war文件(java -jar /usr/share/jenkins/jenkins.warconfig.xml/var/lib/jenkins

标签: jenkinsgoogle-compute-enginedevopsgcloudsnapshot

解决方案


我对在 GCE VM 上运行的 Jenkins 有过类似的体验。我还没有完成问题的解决,但我已经设法让 Jenkins 运行而无需重新配置所有内容。

在几个小时内逐步完成启动脚本后,我找到了一个地方,它消失在一个洞里,然后又以失败告终。通过查看失败后的步骤,我能够从第一原则让系统再次运行。

我最终运行的命令(并且应该真正坚持在脚本中,因为我的 Jenkins 实例在系统重新启动后不会以您获得的相同指纹启动)。这是在 GCE 中运行的 Debian 10 系统。

. /etc/default/jenkins
DAEMON_ARGS="--name=$NAME --inherit --env=JENKINS_HOME=$JENKINS_HOME --output=$JENKINS_LOG --pidfile=$PIDFILE"
DAEMON=/usr/bin/daemon
SU=/bin/su
JAVA=`type -p java`
$SU -l $JENKINS_USER --shell=/bin/bash -c "$DAEMON $DAEMON_ARGS -- $JAVA $JAVA_ARGS -jar $JENKINS_WAR $JENKINS_ARGS"

此时 Jenkins 正在运行并响应我的 Web 浏览器调用。


推荐阅读