如果配置代理需要很长时间,可以配置Jenkins使作业失败吗?

问题描述 投票:0回答:1

我正在使用Jenkins AWS EC2 plugin,它生成EC2节点来执行Jenkins工作。在某些情况下,此插件可以在等待配置节点时无限期挂起。例如,如果项目需要python但EC2映像没有python,Jenkins将启动节点,无法运行作业,启动另一个节点,无法运行作业,启动另一个节点......

与此同时,这项工作永远悬而未决,Jenkins负责亚马逊法案,而控制台输出如下:

[Pipeline] Start of Pipeline
[Pipeline] node
Still waiting to schedule task
‘Jenkins’ doesn’t have label ‘ec2worker’

通常,解决方案是首先正确配置EC2云,但说起来容易做起来难。很容易想象,例如,有人在没有更新EC2图像的情况下添加node.js作为项目依赖项,然后詹金斯参加比赛尝试获得AWS高分...

理想情况下,我可以配置插件以限制退出前的配置尝试次数,但是没有选项。可以选择限制配置的节点总数,但由于每个节点在被认为不合适后终止,因此Jenkins只考虑有一个活动节点。即,节点的数量在0和1之间振荡,因为Jenkins创建一个节点,丢弃它,然后创建另一个节点。

所以我正在寻找一种解决方法。有没有办法在配置步骤中配置Jenkins使构建失败?我可以限制创建节点所需的时间而不限制整个作业的总时间吗?

优选地,该配置将是系统范围的。但如果必须将其推送到每个项目配置文件,我想它看起来像这样:

pipeline {
    agent {
        timeout(5m) {
            label 'ec2worker'
        }
    }
}

是否有Jenkins功能或插件可以做这样的事情?

jenkins jenkins-plugins
1个回答
0
投票

最后我在Jenkins找不到任何我想要的东西 - 虽然Jenkins EC2插件确实有一张票支持这个缺失的功能。

我用lambda解决了AWS中的问题。每当Jenkins销毁一个实例时就会触发lambda,并且从该事件开始,lambda会计算实例的存活时间。如果它不够长(小于节点通常等待的空闲时间),那么詹金斯必须挂起并且lambda杀死了这个工作。

© www.soinside.com 2019 - 2024. All rights reserved.