Декларативный конвейер Jenkins ждет исполнителя бесконечно - PullRequest
2 голосов
/ 26 марта 2020

Я не эксперт по Jenkins, поэтому, пожалуйста, извините, если это абсолютный вопрос ie.

В настоящее время я изучаю связанную проблему с нашим конвейером Jenkins. При попытке подготовить исполнителя из AWS EC2 время соединения истекло. Я ожидаю, что работа прекратится после нескольких попыток. Вместо этого он продолжает пытаться соединиться. Время соединения истекает. Бесконечно l oop!

В конвейере определено время ожидания. Поскольку исполнителя нет, тайм-аут никогда не читается.

pipeline {

   agent {
       label 'docker'
   }

    options {
         timeout(time: 45, unit: 'MINUTES')
         timestamps()
         skipDefaultCheckout()
         disableConcurrentBuilds()
         buildDiscarder(logRotator(numToKeepStr:'5'))
    }

    stages {
        // And so on...

Плагин «Build Timeout» установлен на нашем Jenkins, но, похоже, он не активен для этого проекта, поэтому я не t увидеть настройки для отмены проекта.

Установленные плагины

  • Amazon EC2, 1,42
  • Тайм-аут сборки 1.19
  • Конвейер 2.6

Обратите внимание, что конвейер работал в прошлом.

[EDIT]

Следующий журнал не изменился за несколько дней.

Started by user a.user
 > git rev-parse --is-inside-work-tree # timeout=10
Setting origin to http://sources:8080/scm/git/backend
 > git config remote.origin.url http://sources:8080/scm/git/backend # timeout=10
Fetching origin...
Fetching upstream changes from origin
 > git --version # timeout=10
 > git config --get remote.origin.url # timeout=10
using GIT_ASKPASS to set credentials provides read-only access to the project git repositories
 > git fetch --tags --progress origin +refs/heads/*:refs/remotes/origin/* # timeout=10
Seen branch in repository origin/branch1
Seen branch in repository origin/branch2
Seen branch in repository origin/branch3
Seen branch in repository origin/branch4
Seen branch in repository origin/branch5
Seen branch in repository origin/branch6
Seen branch in repository origin/branch7
Seen branch in repository origin/branch8
Seen branch in repository origin/branch9
Seen branch in repository origin/branch10
Seen branch in repository origin/branch11
Seen branch in repository origin/branch12
Seen branch in repository origin/branch13
Seen 13 remote branches
Obtained ci/jobs/Backend-Build-Multibranch/Jenkinsfile from d6d39ddab89bb77502c83f99c7f08f0b6eb03e77
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Still waiting to schedule task
Waiting for next available executor

Ответы [ 3 ]

1 голос
/ 26 марта 2020

Чтобы установить тайм-аут для соединения с агентом, вы можете определить agent { label 'docker' } для этапа вместо всего конвейера. На этом этапе вы можете создавать вложенные этапы для этапов, которые вы ранее определили на верхнем уровне, так что все они будут работать на узле "docker", когда он будет доступен.

pipeline {
    agent{ label 'master' }

    options {
        timeout(time: 45, unit: 'MINUTES')
    }    

    stages {
        stage('Connect Node') {
            agent { label 'docker' }

            stages {
                stage('Build') {
                    steps{
                        echo 'Hello'
                    }
                }
                // And so on...
            }
        }
    }
}
1 голос
/ 27 марта 2020

Вот модификации ответа { ссылка }:

pipeline {
   // 'agent none' prevents Jenkins from starting the node. 'agent' must be
   // defined in subsequent stages.
   agent none

    // Options are read and applied globally.
    options {
         timeout(time: 45, unit: 'MINUTES')
    }

    stages {
        // Node connection stage will time out as declared in the options block
        stage('Connect Node') {
            agent {
                label 'docker'
            }

            stages {
                // And so on...
            }
        }
    }
}
0 голосов
/ 26 марта 2020

Какие именно сообщения вы видите для ожидающего исполнителя? Может случиться так, что не будет никаких подчиненных, работающих с меткой 'docker', когда задание запускается и / или новый ведомый также не запускается (это может быть связано с подсчетом stati c slave для предела ограничения экземпляров AMI / ec2 или нет динамов c раб раскручивается)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...