首页 > 解决方案 > 新的 jenkins 从节点何时以及如何有资格在其上执行作业?

问题描述

我们的 jenkins 主/从节点有以下设置:一个静态和固定的主节点(主节点上不会执行任何作业)和从节点的动态启动,如果 AWS EC2 jenkins 从节点空闲 30 分钟,我们也会终止它。

当它需要执行一项新作业时,它将根据Manage Jenkins ---> Configure System ---> Cloud ---> Amazon EC2中定义的配置配置一个从属设备。它还有一些初始化脚本部分可以根据我们的需要进行安装和配置。

当一个新节点启动时,最初我们在以下页面上看到它处于离线状态: https ://jenkins.xxxxx.xxxxx.com/computer/

当它正在执行初始化脚本内容时(在我们的例子中,完成所有提到的命令大约需要 10 分钟)一个在构建队列中等待的 jenkins 作业被分配给这个新节点,人们在作业控制台输出并中止构建,认为作业已分配给不再存在的离线从属/节点

仍在等待安排任务

'EC2 (Jenkins Slave) - jenkins-dev-docker-slave (i-xxxxxxxxx)' 离线;'EC2 (Jenkins Slave) - jenkins-dev-docker-slave (i-xxxxxxxxxx)' 离线

我们有什么办法可以指定一个配置,等待从节点/代理准备好(代理成功连接并在线)执行作业,而不是在初始化脚本命令执行完成之前分配?

注意:-所有这些都是管道作业和 linux slaves/nodes。詹金斯版本:2.190.1

如果有人需要任何其他详细信息,请告诉我。

问候, 帕万

标签: jenkinsjenkins-pipeline

解决方案


根据我们的经验,标签上安排的作业或阶段将等到该标签上至少有一个奴隶在线。那时,它将开始在该标签上执行。如果没有可用的从站,则作业/阶段将永远等待,除非在作业/阶段上指定超时。我们可以启动一个管道,让它等待一个标签,启动一个从属设备,为其分配一个标签,然后作业将在那里开始执行。

所以你在这里的经历和我们的很不一样。

可能是您的奴隶在线(因此安排了一项工作),但由于某种原因它离线了。如果是这种情况,您可能需要查看它的状态,或玩弄MAX_DURABILITY设置。


推荐阅读