我正在使用Jenkins AWS EC2 插件,它生成 EC2 节点来执行 Jenkins 作业。在某些情况下,此插件可能会在等待配置节点时无限期挂起。例如,如果一个项目需要 python,但 EC2 映像没有 python,Jenkins 将启动一个节点,无法运行作业,启动另一个节点,无法运行作业,启动另一个节点......
与此同时,工作永远挂起,詹金斯支付了亚马逊账单,控制台输出如下所示:
[Pipeline] Start of Pipeline
[Pipeline] node
Still waiting to schedule task
‘Jenkins’ doesn’t have label ‘ec2worker’
通常,解决方案是首先正确配置 EC2 云,但说起来容易做起来难。很容易想象,例如,有人node.js在不更新 EC2 映像的情况下添加项目依赖项,然后 Jenkins 就开始参加比赛,试图为 AWS 高分...
理想情况下,我可以配置插件以在退出前限制提供尝试的次数,但没有此选项。有一个选项可以限制提供的节点总数,但由于每个节点在被认为不合适后都会被终止,Jenkins 只认为有一个活动节点。即,节点的数量在 0 和 1 之间波动,因为 Jenkins 创建了一个节点,丢弃它,然后创建另一个。
所以我正在寻找一种解决方法。有没有办法配置 Jenkins 在配置步骤中使构建失败?我可以限制创建节点所需的时间而不限制整个作业的总时间吗?
这种配置最好是系统范围的。但是如果它必须被推送到每个项目配置文件,我想它看起来像这样:
pipeline {
agent {
timeout(5m) {
label 'ec2worker'
}
}
}
是否有 Jenkins 功能或插件可以做这样的事情?