Мое закрытое конвейерное поведение по-разному ведет себя точно так же, как код в хранилище совместно используемой библиотеки.Почему?
Подробности:
Я пишу метод извлечения pipeline {}
в файл Vars, который может быть повторно использован несколькими заданиями.
Однако, чтобы протестировать вещи без необходимости выполнять каждую маленькую проверку синтаксиса, я сначала пытаюсь протестировать несколько встроенных вещей.Но все происходит по-другому ...
Это мой встроенный конвейер тестирования:
#!/usr/bin/env groovy
myPhpDelivery = { Map p = [:] ->
echo "myPhpDelivery called"
echo "${p}"
pipeline {
agent any
options {
buildDiscarder(logRotator(numToKeepStr: '3'))
}
environment {
APP_NAME = "${p.appName}"
}
stages {
stage("skip build?") {
steps {
script {
// skipRemainingStages = checkSkipci()
skipRemainingStages = false
echo "${p}"
}
}
}
}
}
}
myPhpDelivery ( appName: "test-job",
src: "src/",
test: [
test: "test"
]
)
Этот конвейер в файле phpDelivery.groovy
, расположенный как общий плагин, действительно работает.Тем не менее, здесь в строке, это не так.Дженкинс выдает следующие ошибки:
groovy.lang.MissingPropertyException: No such property: any for class: WorkflowScript
Поскольку он не понимает any
вызова agent
(и многое другое, если я переместу агента на сцену).
Я пропалчто-то с этим?Как будто отсутствует контекст, который подразумевается при использовании общего плагина.
Есть ли способ заставить это работать в режиме реального времени, поэтому я продолжаю свое тестирование (и, честно говоря, изучение Groovy).