Агент загрузки динамически в декларативном Jenkinsfile - PullRequest
1 голос
/ 02 марта 2020

Я хотел бы знать, возможно ли динамическое конфигурирование глобального агента.

Мне нужно запустить свой конвейер в разных средах Jenkins, работающих на Kubernetes или виртуальных машинах.

Когда мне нужно запустить конвейер в виртуальных машинах, мне нужно использовать агент docker, пока он работает в Kubernetes, мне нужно использовать агент kubernetes.

Я пытался получить ссылку на агента и использовать эту ссылку, но она не работает.

Некоторые примеры моих попыток:

def myAgent = {
    return {
        kubernetes {
            containerTemplate {
                name 'maven-container'
                image 'maven:3.0.6'
                ttyEnabled true
                command 'cat'
            }
            defaultContainer 'maven-container'
        }
    }
}

pipeline {
  agent myAgent()
  //...
}

/////////////////

kube = {
    containerTemplate {
        name 'maven-container'
        image 'maven:3.0.6'
        ttyEnabled true
        command 'cat'
    }
    defaultContainer 'maven-container'
}

pipeline {

  agent {
    kubernetes kube
  }
}

Любая помощь будет оценена.

Спасибо Senol

1 Ответ

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

Проблема заключается в том, что значения агента оцениваются до того, как конвейер начнет работать, а не перед тем, как стадия будет запущена. Это несколько нелогично, но мы здесь.

Вы можете "обмануть систему", запустив конвейерный сценарий перед декларативным, как описано в этом ответе .

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