Я работаю с плагином Jenkins AWS EC2 , который порождает узлы EC2 для выполнения заданий Jenkins.Есть несколько случаев, когда этот плагин может зависать бесконечно, ожидая, когда будет предоставлен узел.Например, если для проекта требуется Python, но в образе EC2 нет Python, Дженкинс раскрутит узел, не сможет запустить задание, раскрутит другой узел, не сможет запустить задание, раскрутит другой узел ...
Между тем, работа зависает навсегда, Дженкинс наращивает счет Amazon, и вывод консоли выглядит следующим образом:
[Pipeline] Start of Pipeline
[Pipeline] node
Still waiting to schedule task
‘Jenkins’ doesn’t have label ‘ec2worker’
Обычно решение состоит в том, чтобы просто настроитьОблако EC2 правильно в первую очередь, но легче сказать, чем сделать.Легко представить, например, что кто-то, скажем, добавляет node.js
в качестве зависимости проекта без обновления образа EC2, а затем Дженкинс отправляется в гонку, пытаясь выставить счет AWS за высокий балл ...
ИдеальноЯ мог бы настроить плагин на ограничить количество попыток инициализации перед выходом, но для этого нет опции.Существует возможность ограничить общее количество выделенных узлов , но поскольку каждый узел завершается после того, как он считается неподходящим, Дженкинс считает, что существует только один активный узел.Т.е. число узлов колеблется между 0 и 1, поскольку Дженкинс создает узел, отбрасывает его, а затем создает другой.
Так что я ищу обходной путь.Есть ли способ настроить Jenkins на сбой сборки на этапе подготовки?Могу ли я ограничить время, необходимое для создания узла, не ограничивая общее время всей работы?
Предпочтительно, чтобы эта конфигурация была общесистемной.Но если его нужно отправить в каждый файл конфигурации проекта, я представляю, что он выглядит примерно так:
pipeline {
agent {
timeout(5m) {
label 'ec2worker'
}
}
}
Есть ли функция или плагин Jenkins, который делает что-то подобное?