Я использую Jenkins с декларативным конвейером для постоянного тестирования одного из моих проектов на Python.Я хотел бы обобщить свой Jenkinsfile
для тестирования моего проекта с несколькими версиями Python, возможно, параллельно.Допустим, мой текущий Jenkinsfile
выглядит следующим образом:
pipeline {
stages {
stage('Checkout') {
dir("src") {
steps {
checkout scm
}
}
}
stage('Install') {
sh """
python3.4 -m venv virtualenv
source virtualenv/bin/activate
python3.4 -m pip install src
"""
}
}
}
Я попытался параметризовать генерацию конвейера, переместив его в функцию, следующим образом:
def generatePipeline(version) {
pipeline {
stages {
stage('Checkout') {
dir("src") {
steps {
checkout scm
}
}
}
stage('Install') {
sh """
python${version} -m venv virtualenv
source virtualenv/bin/activate
python${version} -m pip install src
"""
}
}
}
}
generatePipeline("3.4")
Jenkinsне удается с сообщением java.lang.NoSuchMethodError: No such DSL method 'stages' found among steps
(следует огромный список) .
Я неудачно обработал множество других вещей (включая помещение generatePipeline
в общую библиотеку), но я нене очень понимаю, как работают декларативные конвейеры (или даже Groovy).Есть ли способ создать несколько похожих конвейеров без дублирования всего распространенного кода?