Очередь конвейера Jenkins заполняется, когда все агенты отключены

Я использую скрипт конвейера Jenkins, и когда все узлы отключены, сборки продолжают стоять в очереди. Как остановить Jenkins от добавления заданий в очередь, пока все ведомые не работают?

pipeline {
  triggers {
      pollSCM('H/3 * * * 1-5')

    }
}

2 ответа

Настроена ли доступность вашего агента на "Как можно больше поддерживать этого агента в сети"?

Один из способов решения этой ситуации - запустить приведенный ниже сценарий на главном узле и построить конвейер (ы), только если хотя бы один из узлов подключен к сети. В качестве параметра вы можете передать имя онлайн-узла вашей последующей работе.

def axis = []
for (slave in jenkins.model.Jenkins.instance.getNodes()) {
 if (slave.toComputer().isOnline()) {
    axis += slave.getDisplayName()
 }
}
return axis 

Выше сценария источник: Jenkins: пропустить, если узел отключен

Другие ссылки, которые могут помочь:

Контролируйте и перезапускайте свои подчиненные узлы - https://wiki.jenkins.io/display/JENKINS/Monitor+and+Restart+Offline+Slaves

Я нашел этот скрипт удобным в некоторых ситуациях: https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/clearBuildQueue.groovy

Я не увлекаюсь конвейерными работами, но для регулярных работ по фристайлу такой вид очереди будет только в том случае, если ваши сборки будут параметризованы. Затем необходимы отдельные сборки, чтобы гарантировать, что проект будет выполняться отдельно для каждого значения параметра (не имеет значения, действительно ли значение отличается).

Таким образом, удаление параметров сборки в вашем проекте может решить проблему.

Другие вопросы по тегам