当我尝试使用 Web 界面(通过 http(s)://theserver/restart 或 http(s)://theserver/saferestart)重新启动 Jenkins 时遇到问题,因为 Jenkins 卡在屏幕上“请等待 Jenkins 正在重新启动,当 Jenkins 准备就绪时,您的浏览器将自动重新加载。”并且服务从未显示为已停止,因此我们必须手动转到服务器的服务并停止/启动或重新启动 Jenkins Windows 服务才能让 Jenkins 再次准备就绪。
我们的Jenkins服务器(当前版本为2.60.3)在Windows2012R2上运行,Jenkins进程作为Windows服务运行,具有有限权限的技术帐户(domain \ sirjenkins)。
当运行该进程的技术帐户是管理员时,Jenkins 会在出现一分钟的“请等待”消息后正常重启。
我分配给 domain\sirjenkins 帐户的权限是: - 服务器中用户组的成员 - 对 jenkins 配置文件的完全控制权限 - 对 jenkins 工作区文件夹的完全控制权限 - 在本地安全策略中“作为服务登录”的权限
使用此帐户运行 Jenkins Windows 服务时,Jenkins Web 界面上的所有其他功能和自动化流程(从 Web 界面重新启动除外)均可正常运行。
我一直在网上搜索类似的问题,但我发现的大多数问题都与无法启动 Jenkins 有关,原因是配置问题/错误,或者建议分配我已经分配给该帐户的权限。进一步的测试证明,Jenkins 在以被赋予的受限权限启动时没有问题,但它在网络重启期间试图成功停止自己时遇到了麻烦。
有没有其他人遇到过这个问题,在以服务形式运行 Jenkins 的帐户的“本地安全策略”中,我们是否可能缺少任何用户权限,以便能够从 Web 界面成功重新启动 Jenkins?
提前致谢。
答案1
我用来重新启动 Jenkins 的是以下管道脚本:
import jenkins.model.*
sleep 15
Jenkins.instance.doSafeRestart(null);
只需创建一个新的“管道”类型作业,粘贴上面的代码并确保取消选中“使用 Groovy 沙箱”复选框。
在我的配置中,服务帐户具有额外的权限,但这种方法也可能适用于受限帐户。
您还可以分配每个项目用户权限来“构建”(实际上是运行)此作业,使用矩阵授权策略插件或者安排作业定期运行。