У меня есть конвейер Jenkins для моей организации github, использующий общую библиотеку. Библиотека хорошо работает для обычной сборки при ручном запуске или фиксации события. Код библиотеки, как показано ниже:
vars/MyPipeline.groovy
call(body) {
def usercfg = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = usercfg
body()
if (env.BRANCH_NAME ==~ /^PR-\d+$/) {
pipeline {
agent any
tools "JDK8"
stages {
stage("build jar") {
....
}
}
}
} else {
pipeline {
agent any
tools "JDK8"
stages {
stage("Initialize") {
...
}
stage("Build Complete pipeline") {
...
}
}
}
}
}
И Jenkinsfile в моем репозитории:
@Library('MySharedLibrary') _
MyPipeline {
myconfig = [ build: true ]
}
Тело содержит некоторые индивидуальные конфигурации.
Когда происходит сборка без PR, она выполняется правильно, без проблем.
Когда происходит сборка PR, она переходит в первый раздел и выбрасывает «агента» не среди шагов.
java.lang.NoSuchMethodError: No such DSL method 'agent' found among steps
Я не могу вспомнить, работает ли этот PR-билдер, так как эта библиотека существует определенное время. И это не должно быть проблемой версии плагина, поскольку вы можете видеть, что основной конвейер работает правильно.