Загрузить агент динамически в декларативном файле Jenkinsfile
Я хотел бы знать, можно ли динамически настроить глобального агента.
Мне нужно запустить мой конвейер в разных средах 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
}
}
Любая помощь будет оценена по достоинству.
Спасибо сенол
1 ответ
Проблема в том, что значения агента оцениваются перед запуском конвейера, а не перед запуском этапа. Это несколько нелогично, но вот мы здесь.
Вы можете "обмануть систему", запустив конвейер со сценариями перед декларативным, как указано в этом ответе.