我自己也遇到了这个。跟进 user2738882 的自我回答,我对他的解决方案存在的缺陷进行了修复:
他是正确的,这是由于 Jenkins 作为启动守护进程运行而发生的。守护程序在启动时无需登录即可启动,但它们并非旨在访问 UI。这就是导致问题的原因。
不幸的是,如果您通过存档 (.war) 安装,Jenkins 默认安装为启动守护程序。
我采用的解决方案是将其移至启动代理。为此,请按照下列步骤操作:
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
sudo cp /Library/LaunchDaemons/org.jenkins-ci.plist /Users/<Path to Jenkins User>/Library/LaunchAgents/org.jenkins-ci.plist
- 右键单击-> 获取有关 org.jenkins-ci.plist 文件的信息
- 更改所有用户的读写权限(底部)
- 修改 plist 文件,将 GroupName 键值从“daemon”更改为“agent”
- 右键单击-> 再次获取信息
- 将文件访问权限重置为以前
sudo launchctl load /Users/<Path to Jenkins User>/Library/LaunchAgents/org.jenkins-ci.plist
这种方法的缺点是启动代理在与其关联的用户登录之前不会启动。为了适应这种情况,我将我的 Jenkins 用户配置为在服务器启动时登录。去做这个:
- 打开系统偏好设置
- 打开组和用户
- 登录选项
- 将您的 Jenkins 用户设置为自动登录:
这显然是一个安全问题,但这些机器应该只能在您的本地网络上访问,并且无论如何都应该在安全的位置。无论如何,我将机器设置为通过登录尽快显示屏幕保护程序。