【问题标题】:jenkins fails to start correctly, despite lack of error outputjenkins 无法正确启动,尽管没有错误输出
【发布时间】:2021-08-26 10:37:32
【问题描述】:

所以,当 Jenkins 完全无法启动时,我已经看到了答案。看起来我在 Jenkins 运行但立即退出时遇到了一个稍微不同的问题。

在 EC2 实例重启后,我尝试了这个:

λ ip-xx-xxx-xx-xx jenkinshome → sudo service jenkins start
Starting jenkins (via systemctl):                          [  OK  ]

λ ip-xx-xxx-xx-xx jenkinshome → sudo service jenkins status
● jenkins.service - LSB: Jenkins Automation Server
Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
Active: active (exited) since Fri 2020-11-13 22:32:56 UTC; 3s ago
 Docs: man:systemd-sysv-generator(8)
 Process: 14875 ExecStop=/etc/rc.d/init.d/jenkins stop (code=exited, status=0/SUCCESS)
 Process: 14897 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)

 Nov 13 22:32:55 xx...xx systemd[1]: Starting LSB: Jenkins Automation Server...
 Nov 13 22:32:55 xx...xx runuser[14902]: pam_unix(runuser:session): session opened for user jenkins by (uid=0)
 Nov 13 22:32:56 xx...xx systemd[1]: Started LSB: Jenkins Automation Server.
 Nov 13 22:32:56 xx...xx jenkins[14897]: Starting Jenkins [  OK  ] 

此外,运行 java -jar /usr/lib/jenkins/jenkins.war 似乎只是安装并启动一个新的 jenkins 实例,而不是启动我之前运行的 jenkins 实例。

值得注意的是:我的设备上剩余的可用空间非常有限,并且在清理磁盘空间和分配更多空间方面存在很大的管理障碍,尽管这可能是相关的。

不太确定如何进行,但欢迎提供任何提示。谢谢!

【问题讨论】:

  • 您是否查看了systemctl status jenkins 以了解正在发生的事情的详细信息
  • @Saravanan - 是的,在我的发行版 (RHEL) 中,输出等同于上面sudo service jenkins status 的输出
  • 以下内容并不完全符合我的要求,但它有效地恢复了我的 jenkins 配置,因为我在 /var/lib/jenkins 有一个现有的 jenkins_home 文件夹:docker run -p 8080:8080 -p 50000:50000 -d -v /var/lib/jenkins:/var/jenkins_home jenkins/jenkins:lts jenkins 标签应该在哪里不是固定到 lts,而是固定到与一个预先存在的安装相对应的 jenkins 版本。实际上,这会从 docker 中安装和运行 jenkins,但会从我的 /var/lib/jenkins 文件夹中恢复配置。还必须重新配置任何 ssh 密钥等。
  • 我不明白,你是用Docker还是不用? we do not have jenkins running within a docker container
  • @PierreB。在我调试之前我们没有,但我能够通过在我们机器上现有的 /var/lib/jenkins 目录上安装一个 jenkins docker 容器来恢复我们之前的一些内容。

标签: docker jenkins amazon-ec2 continuous-integration devops


【解决方案1】:

答案相当简单,我敢说很明显:我需要重新安装 jenkins。我在 RHEL 上,但这可以适用于 ubuntu 等(请参阅下面的链接)。

# stop the jenkins service altogether
sudo service jenkins stop

# backup jenkins_home files
sudo cp -r /var/lib/jenkins ~/.jenkins_home_backup 

# remove the jenkins installation entirely
sudo yum remove jenkins # remove existing jenkins install

# add the jenkins ssh key locally
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

# reinstall jenkins
sudo yum -y install jenkins

# start jenkins!
sudo service jenkins start

或多或少改编自:https://computingforgeeks.com/how-to-install-jenkins-on-centos-rhel-8/

您可能还需要参考:https://www.jenkins.io/blog/2020/07/27/repository-signing-keys-changing/

【讨论】:

    【解决方案2】:
    1. 通过执行以下两个命令解锁 HTTP 端口并提供防火墙访问权限

      firewall-cmd --permanent -add-port=<port_num>/tcp
      firewall-cmd --reload
      
    2. 通过提供用户定义的端口号来启动 Jenkins:

      java -jar jenkins.war --httpPort=<port_num>
      

    如果问题仍然存在,请检查 Jenkins 运行所在目录的空间。如果空间不足,则将该 Jenkins 移至另一个存在足够空间的目录。

    检查目录级权限以及文件级权限。

    希望它能解决您的问题!

    【讨论】:

    • 嗨!谢谢你的建议。我明天试试,告诉你!
    • 这对我来说不太适用 - 它只是重新启动了 jenkins 的另一个实例。感谢您的帮助!有一个支持和赏金-无论如何我都学到了一些东西:)
    【解决方案3】:

    这对我有用 -

    sudo chown -R jenkins:jenkins /var/lib/jenkins
    sudo chown -R jenkins:jenkins /var/cache/jenkins
    sudo chown -R jenkins:jenkins /var/log/jenkins
    sudo systemctl restart jenkins
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 2021-04-29
      • 2023-03-09
      相关资源
      最近更新 更多