【发布时间】:2013-02-13 07:22:27
【问题描述】:
Jenkins 不会执行任何作业。查看this question 后,我已禁用所有从节点,但一个简单的作业甚至无法在主节点上运行。
怎么了?
【问题讨论】:
标签: jenkins
Jenkins 不会执行任何作业。查看this question 后,我已禁用所有从节点,但一个简单的作业甚至无法在主节点上运行。
怎么了?
【问题讨论】:
标签: jenkins
即使主节点离线,Jenkins 管理控制台也可以运行。当 Jenkins 磁盘空间不足时,可能会发生这种情况。
要确认,请执行以下操作(感谢 geekride - jenkins-pending-waiting-for-next-available-executor):
【讨论】:
我遇到了类似的问题,因为我的主人被设置为“只留下这台机器用于捆绑的工作”。所以,即使我禁用了奴隶,詹金斯继续绕过主人,寻找别的东西。
转到 Jenkins --> Manage Jenkins --> Manage Nodes,然后单击主节点的配置按钮(看起来像螺丝刀和扳手)。检查Usage并确保它在“Utilize this slave as much as possible”上。
【讨论】:
我玩游戏有点晚了,但这可能对其他人有所帮助。
在我的例子中,我的 jenkins master 有一个共享的外部资源,由 external-resource-dispatcher-plugin 分配给 jenkins 作业。由于插件中的错误JENKINS-19439(处于测试阶段),我发现我的资源已被之前的作业锁定,但在取消之前的作业时没有解锁。
要查看资源当前是否处于锁定状态,请导航到受影响的 jenkins 节点,Jenkins -> Manage Jenkins -> Manage Nodes -> master
您应该看到所有外部资源的当前状态。如果有任何意外锁定,这可能是作业等待执行程序的原因。
我找不到有关如何手动解决此问题的任何详细信息。
重新启动詹金斯并没有解决问题。
最后我采取了残酷的方法:
【讨论】:
什么对我有用:我终于注意到主 Jenkins 仪表板左侧的 Build Executor Status 窗口。我在本地系统上使用 2 个执行程序运行一个开发/测试实例。两者目前都忙于未运行的构建。在取消这些作业后,我的第三个(待定)作业能够运行。
【讨论】:
对我来说,我必须手动重新启动执行程序。点击“Build Executor Status”下的“Dead”并按下重启按钮。
【讨论】:
就我而言,当盒子内存不足 (RAM) 时,我注意到了这种行为 我去了 Jenkins -> Manage Jenkins -> Manage Nodes,发现内存不足异常。 我刚刚释放了机器上的一些内存,作业开始进入执行程序。
【讨论】:
我遇到了类似的问题,因为我的 master 设置为“# of executor(Jenkins 可以在此代理上执行的最大并发构建数)。
转到Jenkins --> Manage Jenkins --> Manage Nodes,然后点击主节点的配置按钮(增加执行器的数量以一次运行多个作业)。
【讨论】:
在我的例子中,执行者的数量设置为 0。 增加它并修复问题。
【讨论】:
对我来说,以下解决方案有效。
Jenkins --> 管理 Jenkins --> 管理节点 --> master -> 配置 --> 节点属性 --> Restrict Jobs execution at node - 已启用并授予特定用户访问权限。我自己授予了访问权限,然后工作开始运行。
如果启用在节点上限制作业执行,计划任务将无法运行。
【讨论】:
就我而言,我的 JenkinsFile 中有以下设置
node('node'){
...
}
没有称为“节点”的节点,只有主节点(在遵循一些基本教程后,该值已保留在那里)。将值更改为“master”使构建工作正常。
【讨论】:
就我而言,我刚刚安装了“授权项目”插件,并错误地将“管理 Jenkins -> 配置全局安全性 -> 构建访问控制”中的策略设置为“以匿名方式运行”。所以“匿名”无权执行这项工作。
将第一个策略设置为“以触发构建的用户身份运行”解锁了排队的作业。
【讨论】:
就我而言,它类似于@Michael Easter:由于磁盘空间不足,我在工作中遇到了问题。我清理了一些空间,重新启动了 Jenkins,但问题仍然存在。
解决方案是转到 Jenkins -> Manage Jenkins -> Manage Nodes,然后单击按钮更新状态。
【讨论】:
在我的情况下,这是由 执行者数量(我有 1 个)和从流水线运行 Jenkins 作业(项目)引起的(我的流水线脚本在 Jenkins 中启动了其他作业)。它导致死锁 - 我的管道持有执行程序并正在等待其工作,但该工作正在等待免费的执行程序。
解决方案可能是在Jenkins -> Manage Jenkins -> Manage Nodes -> Configure (icon on required node) 中增加# of executors。
【讨论】:
简短回答: 杀死所有在 master 上运行的作业。
在我的例子中,有 3 个作业挂在 master 上超过 10 天,但未被注意到。我们通常不会直接在 master 上运行任何作业,一切都在 slave 上运行。我杀死了这 3 个挂起的作业,slave 上的 executor 自动开始接作业。
请注意,即使我们有 8 个从站,也只有 1 个从站处于这种受影响的状态。
[编辑] 我们找到了为什么只有一个奴隶处于这种受影响状态的答案。 当 Jenkins slave 宕机时,所有挂起的作业都会自动转移到 master。我杀死的所有 3 个挂起的作业都来自这个从站,所以它可能是主站和这个特定从站之间的连接问题。
【讨论】:
就我而言,我必须在作业的常规设置中设置Execute concurrent builds if necessary。
【讨论】:
您可能设置了里程碑,并且您的作业要等上一个作业完成后才能运行。
【讨论】:
我刚刚添加了一个带有 docker 代理的阶段。由于我只有一个节点,master,我不得不告诉容器重用早期阶段的节点:
agent {
docker {
image 'bitnami/mongodb:latest'
reuseNode true
}
}
您可以vote 将此设置为代理的默认行为并防止此类锁定。
【讨论】:
如果您安装了 Parameterized Trigger 插件,则在构建队列中等待的作业可能是一个已知问题JENKINS-47792。
解决方法是将 Parameterized Trigger 插件降级到版本 2.35.1。 请注意,您可能还需要降级依赖项,例如 git 插件。
【讨论】:
在我的环境中(图像 jenkins:lts-jdk11、jnlp-agent-maven 和 jnlp-agent-maven:jdk11),为更新 jenkins 图像执行拉取操作,报告代理没有连接问题。但是所有作业都被消息阻止:
pending—Waiting for next available executor on
所以,对我来说,解决方案是停止并拉入两个代理图像:
docker pull jenkins/jnlp-agent-maven (jdk8)
docker pull jenkins/jnlp-agent-maven:jdk11
【讨论】: